Linux 服务进程的生命周期可以分为以下几个关键阶段,结合系统初始化、进程管理和服务管理工具(如 systemd/sysvinit)的机制进行说明:
systemctl start <service>
或 /etc/init.d/<service> start
)。fork()
创建子进程,子进程通过 exec()
加载服务程序。.service
)中的 Requires
、After
等配置,按顺序启动依赖服务。daemon()
或 fork()
脱离终端)。/var/run/<service>.pid
)管理进程。exit()
。SIGTERM
(优雅终止,允许清理资源)。SIGKILL
(强制终止,systemctl kill -9
)。ExecStop
指令执行自定义清理脚本。Restart=
选项(如 on-failure
)在服务异常退出时重启。systemctl status <service>
查看状态(active/failed)。ps aux | grep <service>
或 pid 文件检查存活。journalctl -u <service>
)。/var/log/<service>.log
。SIGHUP
:重新加载配置(如 nginx -s reload
)。SIGUSR1/2
:自定义行为(如日志轮转)。/etc/systemd/system/<service>.service
systemctl start/stop/restart/enable <service>
/etc/init.d/<service>
service <service> start
ps aux | grep <service>
pstree -p
查看进程树。启动 → 运行 → 终止
↑ ↓
└── 重启 ←─┘
journalctl -xe
)。systemctl list-dependencies <service>
)。top
或 htop
监控内存/CPU。ulimit -n
)。ps aux | grep 'Z'
查找,终止父进程。通过理解服务进程的生命周期,可以更有效地管理服务的启动、监控和故障排查。