[英]Running a bash script with an infinite while loop at startup and in the background on a Raspberry Pi
[英]PID of infinite loop run in background (&) in bash script
我有簡單的bash腳本
#!/bin/bash
(while true; do
true;
sleep 3
done) &
我如何將這個循環的pid分配給變量,以在將來終止進程? 我嘗試使用trap,但是循環具有自己的pid,因此我應該知道例如在SIGTERM之后在后台運行的pid可以殺死它。
可以從$!
提取啟動的后台進程的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 )
您可以將pid寫入文件。 然后在需要時讀取該文件。 例如,您可以執行以下操作:
#!/bin/bash
(bash -c 'echo $PPID' > /tmp/myprocess.pid
while true; do
true;
sleep 3
done) &
然后,如果您想終止后台進程,請運行以下命令:
kill $(</tmp/myprocess.pid)
另請參閱 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.