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>.servicesystemctl start/stop/restart/enable <service>/etc/init.d/<service>service <service> startps aux | grep <service>pstree -p 查看进程树。启动 → 运行 → 终止
↑ ↓
└── 重启 ←─┘
journalctl -xe)。systemctl list-dependencies <service>)。top 或 htop 监控内存/CPU。ulimit -n)。ps aux | grep 'Z' 查找,终止父进程。通过理解服务进程的生命周期,可以更有效地管理服务的启动、监控和故障排查。