如何确定程序是否使用 nohup 运行?

如何确定程序是否使用 nohup 运行?

ps -ef | grep sleep命令的输出没有区别:

nohup sleep 60 &

sleep 60 &

我可以通过什么方式发现该程序正在运行nohup

答案1

  • 您需要知道要查看的进程的 pid。您可以使用pgrepjobs -l

    jobs -l
    [1]-  3730 Running    sleep 1000 &
    [2]+  3734 Running    nohup sleep 1000 &
    

    实际上,这可能已经告诉您答案了,除非您注销并再次登录(然后jobs -l不会显示任何内容)。

  • 看一下/proc/<pid>/fd。以 启动的进程nohup将列出nohup.out文件:

    mvp@linux:~$ ls -l /proc/3734/fd
    total 0
    l-wx------ 1 mvp mvp 64 Oct 29 02:32 0 -> /dev/null
    l-wx------ 1 mvp mvp 64 Oct 29 02:32 1 -> /home/mvp/nohup.out
    l-wx------ 1 mvp mvp 64 Oct 29 02:32 2 -> /home/mvp/nohup.out
    

    一开始没有nohup意愿:

    mvp@linux:~$ ls -l /proc/3730/fd
    total 0
    lrwx------ 1 mvp mvp 64 Oct 29 02:28 0 -> /dev/pts/1
    lrwx------ 1 mvp mvp 64 Oct 29 02:28 1 -> /dev/pts/1
    lrwx------ 1 mvp mvp 64 Oct 29 02:28 2 -> /dev/pts/1
    

相关内容