在Ubuntu下的crontab命令处理定时任务
服务相关:
sudo service cron start
sudo service cron stop
sudo service cron restart
命令(参数):
crontab [-u user] file: [-u user] 是指设定指定用户的时程表, 默认是设定自己的时程表。 file是命令文件的名字
crontab -e: 执行文字编辑器来设定时程表, 第一次执行会让你选择文字编辑器
crontab -r: 删除目前的时程表
crontab -l: 列出目前的时程表
crontab -v: 列出用户cron作业的状态
基本格式:
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
补充 :
当第一列为 * 时表示每分钟都要执行command,第二列为 * 时表示每小时都要执行程序,以此类推
当第一列为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,第二列为 a-b 时表示从第 a 到第 b 小时都要执行,以此类推
当第一列为 */n 时表示每 n 分钟个时间间隔执行一次,第二列为 */n 表示每 n 小时个时间间隔执行一次,以此类推
当第一列为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,第二列为 a, b, c,... 时表示第 a, b, c...个小时要执行,以此类推
实例:
实例一(入门):
* * * * * date >> ~/time.log # 每隔一分钟将时间写入time.log
0 * * * * date >> ~/time.log # 每小时的0点将时间写入time.log ,比如1:00, 6:00,12:00
6,10 * 2 * * date >> ~/time.log # 每个月2号,每小时的6分和10分将时间写入time.log
*/3,*/5 * * * * date >> ~/time.log # 每隔3分钟或5分钟将时间写入time.log,比如2:03,6:05,10:06
实例二(进阶):
系统管理员需要每天做一定的重复工作,编制一个解决方案:
(1) 从下午 4:50 删除/abc 目录下的全部子目录和全部文件;
(2) 从早上 8:00~下午 6:00每小时读取/xyz目录下x1 文件中每行第一个域的全部数据加入到/backup目录下的 back01.txt文件内;
(3) 每逢周一下午 5:50 将/data目录下的所有目录和文件归档并压缩为文件backup.tar.gz;
(4) 在下午 5:55 将IDE接口的CD-ROM缷载(假设CD-ROM的设备名为 hdc);
使用crontab添加如下来完成:
crontab -e
———————–-----------------------------
50 16 * * * rm-rf/abc/*
00 08-18 * * * awk ‘{print $1 }’ /xyz/x1 >> /backup/back01.txt
50 17 * * 1 tar -zcvf /backup/backup.tar.gz /data
55 17 * * * umount /dev/hdc
———————–-----------------------------
参考:
https://blog.youkuaiyun.com/tianmohust/article/details/7436064