在单实例模式下使用 xinetd 运行 shell 脚本



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

通过UDP或TCP套接字,用户将一些文本发送到xinetd正在侦听的端口。如果脚本尚未使用,则会执行,但如果没有,我想给用户一些反馈,例如"对不起,此脚本已在使用中。请稍后再试。怎么能做到这一点呢?感谢您的任何帮助。

在 Linux 上,您可以使用 util-linux 中的 flock 实用程序:

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

只要确保 () 中的子壳以成功结束(就像这里的 exit 0 一样),否则 then-子句会在您的流程完成后启动。

相关内容

  • 没有找到相关文章

最新更新