- 使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行。
- crontab的一些命令
- crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。
- crontab –l : 显示 crontab 文件。 无内容会提示为 no crontab for root
- crontab -r : 删除 crontab 文件。
- crontab -ir : 删除 crontab 文件前提醒用户。
- crontab 文件的格式
minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
-
在 凌晨00:01运行
1 0 * * * /home/linrui/XXXX.sh -
每个工作日23:59都进行备份作业
59 11 * * 1,2,3,4,5 /home/linrui/XXXX.sh
或者如下写法:
59 11 * * 1-5 /home/linrui/XXXX.sh -
每分钟运行一次命令
*/1 * * * * /home/linrui/XXXX.sh -
每个月的1号 14:10 运行
10 14 1 * * /home/linrui/XXXX.sh
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
当第1列 为 * 时表示每分钟都要执行 program,第2列为 * 时表示每小时都要执行程式,其余类推
当第1列为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,第2列为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当第1列为 */n 时表示每 n 分钟个时间间隔执行一次,第2列 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当第1列为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,第2列 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推
-
编辑配置的方式
可以通过-e进入crontab的配置文件,加入0 0 * * * /home/linrui/XXXXXXXX.sh //这将会在每天凌晨运行 指定的.sh文件
或者30 21 * * * /usr/local/etc/rc.d/lighttpd restart //每晚的21:30重启lighttpd
-
实例
实现每天凌晨4:00重启ss
重启脚本 restartSS.sh
#!/bin/sh
#restart ss server
sspid=`ps -ef | grep "shadowsocks" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo "ss server pid is : $sspid"
if [ "$sspid" == "" ] #判定sspid为空注意[]中的空格,严格
then
echo "ss server not alive!"
else
kill -9 $sspid
echo "pid $sspid is killing..."
sleep 5
fi
echo "now restarting ss server..."
ssserver -c /etc/shadowsocks.json -d start
echo "done!"
加入一条定时配置
30 4 * * * /usr/ssConfig/restartSS.sh //如果慢12个小时就是 30 16 .....了
最后重启crontab,使重启功能生效
service crond restart