最近服务器上部署的 SS 偶尔会连不上,需要重启服务才能恢复,每次也只能维持几个小时左右,就想着能否让服务器每隔几个小时自动把服务重启一下。搜索了一下,就找到了 crontab 这个命令。

Crontab 介绍

Crontab 是 Linux 自带的、用于定期执行周期性任务的命令。系统也用该命令来执行一些定期备份、清理的工作。个人当然也可以用来执行一些定期的任务。

基本用法

命令格式:crontab [ -u user ] { -l | -r | -e }

  • -l 列出当前用户下面的定时任务表
  • -e 编辑时程表
  • -r 删除时程表

时程表格式

f1 f2 f3 f4 f5 program
  • f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
  • 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

定时任务脚本

这里找到了一个定时任务脚本,可以很方便的用来做定时监控。
需要用 root 用户权限执行:

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-crond.sh
chmod +x shadowsocks-crond.sh

然后编辑 /etc/crontab 文件,在末尾追加如下文本

*/5 * * * * root bash /root/shadowsocks-crond.sh

这个命令表示每 5 分钟执行一遍脚本,如果 Shadowsocks 服务不存在,就会重启服务。可以通过下面这个命令来查看日志:

cat /var/log/shadowsocks-crond.log

最后,可以使用下面的命令对 crond 进行控制

/etc/init.d/crond start //启动服务
/etc/init.d/crond stop //关闭服务
/etc/init.d/crond restart //重启服务
/etc/init.d/crond reload //重新载入配置