ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

管理进程与服务

管理进程与服务 本章重点进程静态/动态查看进程树进程前台后台切换、挂起、终止。Systemd 单元、systemctl全套操作服务开机自启配置。Target 运行级别临时、永久切换。at 一次性任务编辑、查询、删除。crontab 五段时间语法案例配置、常见排错。7.1 Linux 系统引导与进程基础7.1.1 Linux 系统引导完整流程下面用 ASCII 流程图展示从 BIOS/UEFI 到 GRUB2、内核、systemd 的完整引导流程并标注每一步的关键输出或失败点┌─────────────────────────────────────────────────────────────────────┐ │ Linux 系统引导完整流程 │ └─────────────────────────────────────────────────────────────────────┘ [1] 上电 │ ▼ ┌──────────────────────────────┐ │ POST 开机自检 │ │ BIOS/UEFI 检测 CPU/内存/硬盘 │ │ 关键输出硬件自检通过 │ │ 失败点硬件故障 → 主板蜂鸣报警 │ └──────────────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ MBR / ESP 分区引导 │ │ BIOS 模式读 MBR 主引导记录 │ │ UEFI 模式读 ESP EFI 分区 │ │ 关键输出找到引导程序 │ │ 失败点MBR 损坏 → 找不到启动设备│ └──────────────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ GRUB2 引导 │ │ 选择内核版本加载 vmlinuz │ │ 加载 initramfs 驱动镜像 │ │ 关键输出内核镜像加载完成 │ │ 失败点内核镜像缺失 → 引导失败 │ └──────────────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ 内核初始化 │ │ 识别硬件挂载根文件系统 / │ │ 关键输出根文件系统挂载成功 │ │ 失败点根分区损坏 → 内核 panic │ └──────────────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ systemd (PID1) 初始化 │ │ 根据 Target 启动各类系统服务 │ │ 关键输出登录界面出现 │ │ 失败点PID1 崩溃 → 系统崩溃 │ └──────────────────────────────┘ │ ▼ 登录界面个人理解机器上电到登录界面一整套流水线每一步失败都会导致开不了机。BIOS/UEFI→GRUB2→内核→systemd (PID1)。POST 开机自检BIOS/UEFI 检测 CPU、内存、硬盘硬件根据启动顺序移交控制权。硬件故障会主板蜂鸣报警。MBR / ESP 分区引导BIOS 模式读取硬盘 MBR 主引导记录交给 GRUB2 引导程序。MBR 损坏会报找不到启动设备。UEFI 模式读取 ESP EFI 系统分区加载 GRUB2支持大硬盘、安全启动。GRUB2 引导选择内核版本加载vmlinuz内核镜像、initramfs驱动镜像把权限交给 Linux 内核。内核初始化识别硬件挂载根文件系统/启动systemd。systemd (PID1) 初始化PID1 是所有进程的始祖进程不能 kill杀掉直接系统崩溃。根据 Target 目标启动各类系统服务最后给到登录界面。7.1.2 Systemd 核心体系与进程标识PID、PPIDPID进程唯一数字 ID操作进程靠 PID。PPID父进程 ID进程由父进程 fork 创建。孤儿进程父进程提前退出子进程会被 PID1 的 systemd 收养。Systemd Unit 单元systemd 把系统资源抽象成不同单元配置文件存放两处/usr/lib/systemd/system系统自带单元不要手动改/etc/systemd/system管理员自定义单元优先级更高表格单元类型后缀作用示例Service.service管理后台服务进程sshd.serviceSocket.socket进程间通信套接字sshd.socketMount.mount管理挂载点/home.mountTarget.target一组单元集合代表系统运行状态multi‑user.targetTimer.timer定时器单元替代 cronchronyd.timerTarget 和传统运行级别对应个人理解Target 就是 Systemd 新版 “运行级别”兼容老 SysVinit 数字级别。表格传统级别systemd target含义0poweroff.target关机1rescue.target单用户救援模式排错2/3/4multi‑user.target字符多用户服务器生产环境无图形5graphical.target图形桌面模式6reboot.target重启7.1.3 进程查看静态快照与动态监控ps静态快照某一瞬间进程状态不会自动刷新ps auxBSD 风格看用户、CPU、内存 PID经常搭配管道|grep 进程名ps -elfSystemV 风格会显示 PPID 父进程适合分析进程父子关系ps aux关键字段表格字段说明排错关注点USER哪个用户启动进程排查异常非法进程PID进程 IDkill 操作的标识%CPUCPU 占用百分比查 CPU 飙高进程%MEM内存占比内存泄漏RSS实际物理内存 KB真实占用内存TTY终端?代表后台守护进程无终端pts 远程 ssh 终端STAT进程状态R 运行S 休眠Z 僵尸进程Z 僵尸进程要处理COMMAND启动命令识别恶意伪装进程top动态实时监控Linux 任务管理器默认 3 秒刷新顶部五大块信息系统运行时间 负载、进程统计、CPU、内存 Mem、交换分区 Swap。load average1 分钟、5 分钟、15 分钟系统负载超过 CPU 核心数代表压力大。 wa 值高代表 IO 磁盘瓶颈swap 持续使用代表物理内存不够。top 交互快捷键表格按键功能P按 CPU 降序排序M按内存降序排序k输入 PID 杀死进程q退出 toppgrep专门过滤 PID不会产生多余 grep 进程pgrep -l sshd #‑l同时输出PID进程名 pgrep -l -U nginx #看nginx用户所有进程pstree进程树看父子关系pstree -p #显示PID最常用 pstree -ap root7.1.4 进程控制启动、挂起、终止前台 后台启动前台直接敲命令占用终端命令执行完才能输入下一条。后台命令末尾加放到后台跑释放终端适合耗时任务。输出[1] 23451 是任务号2345 是 PID。cp /dev/cdrom myiso.iso 任务调度只对当前终端内的后台任务生效CtrlZ把正在前台运行的进程挂起停止放后台暂停jobs -l查看本终端后台任务列表任务号、PID、状态bg 任务号挂起任务放到后台继续运行fg 任务号把后台任务切回前台⚠️注意jobs 只能看当前终端的任务换一个 ssh 终端看不到别的终端 jobs 任务。进程终止信号优先正常终止尽量少用‑9强制杀强制杀可能丢数据、损坏文件。表格方式说明CtrlC终止前台正在运行进程kill PID发送 15 SIGTERM正常结束程序自己清理资源退出kill -9 PIDSIGKILL 强制杀死程序没有机会收尾万不得已才用killall 进程名按进程名批量杀进程pkill -U 用户名杀掉该用户全部进程处理恶意账号7.2 Systemd 服务控制与启动过程优化服务 常驻后台的守护进程sshd、crondsystemctl 统一管理.service 单元。7.2.1 systemctl 核心操作.service后缀可以省略systemctl start sshd等价sshd.service表格命令功能使用场景systemctl start xxx启动服务服务没运行systemctl stop xxx停止服务关闭业务systemctl restart xxx重启服务先 stop 再 start服务会中断改配置后服务不支持 reload 时用systemctl reload xxx重载配置不中断进程支持 reload 的服务优先选生产少中断业务systemctl status xxx查看状态日志排错最重要看是否 active (running)看报错systemctl enable xxx设置开机自启核心业务systemctl disable xxx关闭开机自启不需要开机启动的服务systemctl is‑enabled xxx查询是否开机自启验证配置个人经验生产环境优先 reload只有 reload 无效才 restart避免业务断开。status 会打印报错排错第一看 status。7.2.2 Target 运行级别切换查看runlevel #看旧版运行级别数字 systemctl get‑default #查看开机默认target临时切换重启失效init 3 #切换字符界面 multi‑user.target systemctl isolate multi‑user.target init 5 #图形界面 graphical.target init 0 #关机 init 6 #重启永久切换重启生效systemctl set‑default multi‑user.target #服务器默认字符界面7.2.3 开机服务裁剪优化服务器很多服务默认开机启动很多业务用不上关掉可以节省内存加快开机。核心服务必须 enablesshd、crond、rsyslog、network、lvm2‑monitor非生产服务bluetooth 蓝牙、atd、kdump、vsftpdstopdisable 关掉。操作工具ntsysv字符交互式界面空格勾选开机启动适合批量修改。systemctl stop / disable命令行逐条操作。查看所有单元状态systemctl list‑units --typeservice #当前正在运行的服务 systemctl list‑unit‑files --typeservice #所有服务开机自启状态 enabled/disabled7.3 计划任务管理自动化运维两类at 一次性任务crontab 周期性重复任务。7.3.1 at一次性计划任务只执行一次依赖atd服务服务没启动任务不会跑。dnf install at systemctl start atd systemctl enable atd设置任务at 时间进入at交互输入多条命令CtrlD 提交任务at 15:30 2025‑05‑10 at df -h /tmp/disk.log at EOT #CtrlD管理 at 任务atq #查看未执行的at任务输出任务编号 atrm 1 #删除任务编号1的任务任务输出默认发送到用户系统邮箱/var/spool/mail/用户名建议重定向输出到日志文件。7.3.2 crontab周期性计划任务生产高频依赖 crond 服务系统默认开机启动。crond 监控配置文件修改任务不需要重启服务自动生效。crontab 配置分类用户级crontab -e编辑文件存放在/var/spool/cron/用户名每个用户独立任务。系统级/etc/crontab、/etc/cron.d/*管理员系统任务不建议普通用户直接修改。crontab 命令选项表格选项作用crontab -e编辑当前用户定时任务vi 编辑器crontab -l列出当前用户任务crontab -r清空当前用户全部定时任务crontab -u 用户名root 管理别的用户的任务五段时间语法分 时 日 月 周 命令* * * * * 绝对路径命令/脚本表格字段范围特殊符号分钟0‑59*任意‑连续,离散*/n间隔 n小时0‑23同上日期1‑31同上月份1‑12同上星期0‑70 和 7 都代表周日日期和星期是或关系满足其一就执行⚠️大坑crontab 环境变量和登录 shell 不一样命令必须写绝对路径尽量写脚本脚本内部全部使用绝对路径。示例#每天凌晨4点02分执行脚本 02 4 * * * /root/daily_backup.sh #每周六7点30分重启httpd 30 7 * * 6 /usr/bin/systemctl restart httpd #每5分钟执行 */5 * * * * /usr/bin/df -h /tmp/diskstat.log常见故障排错任务没执行命令用了相对路径用 which 拿到命令绝对路径填入crond 服务没启动输出没写日志误以为没跑把输出重定向日志 /xxx/cron.log 21。任务每分钟跑分钟字段写了*忘记指定具体分钟。脚本手动跑正常cron 跑失败脚本缺少环境变量脚本开头source /etc/profile加载系统环境。本章总结系统启动流程BIOS/UEFI → GRUB2 → 内核 → systemd (PID1 始祖进程)。PID1 不能 kill。进程查看ps 静态快照top 动态监控pgrep 查 PIDpstree 看进程树。进程前台后台后台运行CtrlZ挂起jobs/bg/fg任务调度kill 优先 15 正常终止‑9强制杀死慎用。systemctl 管理 service 服务start/stop/restart/reload/status/enable/disablereload 尽量代替 restart 减少业务中断。Target 替代传统运行级别临时切换systemctl isolate永久切换systemctl set‑default multi‑user.target服务器一般默认字符界面。开机服务裁剪关闭不需要的服务节约资源。at 一次性定时任务依赖 atdat编辑atq查看atrm删除。crontab 周期性任务五段时间语法命令必须绝对路径日期星期逻辑是或常见排错点。高频命令速查表进程管理表格命令功能ps aux静态查看全部进程ps -elf看 PPID 父进程top动态监控资源pgrep -l 进程名获取 PIDpstree -p进程树带 PIDjobs -l当前终端后台任务bg %1后台恢复挂起任务fg %1切回前台kill PID正常终止进程kill -9 PID强制杀死进程killall 进程名按名字批量杀进程systemctl 服务管理表格命令功能systemctl start/stop/restart/reload xxx服务启停重载systemctl status xxx查看服务状态排错systemctl enable/disable xxx开机自启开关systemctl get‑default查看默认 targetsystemctl set‑default multi‑user.target永久字符界面ntsysv交互式配置开机自启服务计划任务表格命令功能at HH:MM YYYY‑MM‑DD创建一次性任务CtrlD 提交atq查看 at 任务atrm 任务编号删除 at 任务crontab -e编辑用户周期任务crontab -l列出任务crontab -r清空当前用户全部 crontab 任务
返回列表