我想在用户尝试执行由xinetd启动并作为单个实例运行的远程脚本时向用户提供一些反馈。
通过UDP或TCP套接字,用户将一些文本发送到xinetd正在侦听的端口。如果脚本尚未使用,则会执行该脚本,但如果不是,我想向用户提供一些反馈,例如“抱歉,此脚本已在使用中。稍后再试。” 怎么可以这样做?谢谢你的帮助。
答案 0 :(得分:1)
在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
只需确保()中的子shell以成功结束(例如此处使用exit 0
),否则then-clause将在您的进程完成后启动。