我想在用户尝试执行由 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-子句会在您的流程完成后启动。