当使用nohup并将任务放在后台时,后台运算符(&)将在命令提示符处给出PID。如果您的计划是手动管理进程,您可以保存该PID,并在以后使用它杀死进程,如果需要,通过kill PID或kill -9 PID(如果你需要强制kill)。或者,以后可以通过ps -ef |找到PID grep“命令名称”,并从中找到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文件(来自标准输出)。有关使用shell处理I / O重定向的更多详细信息,请参阅I/O Redirection。
如果命令定期发送输出,您可以偶尔使用tail my.log检查输出,或者如果要跟踪它“live”,您可以使用tail -f my.log。最后,如果你需要杀死进程,你可以通过:
kill -9 `cat save_pid.txt`