在 bash 脚本的后台 (&) 中无限循环运行的 PID

Sev*_*ver 2 linux bash operating-system

我有简单的 bash 脚本

#!/bin/bash

(while true; do
        true;
        sleep 3
done) &
Run Code Online (Sandbox Code Playgroud)

如何将这个循环的 pid 分配给变量,以便将来终止进程?我尝试陷阱,但循环有自己的 pid 所以我应该知道在后台运行的循环的 pid 以杀死它,例如在 SIGTERM 之后。

Ini*_*ian 6

可以从该$!变量中提取启动的后台进程的 PID 。

$ (while true; do
>         true;
>         sleep 3
> done) &
[1] 26159

$ bgPID=$!; echo "$bgPID"         # <---- To store it in a bash variable.
26159

$ kill "$bgPID"
[1]+  Terminated              ( while true; do
    true; sleep 3;
done )
Run Code Online (Sandbox Code Playgroud)