Linux计划任务(crond、atd)
阅读: 1357 | 文章分类: Linux | Tag: 系统   crond   atd  
在Linux中计划任务的软件有几个,今天主要说两个,一个是我比较常用的crond,另外是at,我们逐个来展开详细
# crontab
免安装,Redhat与CentOS最小化安装默认都有该可执行程序
>Linux中定时任务算crontab比较常用,他可以通过修改用户得配置文件来实现定时任务,一般用户得定时任务都会存放在/var/spool/cron/这个目录下,各个用户都会有一个单独的文件,以用户名为文件名称,设置定时任务时可以编辑或追加进这个目录下的用户文件里面,编辑或追加完要重启cron应用才生效
#### cron的定时任务用户文件路径
```
/var/spool/cron/root
```
#### 定时任务格式(在用户文件中)
```
59 23 * * * /usr/sbin/logrotate -f
#| | | | | |__________执行的命令
#| | | | |
#| | | | |_________________星期(取值范围 1-7)
#| | | |
#| | | |___________________月份(取值范围 1-12)
#| | |
#| | |_____________________日期(取值范围 1-31)
#| |
#| |_______________________小时(取值范围 0-23)
#|
#|__________________________分钟(取值范围 0-59)
```
#### 重启crond方式(设置完定时任务必须重启才生效)
```
/etc/init.d/crond restart
# 或
systemctl restart crond
```
#### 查看定时任务
```
[root@localhost ~]# crontab -l
0 0 * * * /usr/sbin/ntpdate 192.168.10.12
59 23 * * * /usr/sbin/logrotate -f /opt/nginx.log
或
[root@localhost ~]# cat /var/spool/cron/root
0 0 * * * /usr/sbin/ntpdate 192.168.10.12
59 23 * * * /usr/sbin/logrotate -f /opt/nginx.log
```
#### 参数
> cron没啥参数可讲的,基本就只会用到-l,其他计划添加计划任务啥的都通过修改文件进行
```
-u :用于管理员来指定用户添加定时任务
# 用法:
[root@localhost ~]# crontab -u jiahui /data/ping.sh
-e :删除当前用户所有计划任务(可使用-u指定用户)
# 用法:
[root@localhost ~]# crontab -r
-l :查看当前用户所有计划任务(可使用-u指定用户)
# 用法:
[root@localhost ~]# crontab -l
```
# atd
#### yum安装
```
[root@localhost ~]# yum -y install at
```
#### 启动atd
```
Redhat 7+
[root@localhost ~]# systemctl start atd # (stop)
Redhat 6
service atd start # (stop|restart|reload|status)
或
/etc/init.d/atd start
```
#### 设置开机启动
```
[root@localhost ~]# systemctl enable atd
```
#### 参数
```
-V :打印版本号
-l :查看所有计划任务(同atq)
-d :删除指定计划任务(同atrm,后面接计划任务的编号)
-v :查看已完成但未删除的计划任务
```
#### 使用方法
```
# 添加计划任务
[root@localhost ~]# at 20:00 # 直接输入时间
at> echo "20:00" # 执行内容(输入错误无法使用退格键删除,但可以使用Ctel+退格键删除)
at> # 按Ctrl+D保存退出(Ctrl+D通用ssh连接的退出、python的退出、mysql的退出等等,常用)
job 1 at Wed Apr 18 20:00:00 2018
```
```
# 查看计划任务
[root@localhost ~]# atq
1Wed Apr 18 20:00:00 2018 a root
2Wed Apr 18 20:00:00 2018 a root
[root@localhost ~]# at -l
1Wed Apr 18 20:00:00 2018 a root
2Wed Apr 18 20:00:00 2018 a root
```
```
# 删除计划任务
[root@localhost ~]# atrm 2 # 2是计划任务的编号,查看计划任务的第一列就是
```
#### 黑/白 名单
> 这里的黑/白名单并不是使用系统的文件权限来实现的,软件本身可以通过一个文件来控制
> 特别建议,白名单或黑名单文件只保留一个就好,不要两个同时使用,不然没意义
白名单文件目录,只允许白名单内的用户使用at计划任务,其他用户无法使用,注意格式,每个用户名称占一行
```
[root@localhost ~]# cat /etc/at.allow # 注意白名单文件名称是at.allow
jiahui
```
黑名单文件目录,不允许黑名单内的用户使用at计划任务,其他用户可使用,注意格式,每个用户名称占一行
```
[root@localhost ~]# cat /etc/at.deny # 注意白名单文件名称是at.deny
zhang3
```