Linux Crond服务

标题 内容
crond 定义,作用,特点
crond 配置参数说明
crond crontab命令方法
crond crond服务的注意事项

crond定义,作用,特点

crond定义与作用

  • Linux系统定时任务是由cron(crond)系统服务来控制的。服务如下:
[root@cess-master01 ~]# systemctl status crond
● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2022-10-17 10:24:03 CST; 5 days agoMain PID: 14999 (crond)Tasks: 1Memory: 7.3MCGroup: /system.slice/crond.service└─14999 /usr/sbin/crond -nOct 17 10:24:03 cess-master01 systemd[1]: Started Command Scheduler.
Oct 17 10:24:03 cess-master01 systemd[1]: Starting Command Scheduler...
Oct 17 10:24:03 cess-master01 crond[14999]: (CRON) INFO (Syslog will be used instead of sendmail.)
Oct 17 10:24:03 cess-master01 crond[14999]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 1% if used.)
Oct 17 10:24:03 cess-master01 crond[14999]: (CRON) INFO (running with inotify support)
Oct 17 10:24:03 cess-master01 crond[14999]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
[root@cess-master01 ~]# cat /usr/lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process[Install]
WantedBy=multi-user.target[root@cess-master01 ~]#

注意: /usr/lib/systemd/system是系统服务,而/etc/systemd/system是用户服务,一般我们自己维护的服务都放在/etc/systemd/system目录下不与系统服务产生冲突。

  • Linux系统上面原本就有非常多的计划性工作,所以crond系统服务本身默认是启动的。
  • 当然了,如果我们自己需要设置定时计划任务,我们可以使用crontab命令去设置定时计划任务。下面看下crontab命令的操作以及操作之后crond配置变化。

crond特点

  • crond是Linux下用来周期性的执行某个任务或者等待处理某些事件的一个守护进程,与Windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务
  • 但是任务调度的形式有可以分为两种,一种是系统任务调度,另一种是用户任务调度。我们在下面配置方式中会详细介绍。

配置crond

  • 我们已经知道crond的任务调度类型有两种,系统任务调度用户任务调度,我们先来说说系统任务调度

系统任务调度

  • 实际上crond的服务可以追溯到UNIX系统上,Linux是从UNIX演进而来的(这里crond服务指的Linux系统上的crond服务),所以Linux系统周期性所要执行的工作,比如说Cache中的数据写入硬盘,日志清理等都是系统周期性所要执行的任务
  • 系统周期性所要执行的任务配置是在/etc/crontab文件中,如下所示:
[root@cess-master01 ~]# cat /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 executed[root@cess-master01 ~]#
  • 以上是默认的配置,前三行是用来配置crond任务运行的环境变量,默认配置解释:
  • 第一行SHELL=/bin/bash变量指定了系统要使用哪个SHELL COMMAND,默认都是bash
  • 第二行PATH变量指定了系统执行命令的路径;
  • 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。
[root@cess-master01 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# 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 executed
59 * * * * root scrapy crawl mygirl[root@cess-master01 ~]#
  • 第四行HOME/变量指定了在执行命令或者脚本时使用的主目录。如果不填写crontab的默认执行路径为当前用户的根路径。比如:
[root@VM-64-144-centos ~]# cd ~
[root@VM-64-144-centos ~]# pwd
/root
[root@VM-64-144-centos ~]

用户任务调度

  • 用户定期要执行的任务工作,比如数据库数据备份、定时邮件提醒等。用户自己可以使用crontab工具来定制自己的计划任务。所用用户定义的crontab文件都被保存在/var/spool/cron目录中。如下:
[root@VM-64-144-centos ~]# cat /var/spool/cron/root
*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'
20 */1 * * * sh /usr/share/nginx/fallback/fallback_copy.sh > /usr/share/nginx/fallback/fallback_copy.log
[root@VM-64-144-centos ~]#
  • /etc/cron.deny文件,这个文件中所列用户不允许使用crontab命令;
  • /etc/cron.allow文件,这个文件中所列用户允许使用crontab命令;
  • /var/spool/cron/文件,所有用户crontab文件存放的目录,以用户名命名。

# 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 executed
59 * * * * root scrapy crawl mygirl
  • 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式分为六个字段,前五段是时间设定段,第六段诗任务调度用户设定段,第七段是要执行的命令段。格式如下:
minute hour day month week user-name command
  • 其中:

  • minute: 表示分钟,可以是从0到59之间的任何整数;

  • hour: 表示小时,可以是从0到23之间的任何整数;

  • day: 表示日期,可以是从1到31之间的任何整数;

  • month: 表示月份,可以是从1到12之间的任何整数;

  • week: 表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日;

  • user-name: 指定某个用户有权限执行command命令,默认是root用户;

  • command: 要执行命令,可以是系统命令,也可以是自己编写的脚本文件。

  • 在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*): 代表所有可能的值,例如minute字段如果是星号,则表示在满足其它字段的制约条件后每分钟都执行该命令操作。

  • 逗号(,): 可以用逗号隔开的值指定一个列表范围,例如: "1,2,5,7,8,9"

  • 中杠(-): 可以用整数之间的中杠表示一个整数范围,例如: "2-6"表示"2,3,4,5,6"。

  • 正斜线(/): 可以用正斜线指定时间的时间频率,例如: "0-23/2"表示每两小时执行一次。同时正斜线可以和星号一起使用,例如: */10, 如果用在minute字段,表示每十分钟执行一次

  • 以上就是crontab配置参数的说明,可以详细参考使用。

  • 实例:

