定时执行的代理脚本

许多用户反馈,Shadowsocks 在运行一段时间后,进程会意外消失。这种情况通常是由于系统将其强制终止所致。导致这一问题的原因可能包括 VPS 的配置、Shadowsocks 本身的缺陷,例如内存不足或多端口使用导致的内存占用过高等。
为了解决这个问题,我编写了一个用于检查 Shadowsocks 进程的脚本,能够在发现进程不存在时自动重启。
请以 root 用户身份登录,并执行以下命令:
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-crond.sh chmod +x shadowsocks-crond.sh 此命令将下载脚本 shadowsocks-crond.sh,并为其赋予执行权限。
接下来,将该脚本添加到 Linux 的定时任务 cron 中即可。cron 是 Linux 系统下用于定时执行任务的工具,能够在无需人工干预的情况下自动运行作业。请注意,Cron 是 Linux 的内置服务,通常情况下不会自动启动,可以通过以下命令启动、停止或重启该服务:
/etc/init.d/crond start //启动服务
/etc/init.d/crond stop //关闭服务
/etc/init.d/crond restart //重启服务
/etc/init.d/crond reload //重新载入配置
配置 /etc/crontab 文件以启用 cron
默认情况下,该文件内容如下:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 只需在文件末尾添加以下一行:
*/5 * * * * root bash /root/shadowsocks-crond.sh 完成后保存并退出。这条配置指示系统每 5 分钟由 root 用户执行一次脚本 /root/shadowsocks-crond.sh,注意路径需写全。
通过这种设置,系统将每 5 分钟检查一次 Shadowsocks 进程的存在性,若进程缺失,则会自动重启。同时,脚本每次运行时会记录日志,日志的完整路径为:
/var/log/shadowsocks-crond.log 可以定期查看该日志文件,以确认 Shadowsocks 进程是否频繁消失。如果确实存在此问题,可能需要进一步排查深层次的原因。
更新于 2016 年 12 月 05 日:
- 已针对新发布的四合一 Shadowsocks 一键安装脚本及之前的单版本进行了相应调整。
