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

The*_*SAS 3 linux shell process nohup

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

nohup sleep 60 &

sleep 60 &

我可以通过哪种方式发现该程序运行nohup

mvp*_*mvp 7

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

    jobs -l
    [1]-  3730 Running    sleep 1000 &
    [2]+  3734 Running    nohup sleep 1000 &
    
    Run Code Online (Sandbox Code Playgroud)

    实际上,这可能已经告诉您答案,除非您注销并再次登录(然后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
    
    Run Code Online (Sandbox Code Playgroud)

    并开始没有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
    
    Run Code Online (Sandbox Code Playgroud)