Bash
控制 bash 腳本並發,flock 繼承
我有一個 bash 部署腳本,它處理將更新的程式碼部署到 CentOS 上的 Tomcat 實例,但是,Chef 和 RunDeck 都可能呼叫該腳本,並且由於 Chef 定期執行,因此有可能發生衝突。
如何防止部署腳本同時執行兩次?
標準答案似乎是將部署邏輯包裝在
flock
.但是,由於部署重新啟動了不起作用的 tomcat——新的 java 程序繼承了鎖並阻止了任何進一步的部署腳本執行。
是否有其他方法可以防止並發執行或防止
flock
繼承?
flock
您可以在執行要解鎖的程序之前關閉維護鎖定的文件描述符。( flock -n 9 || exit 120 … (exec 9>&-; tomcat &) ) 9>/var/run/my.lock