目录
例行工作分类
单一执行的例行工作:atd
循环执行的例行工作
系统例行工作
例行工作分类
例行工作:定时任务,设定时间去执行任务。
单一执行的例行工作:人物规定的时间值执行一次 atd
循环执行的例行工作:按照一定的周期去执行 crond
单一执行的例行工作:atdatd和ceond这两个服务默认都是启动的
at命令 *** 作,这是一个交互式的命令。at命令将会将例行工作写入/var/spool/at目录
设置的是在未来某个时间点去执行这个例行工作,需要等待这个设置的时间,然后又取用和执行我们的例行工作。
at设置权限:设置 那些用户可以使用at进行设置例行工作,默认这只会有at.deny
/etc/at.allow:设置允许的用户,默认不存在,如果要设置,需要手动建立
/etc/at.deny:设置拒绝用户
读取方式:先读取at.allow(设置允许用户),如果没有at.allow这个文件再读取at.deny(设置拒绝
的用户),如果两个文件都不存在,只有root用户可以
如何去设置例行工作:at命令
循环执行的例行工作at [-mldv] TIME
-m: Send mail to the user when the job has completed even if there was no output
当任务执行完成之后,发送邮件给用户,即使没有输出
-l: Is an alias for atq => atq命令的别名
atq: lists the user's pending jobs 列出待执行任务
-d: Is an alias for atrm : atrm的别名
atrm: at rm => 删除的命令: deletes jobs, identified by their job number 删除例行工作 通过工作编号
-v: Shows the time the job will be executed before reading the job
展示在读取工作之前工作将要被执行的时间
-c: cats the jobs listed on the command line to standard output. # 列出例行工作到标准输出
-f: file Reads the job from file rather than standard input: 从文件读取例行工作
TIME: TIME的格式
HH:MM 小时:分钟 : 在某一天的哪个时间点去执行
midnight, noon, teatime: 半夜,中午,下午4点
8AM, 4PM: 上午8点,下午4点
MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD
MMDDYY, MM/DD/YY DD.MM.YY YY-MM-DD
now + count time-units: now + 4 minutes
单位可以有分钟(minutes),小时(hours),天(days),周(weeks)
today tomorrow
样例:
at 4pm + 3 days
at 10am Jul 31
at 1am tomorrow
使用:
at 交互式的命令
at now + 3 minutes # 按回车键
> #要输入的就是要执行例行工作
> echo "123456" > /root/at_task
> #怎么去结束crtl + d[root@localhost etc]# at now + 3 minutes warning: commands will be executed using /bin/sh at> echo "123456" > /root/at_task/ at>job 1 at Sat Jan 15 21:56:00 2022 [root@localhost etc]# [root@localhost etc]# at - c1 //状态查询 syntax error. Last token seen: - Garbled time 例子:
[root@localhost etc]# echo "123" > /dev/pts/2 [root@localhost etc]# at now + 2 minutes warning: commands will be executed using /bin/sh at> echo "123" > /dev/pts/2 at>job 2 at Sat Jan 15 22:05:00 2022
对应的系统服务是crond,这个服务安装完系统就存在的。
也有配置文件来限制使用crond这个服务的用户:/etc/cron.deny/etc/cron.allow
/etc/cron.allow:文件不存在,若果想要应用,手动去创建,哪些用户可以使用
/etc/cron.deny:文件存在,直接就可以,那些用户不可以使用
可以使用crontab这个命令来设置循环例行工作,及建立例行工作之后会被西而入到/var/spool/cron/,所以用户来警醒区分的。
crontab命令
crontab [-u user] [-l | -r | -e]
-u:只有root才能进行这个任务,帮某个用户新建/删除crontab
-e:编辑crontab的工作内容
-l:查阅crontab的工作内容
-r:删除所有的crontab的工作内容
crontab -e: 编辑的时候,文件中写入的格式
总共6个字段: 前五个字段是设置周期,最后一个字段是要执行的任务
分钟 小时 天 月 星期 command(命令)
设置的时候,如果哪个不写的话,使用 * 来代替
星期的0-7: 其中0和7都代表周日
特殊符号:
* : 代表所有
, : 假设小时字段 1,2,3,5,11 => 会在一天里边的 1点,2点,3点,5点,11点去执行例行工作
- : 范围 小时: 1-4 =》代表就是一天中1点到4点去执行例行工作
/ : 代表的是频率: 分钟 */15 => 每15分钟执行一次 =》 /数字
例子
系统例行工作闹钟:每周的周一到周五早上9点 执行叫我起床的任务
星期:周一到周五
月份: 无关
日期: 无关
小时: 9
分钟: 0执行的任务:echo "叫我起床" > /root/cron_task
0 9 * * 1-5 echo "叫我起床" > /root/cron_task[root@bogon ~]# cd /etc/ssh/ [root@bogon ssh]# vim sshd_config [root@bogon ssh]# su - [root@bogon ~]# crontab -e no crontab for root - using an empty one crontab: installing new crontab [root@bogon ~]# crontab -l 0 9 * * 1-5 echo "jiaowoqichuang" > /rooot/cron_task [root@bogon ~]# cd /var/spool/cron/ [root@bogon cron]# ls root [root@bogon cron]# ls -l total 4 -rw-------. 1 root root 54 Jan 16 01:30 root [root@bogon cron]# more root 0 9 * * 1-5 echo "jiaowoqichuang" > /rooot/cron_task [root@bogon cron]#
vim /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 executedcrontab -e: 现在使用的是哪个用户就为哪个用户创建
crontab -u sshuser -e: root用户为sshuser创建
系统任务
* * * * * username command
username: 代表哪个用户去执行后边的任务
如果要执行多个任务,可以把执行的脚本文件,放入一个目录中,然后run-parts 目录
0 9 * * * sshuser run-parts /root/cron_script
每天早上9点sshuser去执行 /root/cron_scripts/所有的脚本
定时任务常用的场景: 在每天系统负荷最小的时候(业务量比较少的时候), 凌晨3-4业务量比较少的时候,执行一些统计工作,或者清理工作。临时的日志,临时的缓存文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)