RHCE:at crontab 执行计划任务

at 一次性任务,执行完成将不再执行:
 at由atd守护进程运行,at命令在以下软件包中
[root@foundation0 RHCE]# rpm -qf /usr/bin/at
at-3.1.13-17.el7.x86_64
查看服务是否启动:
[root@foundation0 mail]# systemctl status atd.service
atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled)
   Active: active (running) since Fri 2017-11-24 10:43:51 CST; 9h ago
 Main PID: 761 (atd)
   CGroup: /system.slice/atd.service
           └─761 /usr/sbin/atd -f
Nov 24 10:43:51 foundation0.ilt.example.com systemd[1]: Started Job spooling tools.

at跟终端没有关系,在后台运行,如果shell终端关闭,不影响at任务的执行

a-z 26个队列,字母越靠后,优先级越低,a队列的优先级最高,z队列的优先级最低

at参数选项:
at [options] timespec
-f :指定包含具体指定的任务文件
-q :指定新任务的队列名称
-l :显示待执行的列表,同atq
-d :删除指定待执行的任务,同atrm
-m :任务执行完成后向用户发送邮件

timespce时间格式:(指定的日期必须跟在指定的时间的后面)
hh:mm
month day
mm/dd/yy
dd.mm.yy
now+5min +5hours  +5days  teatime(下午4)

atq:查看队列中的任务列表
atrm:删除队列中的任务


[root@foundation0 at]# at now +3hours
at> echo "hello world"
at> <EOT>
job 4 at Fri Nov 24 22:43:00 2017
You have new mail in /var/spool/mail/root
[root@foundation0 at]# atq
4 Fri Nov 24 22:43:00 2017 a root  :a表示队列a

[root@foundation0 at]# at now +1min
at> /usr/bin/touch /root/at.txt
at> <EOT>
job 5 at Fri Nov 24 19:46:00 2017
[root@foundation0 at]# atq
4 Fri Nov 24 22:43:00 2017 a root
5 Fri Nov 24 19:46:00 2017 a root

任务报告完成后会向执行的用户发送成功或失败邮件
root邮件目录:
[root@foundation0 mail]# cd /var/spool/mail/
[root@foundation0 mail]# pwd
/var/spool/mail
[root@foundation0 mail]# ls #以下文件是系统所有用户以用户名做为文件名的邮件信息
kiosk  root  rpc


atrm jobnum :删除要执行的任务:
[root@foundation0 mail]# atq
4 Fri Nov 24 22:43:00 2017 a root
[root@foundation0 mail]# atrm 4
[root@foundation0 mail]# atq

 

非交互式创建任务:
[root@foundation0 mail]# echo "systemctl start httpd" | at 23:30
job 6 at Fri Nov 24 23:30:00 2017
[root@foundation0 mail]# atq
6 Fri Nov 24 23:30:00 2017 a root

限制指定用户不能使用at创建一次性任务,如果用户名在at.deny文件内,在该用户将不能创建at计划业务
[root@foundation0 cron]# cat /etc/at.deny

 

+++++++++++++++++++++++++crontab 周期性执行任务+++++++++++++++++++++++++++++++++++++++
crontab 周期性执行任务:

系统任务计划和用户创建的任务计划

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

-u 指定用户

-l 查看当前用户创建的任务

-e 创建或修改任务

-r 删除任务

 

查看守护进程是否启动:

[root@foundation0 at]# systemctl status crond.service

crond.service - Command Scheduler

   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)

   Active: active (running) since Fri 2017-11-24 13:55:30 CST; 5h 59min ago

 Main PID: 4468 (crond)

   CGroup: /system.slice/crond.service

           └─4468 /usr/sbin/crond -n

 

格式:分                          执行的用户   执行的脚本名(/bin/bash) 要执行的命令

     (0-59) (0-23) (1-31) (1-12) (0-7)

x-y表示范围

x,y表示列表

*/x 表示时间间隔 */7每隔7分钟,0-59/7

 

* * * * *

3,15 * * * *

3,15 8-11

3,15   8-11   */2

3,15   8-11 * * 1

30 21 * * *

45 4 1,10,22 * *

10 1 * * * 6,7

00,30 18-23   每天18:00至23:00之间每隔30分钟

00 23 * * * 6

00 */1 * * * 每小时

00  23-7/1  

00 23  4  * 1-3

00 4  1 1 *

01 * * * * 每小时

 

crontab -e -u root #如果没有指定表示当前用户

25 3 * * 1,3,5 /usr/bin/tar -zcvf back.tar.gz /home/wwwroot >/dev/null 2>&1 #>不输出日志或邮件

 

0 1 * *  1-5 /usr/bin/rm -rf /tmp/

 

root给其它用户其它用户创建计划任务:

[root@foundation0 cron]# crontab -u kiosk -e

no crontab for kiosk - using an empty one

crontab: installing new crontab

[root@foundation0 cron]# crontab -l

* * * * * sleep 10; /bin/bash /shell_scripts/crontab/echodate.sh >/dev/null 2>&1

0 1 * * 1-5 /usr/bin/rm -rf /tmp/ >/dev/null 2>&1

