Linux学习之计划任务at,crontab

Aki 发布于 2022-10-16 195 次阅读


一、at命令

       这个命令是用来执行一次例行任务,比如我想要指定某个时间点来保存下某个目录中的文件。 /etc/at.allow  , /etc/at/at.deny这两个文件决定了你是否可以使用at

利用上述两个文件来实现对at的使用限制。加上这两个文件之后,at的工作情况其实是这样的:

1.先找/etc/at.allow这个文件,写在这个文件中的用户才能使用at,没有在这个文件中的用户不可以使用at,即使没有写在/etc/at.deny中。

2.如果/etc/at.allow不存在,则查找/etc/at.deny这个文件,写在这个文件中的用户不能使用at,没有在这个文件中的用户可以使用at。

3.如果两个文件都不存在,则只有root可以使用at

1、首先查看at命令是否开启,有些不开启

[root@my-linux ~]# systemctl status atd.service 
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2022-09-07 10:43:16 CST; 1 months 8 days ago
 Main PID: 1785 (atd)
    Tasks: 1 (limit: 10822)
   Memory: 392.0K
   CGroup: /system.slice/atd.service
           └─1785 /usr/sbin/atd -f

   如果显示running就OK了;如果不曾开启,就手动开启systemctl start atd.service

 2、at启动了,可以写自己的任务来偷懒了

    格式:at now + time,now表示当前的时间加上后续设定的时间

 或者直接指定时间

at 4pm

  命令完成后Ctrl+D结束输入

3、任务制作完成,想看看是否成功了

 atq
 如:24    Sat Apr 11 21:21:00 2015 a root

4、如果觉得任务不合适,那么可以删除

atrm   jobnumber

这里的jobnumber就是atq查询出来的任务号。

atq 24

 删除完毕之后就可以使用atq再查看一下

二、crontab命令

crontab是循环命令,可以多次执行,只要到点了。

1、 首先确认crontab是否开启

systemctl status crond.service 

出现running就是运行了

2、然后就是了解命令格式

  minute       hour       day    month    week   脚本/命令

 一共6个字段,不确定什么时候执行就写“*“

比如:

     每分钟执行一次: */1 * * * * 脚本/命令,这是默认的格式。

     每一小时:* */1 * * * 脚本/命令

     每两天:* * */2 * * 脚本/命令

crontab命令参数:

  -u    user

  -l     列出-u指定的user的crontab任务或者本用户的任务

  -r     删除-u指定的user的crontab任务或者本用户的任务

  -e    编辑-u指定的user的crontab任务或者本用户的任务

例如每分钟记录一次时间

*/1 * * * * date >> /root/date