0
我想在嘗試執行由xinetd啓動並作爲單個實例運行的遠程腳本時向用戶提供一些反饋。在單實例模式下使用xinetd運行shell腳本
通過UDP或TCP套接字,用戶將一些文本發送到xinetd正在偵聽的端口。如果該腳本尚未使用,則會執行該腳本,但如果沒有,我想向用戶提供一些反饋,如「對不起,此腳本已被使用,請稍後再試。」 這怎麼辦?謝謝你的幫助。
我想在嘗試執行由xinetd啓動並作爲單個實例運行的遠程腳本時向用戶提供一些反饋。在單實例模式下使用xinetd運行shell腳本
通過UDP或TCP套接字,用戶將一些文本發送到xinetd正在偵聽的端口。如果該腳本尚未使用,則會執行該腳本,但如果沒有,我想向用戶提供一些反饋,如「對不起,此腳本已被使用,請稍後再試。」 這怎麼辦?謝謝你的幫助。
在Linux上,你可以使用flock
實用工具的util-linux的:
if ! (flock -n 42 || exit 1
# Things to do in the single instance
echo "Processing..."
sleep 60
echo "Done"
exit 0
) 42> /var/tmp/mylockfile # any unique filename
then
# Things to do when the script is in use
echo "Sorry, the service is in use."
fi
只要確保在()子shell成功結束(像exit 0
這裏),否則在當時的條款踢在你的過程完成後。