Shell

在 .xinitrc 中啟動新程序組

  • May 28, 2016

我有一個狀態欄(檸檬欄),我通過管道將幾個腳本的輸出(時間、電池、音量等)傳輸到該狀態欄。這些腳本和狀態欄本身都在一個 bash 腳本中啟動statusbar。當statusbar程序被殺死時,它會通過嘗試殺死其子程序來清理自己,如下所示:

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT

如果我在終端中呼叫,這一切都很好statusbar,然後用 SIGTERM 信號退出它。

但是,當我像這樣statusbar在我的.xinitrc文件中開始時:statusbar &腳本statusbar無法再自行清理。這樣做的原因是它與.xinitrc腳本在同一個程序組中,以及在那裡啟動的所有其他程序。我通過遵循這個答案發現了這一點。

問題是:我可以將statusbar程序及其所有子程序放在他們自己的程序組中.xinitrc,以便它可以很好地清理自己嗎?或者,也許有一種不同的方式可以殺死所有的孩子statusbar

PS:我意識到想要乾淨地殺死狀態欄並不是很常見。但是,我想這樣做,以便我可以輕鬆地重新啟動它並最終動態更改我的顏色主題,而無需退出 X。

您可以嘗試使用setsidutil-linux包的一部分)在.xinitrc新會話中啟動腳本:

setsid statusbar

但它還會收到你的信號嗎?

引用自:https://unix.stackexchange.com/questions/286055