# 每隔1分钟执行一次command
* * * * * user-name command# 每小时的第3和第15分钟执行
3,15 * * * * user-name command# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * user-name command# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * user-name command# 每隔星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 user-name command# 每晚的21:30重启网络
30 21 * * * user-name /etc/init.d/network restart# 每月1,10,22日的4:50重启network
50 4 1,10,22 * * user-name /etc/init.d/network restart# 每周六、周日的6:30重启network
30 6 * * 6,0 user-name /etc/init.d/network restart# 每天18:00至23:00之间每隔30分钟重启network
0,30 18-23 * * * user-name /etc/init.d/network restart# 每一小时重启network
* */1 * * * user-name /etc/init.d/network restart# 每隔4个小时重启network
* */4 * * * user-name /etc/init.d/network restart# 每星期六的晚上23:00重启network
0 23 * * 6 user-name /etc/init.d/network restart# 晚上11点到早上7点之间,每隔一个小时重启network
* 23-7/1 * * * user-name /etc/init.d/network restart# 每月的4号与每周一到周三的11点重启network
0 11 4 * mon-wed user-name /etc/init.d/network restart# 一月一号的4点重启network
0 4 1 jan * user-name /etc/init.d/network restart# 每小时执行数据库备份到tmp目录的all.sql文件中
01 * * * * user-name(root) mysqldump -uroot -ppwd -all-databases > /tmp/all.sql

crontab命令方法

  • crontab -l list命令列出crontab文件。
[root@VM-64-144-centos ~]# crontab -l
*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'
20 */1 * * * sh /usr/share/nginx/fallback/fallback_copy.sh > /usr/share/nginx/fallback/fallback_copy.log
[root@VM-64-144-centos ~]#
  • crontab -e edit命令编辑crontab文件,进入到vim编辑器去编辑任务调度。
[root@VM-64-144-centos ~]# crontab -e
crontab: no changes made to crontab
[root@VM-64-144-centos ~]#
  • crontab -r remove命令编辑crontab文件。请确认需要删除之后进行删除。
[root@VM-64-144-centos ~]# crontab -r
  • 如果不小心误删除了crontab文件,假设你在自己的$HOME目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名,如果由于权限问题无法完成拷贝,可以用:
[root@VM-64-144-centos ~]# crontab <filename>
  • 其中,<filename>是你在$HOME目录中副本的文件名。
  • 建议你在自己的$HOME目录中保存一个该文件的副本。我就有过类似的经历,有数次误删了crontab文件(因为r健紧挨在e健的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。

注意: 有些crontab的命令有些怪,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这个时候不要delete健退出,不要强制退出<Ctrl+D>,否则你将丢失crontab文件。


crond注意事项

Linux Crond服务相关推荐

  1. Linux 关闭crond服务,linux crond 服务配置详解

    cron 是linux的内置服务,可以用以下的方法启动.关闭这个服务: 引用: /sbin/service crond start //启动服务 /sbin/service crond stop // ...

  2. linux 定时任务 crond 服务介绍

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  3. linux未被识别crond服务,linux 定时任务 crond 服务介绍

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  4. linux定时任务打印日志,Centos7(linux)使用crond服务定时执行js脚本并将脚本的输出内容记录日志文件的简单应用...

    - ## 在Centos7.8上使用crond服务定时执行js脚本并将脚本执行的输出记录日志 1. 安装wget 2. wget https://npm.taobao.org/mirrors/node ...

  5. Linux定时任务crond服务

    一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...

  6. Linux定时服务 crond

    作用: crond 是linux用来定期执行程序的命令.安装完成操作系统后,默认启动此任务调度命令 crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作 linux系 ...

  7. linux查看定时服务,linux 定时任务 crond 服务介绍

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  8. Linux服务项目实例,linux 定时任务 crond 服务应用指南(项目实例)

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  9. linux计划任务crond服务

    一句话介绍crond服务:后台运行,自动执行设定的任务. crond服务是默认安装,默认开机启动的 配置: 系统级别: /etc/crontab  #root 用户可以直接编辑此文件来编辑计划任务 用 ...

最新文章

  1. 为什么在MM32中的MicroPython中无法打开二进制文件呢?
  2. 上传自动显示图片 代码
  3. Linux网络编程之IP地址转换为无符号整数的方法
  4. 极简数据分析实操指南(上)
  5. 30_visdom可视化、TensorboardX及其案例、安装visdom、使用visdom的案例
  6. 技术干货| 阿里云基于Hudi构建Lakehouse实践探索
  7. MNIST 手写数字识别,我是如何做到886个可训练参数,识别率达到98.2%? (参数、模型压缩), Keras实现,模型优化
  8. modelsim 的高效使用
  9. IntelliJ IDEA 2020 基础设置
  10. linux下安装gcc
  11. 代码整洁之道读书笔记----第一章---综述--第二节-整洁代码和我们的孩子
  12. Hadoop环境搭建学习(1)
  13. Java Web程序设计笔记 • 【目录】
  14. iOS 实现长屏截图,scrollview,tableview截图
  15. Ubuntu16.04安装bugzilla
  16. 天津市高中计算机会考,天津高中会考科目有哪些
  17. 下列4组数据类型中 c语言允许的一组是,下列4组数据类型中,C语言允许的一组是...
  18. python 绘图线条颜色
  19. SH-SSS丨面向有声读物的跨说话人语音风格迁移
  20. 如何在Microsoft PowerPoint中创建或删除悬挂缩进

热门文章

  1. 数值计算方法(石东洋)习题答案
  2. 请输入课程编号C语言,为什么呢?为什么呢?
  3. three.js之光源
  4. SQL实现日期自动填充
  5. 记录我小白起步的点滴生活
  6. Analysis::compressCTU()
  7. NOI Online 2022入门组 数学游戏
  8. Flutter混合开发
  9. eNSP启动路由器失败,错误代码40解决方法亲测有效
  10. 操作系统是如何运行的