Linux任务计划

Linux任务计划主要分为分为两种分别是一次性任务计划和周期性任务计划实现工具主要是at和crontab下面将详细介绍任务计划工具的使用。

1、at命令一次性任务计划

at命令是由atd服务提供的其主程序包是atd在CentOS6上可以使用service atd start命令来启动在CentOS7上需要使用systemctl start atd.service来启动服务。

at命令常用方法

at TIME:最简单的使用方法是at跟上时间以交互式的方法创建任务计划最后以Ctrl+d结束。

at -f FILE TIME:从指定文件中读取作业任务而不用再交互式输入

at -l:相当与atq列出系统上的所有当前用户的at队列

at -d job:相当于atrm可以删除一个指定的作业

at -c job:查看具体作业任务

at创建的任务都放在/var/spool/at目录下并且at作业任务的执行结果中如果有标准输出和错误输出则都是以邮件的形式通知给相关用户。

TIME的时间格式有

HH:MM:当天时间的几点几分执行任务如果该时间已过则明天此时执行任务还可以使用下面定义好的时间格式

    noon:中午12点

    midnight:凌晨即零点

    teatime:下午茶时间具体为下午4点

HH:MM yyyy-mm-dd:某年某月某日的几点几分执行任务

HH:MM[am|pm] [Month] [Date]:同上也是指定具体某天的某时刻执行如04pm March 17

HH:MM tomorrow:明天的几点几分执行

now + # (minutes,hours,days,weeks):从现在时间起再加#分钟或#小时或#天或#周后执行

默认情况下所有用户都可以使用at命令创建一次性计划任务如果管理员需要控制具体那些用户可以使用at创建计划任务则可以通过黑名单拒绝或白名单允许的方式控制并且默认情况下系统自带有黑名单文件/etc/at.deny在其中填写不允许使用at命令的用户名单即可同理也可以手动创建白名单/etc/at.allow在其中填写允许用户的名单即可若黑名单和白名单同时存在则黑名单不生效只有白名单中的用户可以使用at命令创建任务。

2、batch命令一次性任务计划

batch创建的也是一次性任务计划和at的用法几乎一致但batch不需要指定时间batch会让系统自行选择空闲的时间去执行指定的任务。

3、crontab命令周期性任务计划

crontab命令需要crond守护进程提供服务其主程序包是cronie。通过crontab命令向crond提交计划任务与at不同它需要使用专用的配置文件且此文件具有固定格式。

cron任务分为两类一类是系统cron任务主要用于实现系统自身的维护而创建的周期性任务一般情况下系统任务是不需要手动添加的在安装系统时会自动创建如果需要新增系统任务的话可以手动编辑/etc/crontab文件。一类是用户cron任务根据用户需求自定义的周期性任务其创建方式可以使用crontab命令创建crontab命令创建任务时会自动检测语法错误且创建的任务配置文件会以用户名的方式自动保存在/var/spool/cron/目录下。

系统cron任务的格式为

# .—————- 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

共7个字段前5个字段表示时间第6个字段表示以某用户身份运行第7个字段表示具体命令任务每一行表示一个周期性任务。

用户cron任务的格式与系统cron任务格式基本一致但用户cron任务不需要再指定以哪个用户身份运行了直接跟具体命令任务即可所以用户cron任务一共有6个字段。

cron任务的时间表示法:

1)、特定值给定时间点有效值范围内的值

2)、星号*表示特定时间点上有效值范围内的所有值表示“每…”

如:每年10月1号的中午12点表示为:0 12 1 10 *

每天的晚上18点表示为:0 18 * * *

每周一的早上点表示为:0 8 * * 1

3)、离散取值

如:每天的早上点和晚上18点表示为:0 8,18 * * *

每月的1号和15号表示为:0 0 1,15 * *

每周的周一和周五表示为:0 0 * * 1,5

4)、连续取值

如:每天的8点到18点表示为:0 8-18 * * *

每月的1号到15号表示为:0 0 1-15 * *

每周的周一到周五表示为:0 0 * * 1-5

5)、在指定时间范围上定义步长

如:每3分钟表示为:*/3 * * * *