[root@foundation0 cron]# crontab -l -u kiosk

0 1 * * 1-5 /usr/bin/rm -rf /tmp/

 

查看创建的计划任务文件:

[root@foundation0 cron]# cd /var/spool/cron/

[root@foundation0 cron]# ls

kiosk  root

[root@foundation0 cron]# pwd

/var/spool/cron

[root@foundation0 cron]# ll

total 8

-rw-------. 1 root root  34 Nov 24 20:26 kiosk

-rw-------. 1 root root 131 Nov 24 20:26 root

 

 

 

限制指定用户不能创建计划任务:(系统默认所有用户都可以创建计划任务所以系统没有创建文件/etc/cron.allow)

[root@foundation0 cron]# vim /etc/cron.deny

 

[2]+  Stopped                 vim /etc/cron.deny

[root@foundation0 cron]# cat /etc/cron.deny

 

 

 

[root@foundation0 ~]# cat /etc/cron.deny

kiosk

[root@foundation0 cron]# su kiosk

[kiosk@foundation0 cron]$ crontab -e

You (kiosk) are not allowed to use this program (crontab)

See crontab(1) for more information

 

 

 

 

系统通过crond管理临时文件:

[root@foundation0 ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root#执行的结果发给用户root,也可以填写外部邮箱

 

# For details see man 4 crontabs

 

# 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

系统的计划任务比一般用户的计划多了一个user-name参数

 

 

系统cron作业在两个位置定义: /etc/crontab 和/etc/cron.d/*

 

预定义作业:/etc/cron.hourly/    /etc/cron.daily/   /etc/cron.weekly/   /etc/cron.monthly

shell脚本放到以上几个目录内,将文件将会按指定的周期执行脚本

 

 

[root@foundation0 ~]# cd /etc/cron.d

[root@foundation0 cron.d]# ls

0hourly  raid-check  sysstat  unbound-anchor

[root@foundation0 cron.d]# ll

total 16

-rw-r--r--. 1 root root 128 Jan 28  2014 0hourly

-rw-r--r--. 1 root root 108 Mar 10  2014 raid-check

-rw-r--r--. 1 root root 235 Jan 27  2014 sysstat

-rw-r--r--. 1 root root 187 Jan 28  2014 unbound-anchor

 

[root@foundation0 cron.d]# cat 0hourly

# Run the hourly jobs

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

01 * * * * root run-parts /etc/cron.hourly#运行/etc/cron.hourly目录下的所有脚本

[root@foundation0 cron.d]# cd /etc/cron.hourly/

[root@foundation0 cron.hourly]# ls

0anacron  0yum-hourly.cron

 

[root@foundation0 cron.d]# ll /etc/cron.*

-rw-r--r--. 1 root root   0 Nov 24 20:33 /etc/cron.allow

-rw-------. 1 root root   6 Nov 24 20:32 /etc/cron.deny

 

/etc/cron.d:

total 16

-rw-r--r--. 1 root root 128 Jan 28  2014 0hourly

-rw-r--r--. 1 root root 108 Mar 10  2014 raid-check

-rw-r--r--. 1 root root 235 Jan 27  2014 sysstat

-rw-r--r--. 1 root root 187 Jan 28  2014 unbound-anchor

 

/etc/cron.daily:

total 24

-rwxr-xr-x. 1 root root  332 Apr 15  2014 0yum-daily.cron

-rwxr-xr-x. 1 root root 2239 Feb 13  2014 certwatch

-rwx------. 1 root root  180 Jul 31  2013 logrotate

-rwxr-xr-x. 1 root root  618 Mar 18  2014 man-db.cron

-rwxr-x---. 1 root root  192 Jan 27  2014 mlocate

-rwx------. 1 root root  256 Mar 26  2014 rhsmd

 

/etc/cron.hourly:

total 8

-rwxr-xr-x. 1 root root 392 Jan 28  2014 0anacron

-rwxr-xr-x. 1 root root 362 Apr 15  2014 0yum-hourly.cron

 

/etc/cron.monthly:

total 0

 

/etc/cron.weekly:#

total 0

 

下面放可执行的shell就可以执行

[root@foundation0 cron.daily]# pwd

/etc/cron.daily

[root@foundation0 cron.daily]# ls

0yum-daily.cron  certwatch  logrotate  man-db.cron  mlocate  rhsmd

[root@foundation0 cron.daily]# cat mlocate

#!/bin/sh

nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "rootfs" { print $2 }')

renice +19 -p $$ >/dev/null 2>&1

ionice -c2 -n7 -p $$ >/dev/null 2>&1

/usr/bin/updatedb -f "$nodevs"

 

 

anacrontab:

如果错过了备份的时间,则会根据执行的周期,在anacrontab配置的范围内重新执行一次任务

 

[root@foundation0 cron.daily]# cat /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

 

# See anacron(8) and anacrontab(5) for details.

 

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22

 

#period in days   delay in minutes   job-identifier   command

15cron.dailynice run-parts /etc/cron.daily

725cron.weeklynice run-parts /etc/cron.weekly

@monthly 45cron.monthlynice run-parts /etc/cron.monthly

 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS