Linux Centos8上使用系统定时任务crond

Posted 架构师易筋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Centos8上使用系统定时任务crond相关的知识,希望对你有一定的参考价值。

1. 查看crond的状态:

# systemctl status crond

说明:和其他service的执行相同:

启动:

systemctl start crond

停止:

systemctl stop crond

说明:crond服务一般linux系统会默认安装,

如果不存在,可以用这个命令安装:

# yum install crontabs

2. crond的日志位于何处?

默认位于/var/log目录下,cron打头

复制代码

# ll /var/log/cron*
-rw------- 1 root root 35831 Mar  6 14:01 /var/log/cron
-rw------- 1 root root 45705 Feb  9 03:01 /var/log/cron-20200209
-rw------- 1 root root 45596 Feb 16 03:01 /var/log/cron-20200216
-rw------- 1 root root 45227 Feb 23 03:01 /var/log/cron-20200223
-rw------- 1 root root 45429 Mar  1 03:01 /var/log/cron-20200301

3. crond的配置命令:

1,编辑配置

# crontab -e

2,查看已添加的定时任务:

# crontab -l

4. crontab命令编辑后的配置保存在哪里?

位于 /var/spool/cron这个目录下,

如果用root账户配置了定时任务,则可以看到有一个root文件:

# ls /var/spool/cron/

root  webop

# more /var/spool/cron/root

此处即为我们所添加的定时任务

5. crontab中命令的格式:

查看/etc/crontab文件可以看到crontab所定义的命令格式:

复制代码

# more /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

说明:5个*分别代表:

  1. 分钟
  2. 小时
  3. 周几

6. 看例子:

1,每天的0点0分,执行一个切分日志的脚本程序

0 0 * * * sh /data/web/cmd/split_log_shell/splitlog.sh >> /data/logs/cronlogs/splitlog.log 2>&1

2,每15分钟,执行一个检查php日志中是否出现报错的程序

*/15 * * * * /data/software/php7/bin/php /data/web/cmd/check_php_error/check_error_for_php_log.php >> /data/logs/cronlogs/checkphperror.log 2>&1

3,在指定的分钟,运行一个导出数据的脚本

0,15,30,45 * * * * sh /usr/sbin/backupmysql.sh >> /data/logs/cronlogs/backupmysql.log 2>&1 

说明: 2>&1的作用:把shell的错误输出2也转为输出到正常输出1,

      否则如果程序运行出错时,错误信息不会被记录到命令行上所添加的日志文件中

7. 生产环境中使用crond值得注意的地方:

应该有一个保存cron输出内容的日志目录,

用来记录下crond运行时的情况,

把数据输出到这里

crond自身的日志只记录了在相应的时间程序是否有执行,没有执行情况的反馈

创建cron的日志目录

# mkdir /data/logs/cronlogs
# chmod 777 /data/logs/cronlogs/

8. 查看当前crond的版本

$ crontab -V
cronie 1.5.2
$ crond -V
cronie 1.5.2

说明:用crontab crond两个命令均可

因为它们属于同一个安装包

用下面的命令可以查看:

$ rpm -ql cronie

9. 查看本地centos的版本:

$ cat /etc/redhat-release
CentOS Linux release 8.4.2105

10. 添加 sh并给予执行权限

chmod +x demo-crond.sh

也可以直接在 /etc/crontab 中添加任务

vim  /etc/crontab

比如添加如下任务, 每5分钟执行一次

*/5 * * * * root bash /root/demo-crond.sh

参考

https://www.cnblogs.com/architectforest/p/12435344.html

以上是关于Linux Centos8上使用系统定时任务crond的主要内容,如果未能解决你的问题,请参考以下文章

linux定时任务-cron

定时任务小结

cron定时器插件使用

0118 定时任务调度

Linux上如何使用 Crontab定时任务

Linux定时任务-crontab