让其他用户停止/重启简单的bash守护进程 – 使用信号还是什么?
我有一个Web服务器,我运行一些慢启动程序作为守护进程.当我重新编译它们或切换到它们的另一个安装时,这些有时需要快速重启(或停止).
灵感来自http://mywiki.wooledge.org/ProcessManagement,我正在写一个剧本 #!/bin/sh while :; do ./myprogram lotsadata.xml echo "Restarting server..." 1>&2 done 保持“守护进程”运行.因为我有时需要阻止它,或者只是 $./daemonise.sh & DPID=$! $screen -d 然后也许我重新编译myprogram,将它安装到一个新的路径,然后开始 $screen -r $kill $DPID $screen -d 当我是唯一的维护者时,这很好用,但现在我想让它 让另一个用户的“最佳实践”方式是什么? 我想过共享屏幕会话,但这听起来很丑陋 #!/bin/bash DPID= trap './daemonise.sh & DPID=$!' USR1 trap 'kill $DPID' USR2 EXIT # Ensure trapper wrapper doesn't exit: while :; do sleep 10000 & wait $! done 现在,如果另一个用户需要停止守护进程而我不能这样做, 有更好的解决方案吗?这有明显的问题吗? (在阅读了Greg的Bash Wiki之后,我想避免任何涉及pgrep或PID文件的解决方案……) 解决方法
我推荐一个基于PID的init脚本.任何拥有该脚本特权的sudo的人都可以启动和停止服务器进程.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |