環境:最近的Ubuntu,非標準的軟件包都可以,只要它們不太特殊。有沒有一種簡單而強大的方法來在Bash中創建一個「單例」進程?
我有一個數據處理器bash腳本,從stdin
處理數據:
$ cat data | process_stdin.sh
我可以改變腳本。
我有一個遺留數據生產者系統(我無法更改)通過SSH登錄到計算機並調用腳本,管理它的數據。僞代碼:
[email protected] $ cat data | ssh [email protected] ./process_stdin.sh
遺留系統啓動./process_stdin.sh
每天無數次。
我想保持./process_stdin.sh
在processor
機器上無限期地運行,以擺脫進程啓動開銷。傳統生產者會調用某種包裝器,以某種方式將數據傳送到實際的處理器進程。
是否有一個強大的unix方式來做我想用最少的代碼?我不想更改./process_stdin.sh
(很多) - 完全重寫已經安排好了,但是,唉,還不夠快 - 而且我不能更改數據生產者。
我首先想到的是,您可能會遇到更困難的時間,以確保您的腳本每次循環輸入一個「乾淨」環境。您試圖避免的流程啓動會執行很多操作,並且可能會將腳本編寫爲假設啓動。我並不是說在你的情況下開銷可能會過大,但是我可以通過查看一個方法來包裝它並將數據傳入管道。 – bitfiddler
不確定是否有這種可能性,如果可以使腳本塊在管道輸入上運行,然後運行在一個無限循環中,然後發送它的好消息,並且您需要將文件發送到與腳本關聯的管道中,每次獲取數據,初始化應用程序並運行腳本主體。退出時,您可能會發送一個關鍵字以便離開主循環。 – aah134
unix方式正在編寫一個* init腳本*,並可能將其添加到某個運行級別。 BTW [UUOC](http://partmaps.org/era/unix/award.html)。 –