计划任务at、crontab

at一次性计划任务

格式:

at + 时间

              命令

 

安装at

# yum install at -y

如果执行at命令时,出现一下情况

Can't open /var/run/atd.pid to signal atd. No atd running?

计划任务at、crontab

解决办法:

# chkconfig --level 35 atd on

# service atd start

计划任务at、crontab

普通用户也能够做计划任务

at+未来时间

# at 2018-11-11

Ctrl + d结束所要添加执行的命令

计划任务at、crontab

24进制的时间

# at 10:00 2018-11-11

# at 21:20 2018-11-11

计划任务at、crontab

12进制时间

# at 11am 2018-11-11

# at 9:10pm 2018-11-11

计划任务at、crontab

days天

# at 10am+10days

计划任务at、crontab

weeks周

# at 10am+10weeks

计划任务at、crontab

两小时后执行任务

#at now+2hours

计划任务at、crontab

查看计划任务

两种方法

#atq

#at -l

 计划任务at、crontab

查看具体的计划任务的内容

 # cd /var/spool/at/

# ls

计划任务at、crontab

# cat a0000301882038

计划任务at、crontab

删除计划任务

两种方法

# atrm 3

# at -d 8

计划任务at、crontab

一次删除多个计划任务

# atrm {11..14}

计划任务at、crontab

凡是在at.deny中的是不允许做计划任务的,默认为空(黑名单)

# vi /etc/at.deny 

计划任务at、crontab

计划任务at、crontab

默认不存在,需要创建。允许做计划任务(白名单)

# vi /etc/at.allow

计划任务at、crontab

计划任务at、crontab

 

 

crontab

周期性计划任务

 

查看计划任务

计划任务at、crontab

编辑计划任务

# crontab -e

计划任务at、crontab

#分/分钟        时/几点         天/几号         月/几月份       周/星期几       命令
#如何不考虑某个时间单位的话,那么可以用*来表示,有“每”的意思
 0              7               *               *               *               /bin/aa.sh
 0,5,10         7               *               *               *               /bin/aa.sh
 0,5,10         7               *               *               1-5             /bin/aa.sh
 0,5,10         7               *               *               1-5/1           /bin/aa.sh
#   /5 每次递增5
 0-10/5         7               *               *               1-5             /bin/aa.sh
 0-10/5,30      7               *               *               1-5             /bin/aa.sh

#----------------------------------------------------------------------------------------
 0              7               *               1-3             1-5             /bin/aa.sh
 0              7               1-10            1-3             *               /bin/aa.sh
#分、时、月、周是and的关系
#分、时、天、月也是and的关系
 0              7               1-10            1-3             1-5             /bin/aa.sh
#天和周是or的关系,满足一个条件即可


#如果遇到一个比较复杂的问题,那么把他拆成几个简单的问题就行了
#例如
#让你写一个计划任务:每个月最后一天执行/aa.sh
 0              2               31              1,3,5,7,8,10,12 *               /bin/aa.sh

 计划任务保存位置

# cat /var/spool/cron/root

计划任务at、crontab

删除计划任务

# crontab -r

# crontab -l

计划任务at、crontab

系统中存在的计划任务

# ls /etc/cron*

 计划任务at、crontab

凡是在at.deny中的是不允许做计划任务的,默认为空(黑名单)

# vi /etc/cron.deny 

默认不存在,需要创建。允许做计划任务(白名单)

# vi /etc/cron.allow

 

 

 

管理系统临时文件

临时文件存放位置

计划任务at、crontab

/tmp/不能删除该目录

 

# systemctl list-unit-files | grep tmpfile

计划任务at、crontab

systemd-tmpfiles-setup.service这个服务定期读取一下三个目录

 # ls /usr/lib/tmpfiles.d/

 # ls /run/tmpfiles.d/

# ls /etc/tmpfiles.d/

优先级从上到下依次增高,最后不要去动上面两个里面的内容

计划任务at、crontab

 创建aa.conf

计划任务at、crontab

使aa.conf生效

# systemd-tmpfiles --create aa.conf

计划任务at、crontab

计划任务at、crontab

计划任务at、crontab

# systemd-tmpfiles --clean aa.conf

 计划任务at、crontab

 

# cd /usr/lib/systemd/system

# vi systemd-tmpfiles-clean.timer 

计划任务at、crontab

 

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

#当我们的系统运行15分钟或者说systemd服务运行15分钟之后, 就会执行systemd-tmpfiles这个命令

#如果系统没有重启,每隔一天执行这个命令