Linux 基础 - 计划任务
Linux 计划任务
单一时刻执行一次的任务:at
如果没有 at 命令
[root@localhost ~]# yum -y install at
创建计划任务
[root@localhost ~]# at now + 30 minutes
at> poweroff
at> <EOT>
job 1 at Fri Sep 25 13:53:00 2020
-
第一行是创建 30 分钟之后执行的任务
-
第二行是执行关机命令
-
第三行是按了 Ctrl + D 代表结束
-
第四行是系统输出的 代表一个任务将会被执行
atq
查看计划任务
[root@localhost ~]# atq
1 Fri Sep 25 13:53:00 2020 a root
atrm
删除计划任务
[root@localhost ~]# atrm 1
[root@localhost ~]# atq
[root@localhost ~]#
也可以安排具体时间
[root@localhost ~]# at 00:00 2020-09-26
at> poweroff
at> <EOT>
job 2 at Sat Sep 26 00:00:00 2020
[root@localhost ~]# atq
2 Sat Sep 26 00:00:00 2020 a root
/etc/at.deny 用户黑名单 里面的用户无法使用 at
周期性执行任务:cron
[root@localhost ~]# service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 五 2020-09-25 08:34:09 CST; 4h 59min ago
Main PID: 688 (crond)
CGroup: /system.slice/crond.service
└─688 /usr/sbin/crond -n
9月 25 08:34:09 localhost systemd[1]: Started Command Scheduler.
9月 25 08:34:09 localhost crond[688]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 0% if used.)
9月 25 08:34:10 localhost crond[688]: (CRON) INFO (running with inotify support)
首先要保证 crond 在运行 running
[root@localhost ~]# service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 五 2020-09-25 13:34:43 CST; 5s ago
Process: 688 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=exited, status=0/SUCCESS)
Main PID: 688 (code=exited, status=0/SUCCESS)
9月 25 08:34:09 localhost systemd[1]: Started Command Scheduler.
9月 25 08:34:09 localhost crond[688]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 0% if used.)
9月 25 08:34:10 localhost crond[688]: (CRON) INFO (running with inotify support)
9月 25 13:34:43 localhost systemd[1]: Stopping Command Scheduler...
9月 25 13:34:43 localhost systemd[1]: Stopped Command Scheduler.
如果是 dead 则没在运行 需要手动开启一下
[root@localhost ~]# service crond start
通过 crontab 设置计划任务
-
语法
* * * * * command
-
*
用来定义时间 -
第一个
*
表示分钟 1~59 -
第二个
*
表示小时 0~23 -
第三个
*
表示日期 1~31 -
第四个
*
表示月份 1~12 -
第五个
*
表示星期 0~6,0 代表周日 -
最后是执行的命令
[root@localhost ~]# crontab
* */1 * * * service nginx restart
[root@localhost ~]# crontab -l
* */1 * * * service nginx restart
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
设置每小时 重启 nginx
-l
查看计划任务
-r
删除计划任务