linux - 如何获取进程 ID 以杀死 nohup 进程?

我正在服务器上运行一个 nohup 进程。当我试图杀死它时,我的腻子控制台会关闭。

这是我尝试查找进程 ID 的方式:

ps -ef |grep nohup 

这是杀死的命令

 kill -9 1787 787

最佳答案

当使用 nohup 并将任务置于后台时,后台运算符 (&) 将在命令提示符处为您提供 PID。如果您的计划是手动管理进程,您可以保存该 PID 并在需要时使用它来杀死进程,通过 kill PIDkill -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/

相关文章:

python - 输入()错误 - NameError : name '...' is not de

python - 为什么需要在 Python 方法中显式使用 "self"参数?

linux - 更改用户默认主目录的命令

linux - 第一次如何配置postgresql?

python - Google 大量使用 Python

linux - 如何将命令行参数传递给 unix/linux 系统上正在运行的进程?

linux - 如何规范化 Bash 中的文件路径?

python - 在python中将 float 转换为整数的最安全方法?

python - Pandas :从多级列索引中删除一个级别?

python - 如何在 Python 中将字符串转换为 double 值?