如何获取在后台运行的进程的 pid?

Nis*_*ant 1 shell background-process

我正在使用这种方法在后台运行一个进程。

"$@" &>/dev/null &disown
Run Code Online (Sandbox Code Playgroud)

我如何实现以下目标 -

  1. 获取背景 pid
  2. 返回它以便它可以在另一个脚本中使用?

Kus*_*nda 5

最近启动的后台作业的进程 ID 可作为$!.

例如,您可以将其输出到文件或标准输出:

"$@" &>/dev/null &
disown

printf '%d\n' "$!" >background.pid
Run Code Online (Sandbox Code Playgroud)

另一个脚本可能会

./first-script.sh some command line

thepid=$( <background.pid )
Run Code Online (Sandbox Code Playgroud)

或者,如果第一个脚本只是将进程 ID 输出到标准输出,则第二个脚本可以

thepid=$( ./first-script.sh some command line )
Run Code Online (Sandbox Code Playgroud)