在 Bash 执行时将 PID 写入文件

在 Bash 执行时将 PID 写入文件

我正在通过 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

相关内容