我正在通过 cron 执行一个 bash 脚本。我想将脚本的进程 ID (PID) 写入文件/tmp/
以供参考,以防我稍后需要终止它(此脚本可能需要 6 - 10 小时才能完成)。
有可能做这样的事情吗:
#!/bin/sh
echo ${PID} > /tmp/backup_pid
...
rest of the script
每次脚本执行tar
或时rsync
,它们都会作为独立进程启动,这就是我喜欢这个 PID 功能的原因。
这个答案(https://superuser.com/a/238533/314696) 建议使用eval
,但我被教导说这eval
是我谢谢。
答案1
shell 变量$$
包含当前正在运行的脚本的 PID。你可以像这样使用它:
echo $$ >/tmp/backup_pid
答案2
如果你想获取PID:
pgrep Process ###Write process name instead of "Process"###
如果您想从 GNOME 终端获取 PID 并终止进程:
pid=$(pgrep Process) && kill -9 $pid
如果你想用 shell 脚本结束任务:
pdi=$pgrep Process)
kill -9 $pid
或者将 PID 写入文件:
pgrep Process > FileName.Format