有时服务器端运行的进程会因为莫名的原因被中断,ShadowSocks如果出现这种情况就比较耽误事,本文提供一种简单的方法,定时检查进程,若发现ShadowSocks进程中断了,就将其重新启动。
第一步,准备脚本程序
vim checkss.sh
,写入以下内容,如果你的ShadowSocks配置文件的放置位置不同,可以根据实际情况修改:
#! /bin/sh
cnt=`ps aux | grep shadowsocks | wc -l`
if [ $cnt -eq 1 ];then
/usr/bin/python3 /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
echo "restart service at `date`" >> sslog.txt
else
echo "ss service on"
fi
第二步,添加可执行权限
chmod a+x checkss.sh
第三步,添加定时任务
编辑cron任务crontab -e
,添加下面的行,其中checkss.sh的位置、间隔时间根据你的实际情况修改,*/3表示每三分钟运行一次:
*/3 * * * * /root/app/checkss.sh
第四步,检查确认,可参考下面的流程:
# 确认进程运行中 root@topvps:~/app# ps aux | grep sss root 28131 1.4 3.8 84116 38748 ? Ss 20:16 1:36 /usr/bin/python3 /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start root 29889 0.0 0.0 14516 972 pts/3 S+ 22:04 0:00 grep --color=auto sss # 确认脚本执行正常 root@topvps:~/app# ./checkss.sh ss service on # 手动关闭ss进程 root@topvps:~/app# /usr/bin/python3 /usr/local/bin/ssserver -c /etc/shadowsocks.json -d stop INFO: loading config from /etc/shadowsocks.json stopped # 脚本发现ss进程终止,可以将其重新启动 root@topvps:~/app# ./checkss.sh INFO: loading config from /etc/shadowsocks.json 2018-09-06 22:04:41 INFO loading libcrypto from libcrypto.so.1.1 started # 日志记录正常 root@topvps:~/app# cat sslog.txt restart service at Thu Sep 6 22:04:41 CST 2018 # 定时任务正常 root@topvps:~/app# crontab -l # m h dom mon dow command 03 * * * * /root/app/checkss.sh
-- EOF --
本文最后修改于6年前 (2018-09-11)