本文基于CentOS-7-x86_64-Minimal-2003.iso镜像版本:
自动启动任务的分类:单一任务和循环任务。对应的命令是at和crontab。
单一任务:at命令
问题:什么是atd?
答:atd是一个服务,atd名字拆分为at(命令) +daemon(守护进程)
问题:什么是daemon(守护进程)
答:就好比atd是诸葛亮,at命令是阿斗。
安装atd服务: yum install atd
查看atd服务是否启动:systemctl status atd 输出结果如下:
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: inactive (dead)
// enabled代表开机启动 inactive 代表没有运行。
启动atd服务:systemctl start atd
重启atd服务:systemctl restart atd
关闭atd服务:systemctl stop atd
atd设置开机启动:systemctl enable atd
用户使用权限
vim /etc/at.deny # 里面写的是用户黑明单,说明这些用户不能使用at命令
问题:如何设置单一任务:(因为目前我的工作中只用到了crontab,所以暂时不学语法。)
===========================================================================
循环任务(crontab命令,守护服务crond):
crontab的查看服务那些命令同atd:比如启动crond服务 systemctl crond start。
用户使用权限
vim /etc/cron.deny # 里面写的是用户黑明单,说明这些用户不能使用crontab命令
crontab命令语法(man crontab查看):
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
crontab -n [ hostname ]
crontab -c
// -u 代表用户(user) 如: crontab -u sxd
// -l 代表列表(list) 如 crontab -u sxd -l :代表终端列出为sxd用户的任务
// -e 代表编辑(edit) 如contab -u sxd -e :代表终端编辑sxd用户的任务
// -r 代表移除(remove) 如contab -u sxd -r:代表终端移除sxd用户的任务
// 上面的-u sxd 我是在root权限上操作别人的东西,如果自己操作 可以去掉 -u sxd
// -n /-c好像跟集群有关的,自己有什么需求自行去了解。
crontab循环任务语法:
时间设置+命令:
而时间有分钟(0-59)、小时(0-23)、天(1-31)、月(1-12)、周(0-7)。
比如:58,59 * * * * echo "hello.world" > /home/sxd/test.txt
* * * * * echo "hello.world" > /home/sxd/test.txt
// 所以第一个*为分钟设置值,第二*为小时设置值
// * 代表:任何范围内的值,比如第一*代表分钟范围内0-59的任何值。
// ,代表:多个时间点 比如3,6 **** 代表3分钟、6分钟都执行任务,执行了2次。
// - 代表:时间段 比如3-6 **** 代表分钟在3分钟到6分钟之内执行
// /n 代表:每隔,不如 */10**** 代表每隔10分钟执行
ps:重点:编辑任务时要有空格。
问题:什么是crontab、什么是cron、什么是crond:
答:可以认为cron就是crond,是crontab命令的守护服务。
crontab命令会涉及的文件:
/etc/crontab:与系统有关的循环任务编写文件
/etc/cron.d/*:与系统有关的循环任务编写文件
/var/spool/cron/*: 这里的星号代表用户名,里面有用户crontab -e 编辑的任务。
/var/log/cron: crontab执行后记录的日志文件,如果任务不生效,可以看这里。
/etc/cron-weekly等等:系统每周执行的任务
anacron命令:
保证特殊情况cron未被执行的循环任务 能被执行,有需求的自行去研究。
==============================================================================
解释下名词:
/var: 目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件
/var/spool(卷):,也就是队列数据
/etc(Editable Text Configuration):系统配置文件目录。