Centos7中的定时任务总结

1 Linux 中定时任务分类

有两种:

  • 一种是一次性的,如at ,不过必须有atd后台服务。
  • 一种是循环的的,如crontab,对应的后台服务为crond。

确认服务状态:

[root@test3 ~]$ systemctl status atd
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-03-22 03:18:36 CST; 38min ago
#crontd服务
[root@test3 ~]$ systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-03-21 15:55:52 CST; 11h ago

2 at的运作方式

并不是系统上的所有账号都可以进行at任务,可以利用/etc/at.allow 和/etc/at.deny进行安全限制。

如果/etc/at.allow不存在,就寻找/etc/at.deny,写在at.deny的使用者不能使用at,而没有在at.deny中的使用者,就可以使用at。
如果两个文件都不存在,那么只有root可以使用at指令。

[root@test3 ~]$ at now + 5 minutes
at> /bin/mail -s "this is a testing job" root < /root/.bashrc
at> <EOT>
job 2 at Sun Mar 22 04:25:00 2020
#示例二
[root@test3 ~]$ at 22:00 2020-07-05
at> bin/sync
at> /sbin/shutdown -h now
at> <EOT>

at指令时间指定,可以用now + …的方式,定义现在过多少时间再进行工作,有时也需要定义特定的时间点来进行。上面的两个例子是具体用法。

at工作的管理

atq #查询有多少at任务?
atrm  3 #将第三个任务移除

batch:系统有空时才进行背景任务

3 循环任务crontab

  • /etc/cron.allow 将可以使用的crontab账号写入其中,不在这个文件的使用者则不可使用crontab
  • /etc/cron.deny 将不可以使用crontab账号写入其中,若未记录到这个当中的使用者,就可以使用crontab。

1. /etc/crontab.allow 比 /etc/cron.deny优先,建议只保留一个即可,一般系统默认是保留/etc/cron.deny,可以将不想让他执行crontab那个执行者写入/etc/cron.deny当中,一个账号一行。

2.当用户使用crontab这个指令建立定时任务后,就会被记录到/var/spool/cron里面,而且是以账号来作为判断。

3.另外,cron执行的每一项工作都会记录到/var/log/cron 日志中

crontab 语法

crontab字段的意义
在这里插入图片描述crontab辅助字符
在这里插入图片描述

系统的crontab配置文件

  • /etc/crontab
  • /etc/cron.d/*

注意1:crontab -e 是针对用户的cron来设计的,如果是系统的例行任务时,不需要以crontab -e 来管理定时任务。编辑/etc/crontab就可以了。

注意2:/etc/crontab 里面的语法与crontab -e 不太相同哦,前面分、时、日……一样,第五个字段要指定执行身份,与crontab -e不同。

crond服务读取配置文件的位置

一般来说,crond预设有三个地方会有执行脚本配置文件,分布是

  • /etc/crontab 跟系统有关系的配置文件
  • /etc/cron.d/* 跟系统有关系的配置文件
  • /var/spool/cron/* 跟用户有关系的配置文件

注意:
1. crontab 取消不要的输出项目:当执行成果或是有输出数据时,可以输出到/dev/null垃圾桶中
2. 周与日月不可同时并存:错误的写法

4 总结

  • 个人化的行为使用 crontab -e :如果你是依据个人需求来建立的例行工作排程,建议直接使用 crontab -e来建立你的工作排程较佳!这样也能保障你的指令行为不会被大家看到 (/etc/crontab 是大家都能读取的权限喔!);
  • 系统维护管理使用vim /etc/crontab:如果你这个例行工作排程是系统的重要工作,为了让自己管理方便,同时容易追踪,建议直接写入/etc/crontab 较佳!
  • 自己开发软件使用 vim /etc/cron.d/newfile:如果你是想要自己开发软件,那当然最好就是使用全新的配置文件,并且放置于 /etc/cron.d/ 目录内即可。
  • 固定每小时、每日、每周、每天执行的特别工作:如果与系统维护有关,还是建议放置到 /etc/crontab 中来集中管理较好。如果想要偷懒,或者是一定要再某个周期内进行的任务,也可以放置到上面谈到的几个目录中,直接写入指令即可!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值