Shell
在 .xinitrc 中啟動新程序組
我有一個狀態欄(檸檬欄),我通過管道將幾個腳本的輸出(時間、電池、音量等)傳輸到該狀態欄。這些腳本和狀態欄本身都在一個 bash 腳本中啟動
statusbar
。當statusbar
程序被殺死時,它會通過嘗試殺死其子程序來清理自己,如下所示:trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
如果我在終端中呼叫,這一切都很好
statusbar
,然後用 SIGTERM 信號退出它。但是,當我像這樣
statusbar
在我的.xinitrc
文件中開始時:statusbar &
腳本statusbar
無法再自行清理。這樣做的原因是它與.xinitrc
腳本在同一個程序組中,以及在那裡啟動的所有其他程序。我通過遵循這個答案發現了這一點。問題是:我可以將
statusbar
程序及其所有子程序放在他們自己的程序組中.xinitrc
,以便它可以很好地清理自己嗎?或者,也許有一種不同的方式可以殺死所有的孩子statusbar
?PS:我意識到想要乾淨地殺死狀態欄並不是很常見。但是,我想這樣做,以便我可以輕鬆地重新啟動它並最終動態更改我的顏色主題,而無需退出 X。
您可以嘗試使用
setsid
(util-linux
包的一部分)在.xinitrc
新會話中啟動腳本:setsid statusbar
但它還會收到你的信號嗎?