我正在服务器上运行一个 nohup 进程。当我试图杀死它时,我的腻子控制台会关闭。
这是我尝试查找进程 ID 的方式:
ps -ef |grep nohup
这是杀死的命令
kill -9 1787 787
最佳答案
当使用 nohup
并将任务置于后台时,后台运算符 (&
) 将在命令提示符处为您提供 PID。如果您的计划是手动管理进程,您可以保存该 PID 并在需要时使用它来杀死进程,通过 kill PID
或 kill -9 PID
(如果你需要强制杀死)。或者,您可以稍后通过 ps -ef | 找到 PID。 grep "command name"
并从那里找到 PID。请注意,nohup
关键字/命令本身不会出现在相关命令的 ps
输出中。
如果你使用脚本,你可以在脚本中做这样的事情:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
这将运行 my_command
将所有输出保存到 my.log
(在脚本中,$!
表示最后执行的进程的 PID )。 2
是标准错误 (stderr
) 的文件描述符,2>&1
告诉 shell 将标准错误输出路由到标准输出 (文件描述符 1
)。它需要 &1
以便 shell 知道它是该上下文中的文件描述符,而不仅仅是一个名为 1
的文件。 2>&1
用于将通常写入标准错误的任何错误消息捕获到我们的 my.log
文件(来自标准输出)中。见 I/O Redirection有关使用 shell 处理 I/O 重定向的更多详细信息。
如果命令定期发送输出,您可以偶尔使用 tail my.log
检查输出,或者如果您想“实时”跟踪它,您可以使用 tail - f my.log
。最后,如果你需要终止进程,你可以通过:
kill -9 `cat save_pid.txt`
rm save_pid.txt
https://stackoverflow.com/questions/17385794/