(十五)Linux系统运维-计划任务(at、batch、crontab)

(十五)Linux系统运维-计划任务(at、batch、crontab)

  • at单次计划任务
      • 安装:
      • 语法:
      • 任务管理:
      • 配置文件:
  • batch空闲时执行
  • crontab周期计划任务
      • 语法:
      • crontab服务管理:
      • 配置文件:
      • crontab按秒执行

我的系统版本为CentOS7.6

at单次计划任务

我使用的是centos7.6,at不是系统自带的命令,at下的命令只执行一次,at命令是交互式的在输入完成后使用ctrl+d结束。

安装:

#安装at
yum -y install at

#设置运行级别
chkconfig --level 35 atd on

#启动
service atd start

语法:

at 参数 时间
参数:

    -m:at任务完成后用邮件通知用户,即使没有输出信息
    -l:相当于atq,列出系统上该用户的所有at调度
    -d:相当于atrm,取消一个在at中调度的工作
    -v:使用较明显的时间格式列出at调度中的任务列表
    -c:列出后面姐的该项工作的的实际命令内容

时间:

      HH:MM   //18:30
      midnight   //0点 (午夜)
      noon   //12点 (中午)  
      teatime //16点(下午4点)
      AM  或   PM后缀指定一天的上午或下午。  //at  2:00 pm
      MMDDYY 
      MM/DD/YY 或 DD.MM.YY
      now + 计数  时间单位(minutes  、hours  、  days 或 weeks)
               at now + 3 hours(从现在开始起三个小时后)
               at 4pm  + 3 days   //三天以后的下午4点执行一个任务
               at 2am + tomorrom  //明天上午2点
               at 10am Jul 31   //7月31日上午10点

案例:凌晨2点备份/etc目录 到 /tmp格式为 etc.tar.xz

     at 02:00
     at> tar zcvf /tmp/etc.tar.gz /etc
     at>ctrl+d

任务管理:

#查看任务
at -l 或者 atq

#删除任务,后面的参数是任务编号
at -d 1 或者atrm 1

配置文件:

当/etc/at.allow存在时只允许/etc/at.allow内的用户运行at,当/etc/at.allow不存在但/etc/at.deny存在时不允许/etc/at.deny内的用户运行at,两个文件都为空代表允许所以用户执行

#白名单
/etc/at.allow
#黑名单
/etc/at.deny

batch空闲时执行

这里的空闲指的是系统负载低于0.8,使用方法和at一样
系统空闲时备份etc目录

     batch
     at> tar zcvf /tmp/etc.tar.gz /etc
     at>ctrl+d

crontab周期计划任务

语法:

crontab [-u username] [-l|-e|-r]

参数 含义
-u 只有root用户可以执行这个任务,也即帮其他用户新建、删除任务
-e 编辑任务内容
-l 查询任务内容
-r 删除任务内容

crontab -e每行任务有6个参数,含义如下

代表意义 分钟 小时 日期 月份 命令
数字范围 0-59 0-23 0-31 0-12 0-7 要执行的命令

其中周里面的0和7都代表周日,注意周与日月不可并存
特殊字符:

特殊字符 代表意义
*(星号) 任意时刻,如0 12 * * * sh shell-utils/show-colored-text.sh的*代表每个月的每个周中的每一天
,(逗号) 代表分割时段,例如0 3,6 * * * command,表示在3点和6点时执行任务,注意不要有空格符
-(减号) 代表时间段范围,例如如果要在凌晨1点到6点的30分的时候执行command命令则应该是 30 1-6 * * * command
/n 表示每隔n个单位间隔执行一次的意思,例如 */10 1-6 * * * command表示凌晨1到6点时间段内每隔10分钟执行一次command

crontab服务管理:

  查软件是否已安装:rpm  -q  crontabs
  查软件的文件列表:rpm  -ql  crontabs
  查软件的配置文件列表:rpm -qc crontabs
  服务状态:systemctl   status   crond       注:d是daemon守护进程
  重启at服务: systemctl   restart   crond   或  service   crond  restart
  关闭at服务: systemctl   stop   crond   或  service   crond  stop
  开机不启动at服务: systemctl   disable  crond 或 chkconfig   crond  off
  开机启动at服务:  systemctl   enable   crond  或 chkconfig   crond  on

配置文件:

与at一样,当/etc/cron.allow存在时只允许/etc/cron.allow内的用户运行crontab,当/etc/cron.allow不存在但/etc/cron.deny存在时不允许/etc/cron.deny内的用户运行crontab,两个文件都为空代表允许所以用户执行

#配置
/etc/crontab

#白名单
/etc/cron.allow

#黑名单
/etc/cron.deny

#计划任务存放位置,按用户存
/var/spool/cron/

#任务执行记录
/var/log/cron

crontab按秒执行

如果间隔的秒数能被60整除例如1、2、4、6、10、12等

#每10秒执行一次
* * * * * 任务
* * * * * * sleep 10; 任务
* * * * * * sleep 20; 任务
* * * * * * sleep 30; 任务
* * * * * * sleep 40; 任务
* * * * * * sleep 50; 任务

如果间隔的秒数不能被60整除例如7、8、9、11等

例如每7秒执行一次
crontab.sh

#!/bin/bash

step=7

for (( i = 0; i < 60*$step; i=(i+step) )); do
    $(任务')
    sleep $step
done
exit 0

crontab -e

*/7 * * * * /home/crontab.sh

你可能感兴趣的:(Linux,Linux基础入门-常用命令)