2012-12-03 35 views
0

我想在嘗試執行由xinetd啓動並作爲單個實例運行的遠程腳本時向用戶提供一些反饋。在單實例模式下使用xinetd運行shell腳本

通過UDP或TCP套接字,用戶將一些文本發送到xinetd正在偵聽的端口。如果該腳本尚未使用,則會執行該腳本,但如果沒有,我想向用戶提供一些反饋,如「對不起,此腳本已被使用,請稍後再試。」 這怎麼辦?謝謝你的幫助。

回答

1

在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這裏),否則在當時的條款踢在你的過程完成後。