什么是例行性命令?
例行性的工作,每年一次的加薪、每个月一次的工作报告、每周一次的餐会,上面这些工作可以称为例行性命令。
突发性的计算机大减价就不是例行性命令了,因为做完以后就没有了。
Linux工作排程的种类
- at:这个工作执行一次就从Linux系统的排程中取消;
- cron:这个工作将持续例行性的工作下去。
仅进行一次的工作排程:at
首先打开atd服务,预设是不启动的
service atd start
#开机自启
systemctl enable atd.service
权限设定
- 先找寻 /etc/at.allow 这个档案,写在这个档案中的使用者才能使用 at ,没有在这个档案中的使用者则不能使用 at ( 即使没有写在 at.deny 当中 );
- 如果没有 /etc/at.allow 就寻找 /etc/at.deny 这个档案,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 档案中的使用者,就可以使用 at 咯;
- 如果两个档案都不存在,那么只有 root 可以使用 at 这个指令
at命令用法
#例一,一分钟后创建一个aaa文件夹,at指令下,ctrl+d出现<EOT>字符结束
[root@localhost ~]# at now + 1 minutes
at> mkdir aaa
at> <EOT>
job 5 at Tue Jul 14 10:50:00 2020
例二:定时关机
[root@localhost ~]# at 12:00 2020-07-14
at> /sbin/shutdow -h now
at> <EOT>
job 6 at Tue Jul 14 12:00:00 2020
如果下达指令之后,又想取消
#查看所有at的工作任务
[root@localhost ~]# atq
6 Tue Jul 14 12:00:00 2020 a root
#移除at任务
[root@localhost ~]# atrm 6
循环执行的例行性任务:crontab
权限设定:
- /etc/cron.allow,在改文件中的允许使用,优先使用该种方法
- /etc/cron.deny,不在改文件中的允许使用
- 一般使用黑名单
语法:
[root@linux ~]# crontab [-u username] [-l|-e|-r]
参数:
-u :只有 root 才能进行这个任务,亦即帮其它使用者建立/移除 crontab;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除 crontab 的工作内容
例子
#编辑crontab的工作内容
[root@localhost ~]# crontab -e
#每隔一分钟想test文件中输入111
* * * * * echo "111" >>/tmp/test
五个时间参数代表意义
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 |
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 |
注意:当周为0或7时,都为星期天。
特殊字符 | 代表意义 |
* | 表示任何时刻都接受的意思 |
, | 代表分隔时段的意思,如果下达的工作是3:00与6:00,就会写成 0 3,6 * * * command |
- | 代表一段时间范围内,如果8点到12点之间的每小时的20分钟都进行一项工作:20 8-12 * * * command |
/n | n代表数字,例如没5分钟执行一次 */5 * * * * command |
#查看所有例行性命令
[root@localhost ~]# crontab -l
#一行表示一个例行性命令
* * * * * echo "111" >>/tmp/test
#删除一个例行性命令只能使用crontab -e进入后编辑
#全部删除
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
使用特点
- 资源分配不均的问题:注意命令执行时间的安排
- 取消不要的输出项目:输出重定向到/dev/null
- 检查 /var/log/cron 的内容来视察是否有非你设置的cron在执行