每隔3天表示为:0 0 *3 * *

6)、系统定义好的时间

@reboot :每次重启后执行一次

@yearly和annually : 都表示为每年的1月1号:0 0 1 1 *

@monthly : 每月的1号 :0 0 1 * *

@weekly : 每周的周日 :0 0 * * 0

@daily :每天的凌晨:0 0 * * *

@hourly :每小时的整点:0 * * * *

crontab命令的常见用法有:

创建用户周期性任务命令为:crontab -e

列出所有用户周期性任务命令为:crontab -l

删除所有用户周期性任务命令为:crontab -r

root用户为指定用户创建或管理cron任务:crontab -u USER

cron任务也可以通过黑名单和白名单的方式控制用户使用crontab命令创建任务的权限默认情况下系统自带有黑名单/etc/cron.deny也可以手动创建白名单/etc/cron.allow当白名单和黑名单都存在时黑名单失效只有白名单中的用户可以使用crontab命令创建任务。

需要注意:

1)建议定义cron任务时所用到命令使用绝对路径或自定义一个拥有完整路径的环境变量。

2)cron任务的运行结果的标准输出和错误都是以邮件的形式通知给相关用户如果不想以邮件的形式通知用户则可以使用重定向的方式输出给/dev/nullCOMMAND &> /dev/null。

3)对于cron任务来讲%有特殊用途如果在命令中要使用%则需要转义不过如果将%放置与单引号中也可以不用转义。

练习

1、每周2, 4, 7备份/var/log/messages文件至/logs目录中文件名形如“messages-yyyymmdd”

#先创建/logs目录
]# mkdir /logs
#使用crontab -e创建任务
]# crontab -e
0 0 * * 2,4,7 /bin/cp /var/log/messages /logs/messages-$(date +\%Y\%m\%d) &> /dev/null

2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

]# crontab -e
0 */2 * * * /bin/grep "^[SM]" /proc/meminfo >> /tem/meminfo.txt

原创文章,作者:苦涩咖啡,如若转载,请注明出处:http://www.178linux.com/45373

(0)
苦涩咖啡苦涩咖啡
上一篇 2016-09-11 09:29
下一篇 2016-09-11 14:56

相关推荐

  • 如何使用openssl工具创建私有CA

    一、CA及证书 非对称加密是为了保证互联网中通讯信息安全使用的一种算法,密钥是成对出现(公钥和私钥),它的特点是发送方A使用接收方B的公钥加密数据,所有只有B拥有与之配对的私钥解密该数据,反之亦然。那么,A和B之间怎么交换得到对方的真实安全的公钥呢?此时就需要一个权威的机构来验证公钥的合法性,这个机构称之为CA(Certification Authority…

    2017-07-16
  • N28-第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。

    2、编辑/etc/group文件,添加组hadoop。

    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。

    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。

    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。

    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

    9、找出/etc/passwd文件中的一位数或两位数;

    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    Linux干货 2017-12-26
  • 第一周n28

    1.计算机的组成及功能 计算机由五大部件组成。控制器、运算器、存储器、输入输出设备。 1.控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2.运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工…

    Linux干货 2017-12-03
  • linux磁盘管理

    硬盘接口类型:         IDE:并口,133M/s;100个IO/s        SCSI:并口,UltraSCSI320,320M/s UltraSCSI640 640M/s 150-200IO/s&nbsp…

    Linux干货 2016-08-29
  • 简单的启动排错

    一、出现 grub> 字样,等待交互式输入指令,说明MBR中Bootloader的stage1、stage1_5、stage2都正常,但丢失了/boot/grub.conf 文件,所以无法加载启动项菜单,就无法读取默认启动的kernel、initrd等文件路径。 解决办法:无需救援模式,直接在此交互式界面指定相关文件的加载路径。 (1) grub&gt…

    Linux干货 2016-11-26
  • 系统自动化安装的实现及SELINUX的设置

    系统的自动化安装     anaconda:系统安装程序         tui:基于图形库curses的文本窗口         gui:图形窗口     装载根文件系统,并启动…

    Linux干货 2016-09-16