【Linux】Linux命令:crontab


1、作用

  crontab命令用于对用户的时程表进行查看、删除、修改等操作。

  用户的时程表是用于记录着要定期执行的程序。当安装完Linux操作系统启动后, cron服务会定期执行时程表里的程序。所以,通过crontab命令我们就可以实现定期执行某些脚本。

2、命令使用格式

crontab [ -u user ] { -l | -r | -e }

3、常用参数说明

  • -u user:指定用户。表示对指定用户的时程表进行操作。未指定时,默认是执行该命令的用户。
  • -e:启动文字编辑器来设定时程表,内定的文字编辑器是 Vim
  • -r:删除目前的时程表
  • -l:列出目前的时程表

4、时程表

4.1 格式

  时程表每一行代表一个要定期执行的程序,每一行的格式如下:

f1 f2 f3 f4 f5 program
  • f1 表示分钟(0 - 59);
  • f2 表示小时(0 - 23);
  • f3 表示一个月份中的第几日(1 - 31);
  • f4 表示一年的第几个月(1 - 12);
  • f5 表示一个星期中的星期几(0 - 6);
  • program 表示要执行的程序;

注意f1 ~ f5都是用来设定程序的执行周期的,一个f就是一个条件,这5个条件要同时满足,程序才会执行。

f1 ~ f5的取值主要有以下几种情况:

  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,以此类推;
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,以此类推;
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,以此类推;
  • 当 f1 为 */n 时表示每 n 分钟执行一次,f2 为 */n 表示每 n 小时执行一次,以此类推;
  • 当 f1 为 a-b/n 时表示从第 a 分钟到第 b 分钟这段时间内每 n 分钟执行一次,f2 为 a-b/n 时表示从第 a 到第 b 小时这段时间内每 n 小时执行一次,以此类推;
4.2 常见问题处理

  时程表中的程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可,如:

20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh > /dev/null 2>&1 

  时程表中的脚本无法定时执行,但是在shell会话中可以正常执行。这个问题的主要原因是无法读取环境变量的原因。 解决方法有以下三种:

  • 1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker

  • 2、在 shell 脚本开头使用以下代码:

    #!/bin/sh
    
    . /etc/profile
    . ~/.bash_profile
    
  • 3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:

    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
    

5、示例

0 */2 * * * /sbin/service httpd restart  意思是每两个小时重启一次apache 

50 7 * * * /sbin/service sshd start  意思是每天7:50开启ssh服务 

50 22 * * * /sbin/service sshd stop  意思是每天22:50关闭ssh服务 

0 0 1,15 * * fsck /home  每月1号和15号检查/home 磁盘 

1 * * * * /home/bruce/backup  每小时的第一分执行 /home/bruce/backup这个文件 

00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

30 6 */10 * * ls  意思是每月的1、11、21、31日是的6:30执行一次ls命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanzhyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值