查找一个进程是如何启动的
- 2026-04-09 21:09:00
- 丁国栋
- 原创 12
Debian Linux 12 (bookworm) 有一个进程kill -9后,过一会儿仍然会启动,如何排查呢?
在这种 Systemd 主导的系统中,进程“杀不死”通常不是进程本身在复活,而是它的守护者(Supervisor)在自动重启它。单纯的 kill -9 只是“治标”,需要找到并处理背后的监管机制。
先找到该进程的 PPID(父进程ID) 和所属的 CGroup。
# 查看进程的 cgroup 信息
cat /proc/$(pgrep -f your_service)/cgroup
- 如果输出中包含
name=systemd或者system.slice路径,说明是systemd托管。
例如:
root@debian12:~$ cat /proc/986/cgroup
0::/system.slice/nginx.service
root@debian12:~$
说明是 986 这个进程ID是由 systemd 的 nginx.service 管理的。
4945 这个进程是容器进程。
root@debian12:~$ cat /proc/4945/cgroup
0::/system.slice/containerd.service
root@debian12:~$
说明是 4945 这个进程ID是由 systemd 的 containerd.service 管理的。
root@debian12:~$ cat /proc/5044/cgroup
0::/system.slice/docker-9c33abf6b5c7fca6320284367c719fe31b56fff61bf9d912481f247a35a5732d.scope
root@debian12:~$
5044 这个进程是容器内的一个进程。
- 如果输出中包含
/system.slice/cron.service说明是cron守护进程(Systemd 管理的)。
例如:
root@debian12:~$ cat /proc/7204/cgroup
0::/system.slice/cron.service
root@debian12:~$
说明 7204 进程是 cron 计划任务创建的。
--
发表评论