要查找使用 nohup
命令启动的进程的进程 ID(PID),可以使用以下几种方法:
使用 ps
命令结合 grep
:
你可以使用 ps
命令来列出所有正在运行的进程,并通过 grep
过滤出包含特定命令或关键字的进程。例如,如果你知道你的 nohup
命令启动的进程名或部分命令行,可以这样做:
ps aux | grep 'nohup'
或者更具体地,如果你记得启动命令的一部分,比如 myapp
:
ps aux | grep 'myapp'
这将显示所有包含 nohup
或 myapp
的进程。请注意,grep
命令本身也会出现在结果中,你可以通过添加 grep -v grep
来排除它:
ps aux | grep 'myapp' | grep -v grep
使用 pgrep
命令:
pgrep
命令可以直接搜索进程名称或命令行参数。例如:
pgrep -af 'myapp'
-a
选项会显示进程名称,-f
选项会匹配整个命令行。
使用 pidof
命令:
如果你知道进程的名称,可以使用 pidof
命令来查找进程 ID:
pidof myapp
这将返回所有名为 myapp
的进程的 PID。
查看 nohup.out
文件:
当你使用 nohup
命令启动一个进程时,通常会将输出重定向到一个名为 nohup.out
的文件中。虽然这个文件不直接包含 PID,但你可以在启动命令中添加一些额外的输出,以便记录 PID。例如:
nohup myapp > myapp.log 2>&1 &
echo $! >> myapp.log
这里 $!
是一个特殊的 shell 变量,表示最后执行的后台进程的 PID。这样,你就可以在 myapp.log
文件中找到 PID。
请记住,如果你的进程是在后台运行的,并且你没有将其输出重定向到文件,那么你可能需要使用上述方法之一来查找它的 PID。