如何杀死在脚本中创建的后台进程

Nan*_*Hua 3 bash shell

假设我在 shell 中输入以下内容

(while true; do echo hahaha; sleep 1; done)&
Run Code Online (Sandbox Code Playgroud)

然后我知道我可以杀死它

fg; CTRL-C
Run Code Online (Sandbox Code Playgroud)

但是,如果上面的命令在一个脚本中,例如 tmp.sh 并且我正在运行该脚本,如何杀死它?

Mic*_*ent 7

(while true; do echo hahaha; sleep 1; done)&
RUNNING_PID=$!
kill ${RUNNING_PID}
Run Code Online (Sandbox Code Playgroud)

$! 将获取正在运行的进程的 PID,以便您可以随心所欲地处理它

  • 他要求将所有内容都放在脚本中!您应该将 pid 保存在一个文件中。脚本的执行会在后台产生一个新的 bash 进程(当前 bash 的子进程)。因此,在后台 bash 进程中执行的每个变量都无法通过会话领导者 bash 访问。 (2认同)