用户工具

站点工具


侧边栏

linux基础:定时任务

定时任务内容相关

规则

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  *   *   *    *   * 具体做什么事情
  分  时  日  月  周

具体写法

01. 用数值表示时间信息
00 02 *  *  *   备份文件
02. 利用特殊符号表示时间信息
*      *      *     *     *   备份文件 
每分钟  每小时 每天  每月  每周
PS: 定时任务最短执行的周期为每分钟
*/5     */5    */5    
每隔5分钟  每隔5小时    
01-05   02    *    *    *       
01到05   02    *    *    *
指定时间的范围
00      14,20  *   *    *
指定不连续的时间信息

总结

  1. 在写时间信息的时候, 如果想表示每隔多久执行什么任务 /上面尽量用*号表示, 不要写具体数值
  2. 时间信息由左到右依次书写, 尽量不要跳步
  3. 当编写定时任务时,日期信息不要和星期信息同时出现

实际编写任务顺序

  1. 每天凌晨两点备份 /data目录到 /backup 第一个历程: 写上时间信息 00 02 * * 第二个历程: 写上完成任务的具体命令 cp -a /data /backup 第三个历程: 编写定时任务 crontab -e 00 02 * * cp -a /data /backup

编写注意事项(规范)

  1. 编写定时任务要有注释说明
  2. 编写定时任务路径信息尽量使用绝对路径
  3. 编写定时任务命令需要采用绝对路径执行 /usr/sbin/useradd 命令执行成功条件: useradd —> $PATH —> /sbin/useradd —> 命令执行成功 定时任务执行时,识别的PATH信息只有: /usr/bin:/bin useradd命令—>usr/sbin/useradd
  4. 编写定时任务时,可以将输出到屏幕上的信息保存到黑洞中,避免占用磁盘空间
* * * * *  sh test.sh &>/dev/null

如果产生输出到屏幕信息,会以邮件方式告知用户

/var/spool/mail/root

文件中会不断占用磁盘空间,占用block空间

解决方法:将邮件服务关闭

systemctl stop postfix

但关闭服务会导致未发送的邮件任务被存储,小文件占用inode

/var/spool/postfix/maildrop/
  1. 编写定时任务, 尽量不要产生屏幕输出信息

tar zcvf —→ tar zcf

  1. 当需要多个命令完成一个定时任务需求时,可以利用脚本编写定时
vim backup.sh 
cp -a /data /backup   
tar zcvf /backup/data.tar.gz  /data

crontab -e 
# xxxxx
* * * * *  /bin/sh /server/scripts/backup.sh &>/dev/null
  1. 定时任务中无法识别任务中的一些特殊符号

解决方法1:利用转义符号

* * * * * /bin/date "+\F \%T" > /tmp/time.txt

解决方法2:利用脚本编写任务

vim /oldboy/date.sh
/bin/date "+%F %T"
* * * * * /bin/sh /oldboy/date.sh &> /dev/null

定时任务服务

检查软件安装

#cronie
rpm -qa cronie
rpm -ql cronie

操作命令

定时任务根据不同用户创建不同任务,分别区分开。通过命令只能查到自己账户创建的任务

#查看任务
crontab -l
#编辑任务
crontab -e

查看所有用户任务需进入目录查看

cd /var/spool/cron/
cd /var/spool/cron/root
cd /var/spool/cron/user1

定时任务特殊目录

系统定时任务周期:每小时 控制定时任务目录:/etc/cron.hourly 系统定时任务周期:每一天 控制定时任务目录:/etc/cron.daily 00:00-23:59 系统定时任务周期:每一周 控制定时任务目录:/etc/cron.weekly 7天 系统定时任务周期:每个月 控制定时任务目录:/etc/cron.monthly 30 28 31

定时任务排查方法

  1. 检查是否有定时任务配置文件 cat /var/spool/cron/root 00 02 * * * cp -a /data /backup
  2. 检查定时任务日志文件 ll /var/log/cron -rw——-. 1 root root 14050 Apr 25 15:49 /var/log/cron
linux基础/定时任务.txt · 最后更改: 2022/08/13 00:37 由 pwbty