如何找到一个进程归哪个shell所有?
这是有用的,因为我有一个服务器有多个登录用户和一些长时间运行的进程,我想知道哪些用户可以强制注销而不停止他们的已启动作业。
ps
的输出报告了一个TTY,但即使在取消作业后也没有用,它的TTY保持不变。那么如何判断用户disown
/ nohup
是否已启动其启动过程?
答案 0 :(得分:3)
你所描述的意义上找不到“所有者外壳”,因为没有这样的东西。您可以找到父进程,它可能是一个shell;但是你无法知道shell是否放弃了这个工作,因为那个操作纯粹是shell内部的。
您应该做的是指导您的用户在Screen或Tmux内启动长时间运行的程序。这些程序有点复杂,但基本用途很简单。
screen
启动屏幕会话。screen -rd
。您可以围绕自动启动screen
的长时间运行流程创建一个包装器脚本。