&
我在 Linux 中使用和启动了一个程序disown
。
我希望查看它是否仍在运行,并可能终止它。
我使用如下命令启动该过程:
(env)bash-4.2$ python manage.py update_rollups &
[1] 29144
(env)bash-4.2$ disown
我无法再使用 找到它ps aux
,也无法根据 pid 将其杀死29144
。
我想知道该进程是否仍在运行(在init
? 下)。
我希望你能帮忙!
答案1
简单来说
使用&
并且disown
你不改变PID [1]进程。
如果您在输出中没有看到它ps -p <YOURPID>
,则表示它不再运行。
您可以过度检查加上额外的echo $?
[2]ps
在(或)命令后kill
,检查程序是否以不同于 的退出代码退出0
(通常是1
)。
理解您的命令。
背景:当您使用 final 启动命令时,
&
您会在后台发送它。
这意味着:- 它存在于您的 shell 的作业列表中(在您的示例中是数字
[1]
,您可以将其引用为%1
;(尝试命令jobs
)。 fg
您可以使用和将其置于前台和后台bg
。它还是)“拥有”通过(链接到父级)shell:如果 shell 收到信号
SIGHUP
,它也会SIGHUP
向进程发送信号。$ sleep 1h & [1] 10795 $ jobs [1]+ running sleep 1h & $ ps -l -p 10795 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 10795 8380 0 80 0 - 3107 hrtime pts/57 00:00:00 sleep
- 它存在于您的 shell 的作业列表中(在您的示例中是数字
放弃:使用该命令
disown
您可以从 shell 的作业列表中删除该作业,但不会更改其 PID。$ disown $ jobs # <---- No jobs $ ps -l -p 10795 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 10795 8380 0 80 0 - 3107 hrtime pts/57 00:00:00
注意相同的 PPID(该 shell 仍然存在)。
现在我们终止该 shell。$ kill 8380 # Here we kill the shell $ ps -l -p 10795 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 10795 5339 0 80 0 - 3107 hrtime pts/57 00:00:00 sleep
还有另一个
PPID
,即5339
,再次调用ps
,ps -p 5339
你会发现它是一个init
实例:$ ps -p 5339 PID TTY TIME CMD 5339 ? 00:02:20 init
pstree
:一种更快捷的方法。
您可以pstree
更快地看到。
之前disown
和杀死 bash命令:
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)
之后disown
杀死 bash:
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)
笔记:当然,您情况下的所有 PID 都会有所不同......
答案2
如果不在 中ps auxf
,则表示该进程未在运行。如果运行后kill 29144
得到“没有这样的进程”,则也表示该进程未在运行。
答案3
每个进程在/proc
文件系统中都有一个包含它的文件夹pid
。如果该文件夹不存在,则表示该进程未运行。
例如
/proc/29144/
您可以查看进程commandline
cat /proc/29144/cmdline
示例输出:
/usr/sbin/smbd
或者检查进程文件状态
stat /proc/29144/exe
示例输出:
File: /proc/29144/exe -> /usr/sbin/smbd
Size: 0 Blocks: 0 IO Block: 1024 symbolic link
Device: 3h/3d Inode: 78497 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-04-07 12:18:01.719011505 +0200
Modify: 2017-04-07 12:18:01.369010535 +0200
Change: 2017-04-07 12:18:01.369010535 +0200
Birth: -