最近寫了個工具, 需要在背景靜默執行, 即使關閉了目前linux指令行視窗, 也不會有影響, 我們來戲說
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5CZ19mcw9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJmLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)
1. 寫main.cpp, 生成可執行的二進制檔案main (要注意權限, 確定可執行)
2. 寫腳本run.sh (要注意權限, 確定可執行)
#!/bin/bash
allfile=`ls test_*`
for onefile in $allfile
do
/usr/local/services/main /usr/local/services/$onefile &
done
3. 執行腳本:
/usr/local/services/run.sh &
然後, 即使你關閉目前視窗, 背景的程式也不會停, 你可以爽爽地去睡覺了。
這裡我們要注意以下幾點:
a. 兩個&都不能丢掉, 否則就不能在背景靜默執行
b. 腳本中的那個循環, 會循環開啟多個程序, 這些程序會并發執行, 并不是說要等前一個程序執行完後, 才執行下一個程序。 你可以在for循環中加log試一下, 這些log是立即循環輸出的。 這樣就很好了, 多程序在背景并發地靜默執行, 太爽了。
c. 如果要殺死所有的背景靜默執行的程序, 執行killall main指令就可以了, 爽。
d. test_*檔案是怎麼來的呢? 請參考我介紹過的linux split指令
有興趣的朋友, 也可以看到我之前介紹過的nohup