簡體   English   中英

用於在Linux斷電時停止應用程序的Shell腳本

[英]Shell script to stop an application at power down in linux

我在c中用愛迪生設備寫了一個姿勢感知代碼。 我在加電時成功調用了應用程序。 但我需要一個shell腳本來關閉此應用程序。

我試過kill {pid}命令行操作。 即使我殺了命令,在斷電設備期間需要額外的5分鍾來停止該應用程序。 我在這里錯過了什么..

您的應用程序應該顯式處理一些signal(7) -s,特別是在關閉時發送的SIGTERM (由某個系統程序執行kill(2) )。

發送SIGKILL (例如kill -9kill -KILL )是不安全的(特別是服務器維護磁盤上的某些狀態,例如數據庫服務器,還有任何具有某種持久狀態,配置或日志的軟件......)因為被殺死的程序沒有機會清理它的混亂,刷新它的緩沖區,並在磁盤上保存一致的狀態。

因此,強大的策略是kill -TERM ,然后幾秒鍾后kill -QUIT ,幾秒鍾后kill -KILL 因此,健壯的應用程序應該處理SIGTERMSIGQUIT (但不能捕獲SIGKILL )......您可能會處理SIGPWR (但不是每個系統都有它或正確管理它;某些UPS硬件和軟件都可以)。

也許你的系統使用systemd ,你可以利用它(例如D-bus的東西)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM