Ubuntu 使用 Cron 实现计划任务

Ubuntu 使用 Cron 实现计划任务
ihoey发表于梦魇小栈
https://cloud.tencent.com/developer/article/1360036
在这篇文章中:

安装 cron 服务
启动 cron 服务
编辑计划文件
重启 cron 服务
管理任务计划文件
cron 语法格式
任务示例

Windows 自带定时执行任务的工具叫做“计划任务”,Linux 下我们使用 Cron 实现这一功能。
安装 cron 服务

通常 ubuntu 下自带 cron,如果没有也可以通过以下命令进行安装:apt-get install cron
若已经安装,输入以下命令判断 cron 服务是否启动:pgrep cron
如果有 pid (一串数字)输出则说明 cron 服务已经启动,没有任何输出说明需要手动启动 cron 服务。

启动 cron 服务

启动服务 service cron start

编辑计划文件

crontab -e

来打开你的用户所属的crontab文件。第一次用这个命令,会让你选择文本编辑器,我选的是vim。选定的编辑器也可以使用

你也可以每次自己更改 select-editor
重启 cron 服务

每次保存了crontab之后,我们还需要重启cron来应用这个计划任务。使用命令:sudo service cron restart
管理任务计划文件

cron 的所有任务计划都记录在 crontab 任务计划文件中,通过 crontab 命令对该任务文件进行管理。

$ crontab -u root -e #编辑用户 root 的计划任务文件

$ crontab -e #编辑当前用户的计划任务文件

$ crontab -u root -l #显示用户 root 的计划任务文件

$ crontab -l #显示当前用户的计划任务文件

$ crontab -r #删除当前用户的计划任务文件

cron 语法格式

m h dom mon dow command
0-59 0-23 1-31 1-12 0-7 command

m: 表示分钟
h: 表示小时
dom: 表示日期
mon: 表示月份
dow: 表示星期
command: 预执行的命令

另外需要使用一些特殊符号实现灵活的配置:

* 代表所有值
/ 代表“每”
- 代表范围
, 分割数字

任务示例

指定具体执行时间

2 * * * * ls #每个小时的第2分钟执行一次 ls 命令
30 7 * * * ls #每天7:30执行一次 ls 命令
30 20 * * 2 ls #每周二,20:30执行一次 ls 命令(0和7表示星期天)

指定间隔时间

*/2 * * * * ls #每隔2分钟执行一次 ls 命令

指定时间段

30 7 3-6 * * ls #每个月的3,4,5,6号的7:30分各执行一次 ls 命令

指定多个时间

30 7 3,6 * * ls #每月的3号和6号的7:30分各执行一次 ls 命令

另外,使用 run-parts 可以运行指定目录下所有的脚本(注意脚本必须加上 “#!/bin/bash”,否则 run-parts 会调用失败)

30 7 * * * run-parts /home #每天7:30运行 /home 目录下的所有脚本


其它脚本:

/2  *    *   *   /sbin/service httpd restart 意思是每两个小时重启一次apache
 7   *    *   *   /sbin/service sshd start 意思是每天7:50开启ssh服务
 22   *    *   *   /sbin/service sshd stop 意思是每天22:50关闭ssh服务
  0   1,15  *   *   fsck /home 每月1号和15号检查/home 磁盘
  *   *    *   *   /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件
 03   *    *  1-5  find /home "
.xxx" -mtime +4 -exec rm {} ; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
 6   */10  *   *   ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令


示例:

0   4   *   *   0  root  emerge --sync && emerge -uD world #每周日凌晨4点,更新系统
0   2   1   *   *  root rm -f /tmp/* #每月1号凌晨2点,清理/tmp下的文件
0   8   6   5   *  root  mail robin < /home/galeki/happy.txt #每年5月6日给robin发信祝他生日快乐

假如,我想每隔2分钟就要执行某个命令,或者我想在每天的6点、12点、18点执行命令,诸如此类的周期,可以通过 “ / ” 和 “ , ” 来设置:

*/2  *      *  *  *  root … #每两分钟就执行…
0   6,12,18  *  *  *  root … #每天6点、12点、18点执行…

每两个小时

0  */2  *  *  *  echo “have a break now.” >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0  23-7/2,8  *  *  *  echo “have a good dream:)” >> /tmp/test.txt

每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点

0  11  4  *  1-3  command line

1月1日早上4点

0  4 1 1 * command line

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值