一次性计划at和长期计划crontab

计划任务

计划任务分为 一次性的和长期的计划

at:一次性计划。执行该命令,得启动atd服务,而centos是默认启动的
crontab:长期计划,执行该命令,得启动crond服务

atd服务运行状态

[root@aubin aubin]# systemctl status atd
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)   是否开机启动
   Active: active (running) since 三 2020-12-09 18:10:00 CST; 48min ago    启动
 Main PID: 5404 (atd)
    Tasks: 1
   CGroup: /system.slice/atd.service
           └─5404 /usr/sbin/atd -f

12月 09 18:10:00 aubin systemd[1]: Started Job spooling tools.



at执行前,需要将一次性任务写入/var/spool/at/目录中,再配合atd服务到条件满足执行任务。

查看
[root@aubin aubin]# ls /var/spool
abrt  abrt-upload  anacron  at  cron  cups  lpd  mail  plymouth  postfix



查看所有at命令所有配置文件
root@aubin aubin]# ls /etc/at.*
/etc/at.deny     该文件写入的用户名不可以使用at命令,而/etc/at.allow,该文件写入的用户才可以使用at命令
若两文件都不存在,则只有root用户可以使用at命令

at的使用

格式: at 时间
      at >  命令/脚本
      at > <EoT>
在定时任务中,命令还是脚本最好使用绝对路径
时间方式:now,minutes,hours,days,weeks,2020-12-17,15:18,tomorrow,today,yesterday

参数 说明
-m 当at的任务完成后,即发email通知使用者该任务已完成
-l 列出目前系统上面的所有at计划
-d 可以取消一个在at计划中的任务
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-q 新任务的列队名称
-f 从指定文件读入任务,而不是从标准输入读入
-t 时间参数的形式提交要运行的任务



比如:
三天后的下午重启httpd服务          设置电脑于23:20关机   明天17点,输出时间到指定文件夹   在2020-01-13 14:16查看文件1.txt,并追加写入2.txt,删除1.txt
at  5pm+3days                     at 23:20             at 17:00  tomorrow               at  14:16   14:16  2020-01-13       
at > systemctl restart httpd      at > reboot          at  >   date >/root/2013.log     at  > cat 1.txt >>2.txt
at > <EoT>                        at > <EoT>           at  > <EoT>                      at  > rm-rf   1.txt
                                                                                        at  > <EoT> 





crontab命令

crontab:循环计划任务

增加全局性的计划任务时,直接修改/etc/crontab。一般不建议这样做,可以把计划任务写入/etc/cron.d目录
例如,增加一项定时的备份任务,在/etc/cron.d目录下新建文件backup.sh,内容如下:

    # m h dom mon dow user command
    * 1 * * * root /sbin/mon_zetc_logtar.sh
cron进程执行时,就会自动扫描该目录下的所有文件,按照文件中的时间设定执行后面的命令。
cron执行时,也就是要读取三个地方的配置文件:一是/etc/crontab,二是/etc/cron.d目录下的所有文件,三是每个用户的配置文件
控制用户使用的权限文件:/etc/cron.allow ,/etc/cron.deny




crond服务的启动

service crond restart    启动crond服务
systemctl status crond   启动crond服务
systemctl enable crond  将crond服务加入启动项
/etc/cron.allow 写入该文件的用户是可以执行crontab命令的
/etc/cron.deny  写入该文件的用户不能执行crontab命令的



crontab的使用

在循环任务中,命令还是脚本最好使用绝对路径
时间方式:now,minutes,hours,days,weeks,2020-12-17,15:18,tomorrow,today,yesterday



参数 说明
-u 当at的任务完成后,即发email通知使
-e 编辑某crontab任务的内容
-l 查看crontab的任务内容
-r 删除所有crontab的任务内容

查看全局性的计划任务

[root@aubin aubin]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=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

查看存放循环计划的文件

[root@aubin aubin]#   ls /etc/cron.d/
0hourly  raid-check  sysstat
[root@aubin aubin]#   ls /etc/cron.d/0hourly 
/etc/cron.d/0hourly
[root@aubin aubin]#   cat /etc/cron.d/0hourly 
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly



/var/spool/cron
此目录下存放各个用户的任务文件。各个用户的任务存放在以自已用户名为文件名的任务文件中。
cat/var/spool/cron
[root@aubin aubin]# ls /var/spool
abrt  abrt-upload  anacron  at  cron  cups  lpd  mail  plymouth  postfix

cron执行的每一项任务都会被记录到/var/log/cron 日志文件中



格式:分 时 日 月 周 任务内容(命令)


比如
每周一,周三,周五的凌晨3点25分打印hello world 到 /tmp/txt中
25 3 * * 1,3,5 echo ”Hello World!!!” > /tmp/txt”


指定每小时的第41分钟执行一次ls命令
41 * * * * ls


每1分钟执行一次myCommand
* * * * * myCommand



每小时的第3和第15分钟执行
3,15 * * * * myCommand


每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand


每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * myCommand


实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart


每天7:50开启ssh服务
50 7 * * * /sbin/service sshd start  


每月1号和15号检查/home 磁盘
0 0 1,15 * * fsck /home  



参考文档

https://blog.nowcoder.net/n/e7cc270ed9ae4957971c37cd6a33cba4
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
https://blog.csdn.net/wangmx1993328/article/details/81235245

posted @ 2020-12-09 00:26  加油酱  阅读(210)  评论(0编辑  收藏  举报