0

当用户尝试执行由 xinetd 启动并作为单个实例运行的远程脚本时,我想给他一些反馈。

通过 UDP 或 TCP 套接字,用户将一些文本发送到 xinetd 正在侦听的端口。如果该脚本尚未使用,则会执行它,但如果没有,我想给用户一些反馈,例如“抱歉,此脚本已在使用。请稍后再试。” 怎么可能做到这一点?谢谢你的帮助。

4

1 回答 1

1

在 Linux 上,您可以使用flockutil-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这里一样),否则 then 子句会在您的过程完成后启动。

于 2012-12-27T23:29:33.600 回答