精华内容
下载资源
问答
  • linux定时任务

    2019-03-01 15:34:18
    定时任务分类: 1,crond定时任务软件(cronie软件包名称) 查看软件包内容:件是否安装:rpm -ql cronie 定时任务特殊符号: * 每 /n 隔 */10**** 每隔十分钟 7-11 七点到11点 * 07-11 * * * * 七到八点每分钟...

    定时任务分类:

    1,crond定时任务软件(cronie软件包名称)
    查看软件包内容:件是否安装:rpm -ql cronie

    定时任务特殊符号:

    *		每
    /n		隔		*/10****	每隔十分钟
    7-11		七点到11点
    *	07-11 *	*	*	*	七到八点每分钟运行一次
    00	07-11	*	*	*	七点到八点每小时运行一次
    

    定时任务相关文件:
    定时任务配置文件所在位置:/var/spool/cron/
    定时任务的日志文件,记录运行过程:/var/log/cron
    定时任务嘿名单:/etc/cron.deny

    #####系统的定时任务
    每小时运行:cron.hourly
    每天运行:cron.daily
    每周运行:cron.weekly
    每月运行:cron.monthly
    系统定时任务+logrotate命令 完成对日志的切割、日志轮询:var/log/cron /seure /messagrs

    用户定时任务:

    查看用户定时任务:crontab -l
    编辑用户定时任务:crontab -e
    存放用户定时任务的地方:/var/spool/cron/root

    使用方法:
    1,查看定时任务服务是否启动:ps -ef|grep crond
    2,查看定时任务服务是否开机自启动:chkconfig |grep crond
    3,格式和常见写法: 分时日月周

    *			*			*			*			*						要做什么(任务)			>/dev/null 2>&1
    分钟		小时(24)		日		月		周几(0-6)
    

    什么时间做什么事情?
    分钟,小时(24小时制),日期,年份,周几(0-6) 做什么事
    例子:没隔1分钟同步一次时间
    在这里插入图片描述
    检查定时任务是否正确运行:
    1看日志: tail -f /var/log/cron
    2检 查实际的执行
    在这里插入图片描述

    2,atd运行一次
    3,anacron非7*24小时运行的服务器

    定时任务故障案例:

    【企业案例】如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中
    2>&1,很容易导致硬盘inode空间被占满,从而导致系统服务不正常。
    如果定时任务中,命令或者脚本结果,没有定向到空或者文件中。

    1,邮件软件没有开启-------大量的小文件堆积在/var/spool/postfix/maildrop导致inode满了
    2,邮件开启了–定时任务会不断给root用户发送邮件
    you have new mail in /var/spool/mail/root

    1,脚本使用命令的绝对路径
    2,有关JAVA的定时任务脚本应该把PATH环境变量写在开头
    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    展开全文
  • Linux 定时任务

    2020-02-21 15:31:00
    Linux 定时任务 标签(空格分隔): linux基础 作者:Mr.Wei ##1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统...

    Linux 定时任务

    标签(空格分隔): linux基础

    作者:Mr.Wei


    1.1 定时任务Crond介绍

    Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务,在我们前面的系统安装及开机启动优化的设置中,我们也设置保留了Crond开机自启动,Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
    

    1.2 开始做linux开机自启动服务优化

    必须最低保留的启动服务: 
    crond:定时任务服务 
    network:网络服务 centos7里面无此项,默认开启
    rsyslog:日志服务 
    sshd:远程链接服务
    sysstat:系统监控服务(涉及一系列监控工具)
    
    [root@text ~]# systemctl list-unit-files | egrep "(crond|network|rsyslog|sshd|sysstat).service"
    crond.service                                 enabled 
    rsyslog.service                               enabled 
    sshd.service                                  enabled 
    sysstat.service                               enabled 
    
    #列出所有已经加载单元的活动状态
    [root@text ~]# systemctl list-units --type=service | egrep "(crond|network|rsyslog|sshd|sysstat).service"
      crond.service                      loaded active running Command Scheduler
      network.service                    loaded active running LSB: Bring up/down networking
      rsyslog.service                    loaded active running System Logging Service
      sshd.service                       loaded active running OpenSSH server daemon
      sysstat.service                    loaded active exited  Resets System Activity Logs
    

    1.2.1小结

    常用服务,必须开机启动的服务crond,sshd,network,rsyslog,sysstat

    1.2.2 为什么要使用Crond定时任务?

    为什么要使用定时任务呢?
    我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?
    这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

    11.2.3 linux系统的定时任务

    linux系统中定时任务调度的工作可以分为以下两种情况:

    • linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等,这些任务无需我们人为干预。
    [root@test ~]# ls -l /var/log/messages* #系统日志
    -rw------- 1 root root 175483 Feb 21 09:41 /var/log/messages
    -rw------- 1 root root 290264 Jan  6 11:15 /var/log/messages-20200106
    -rw------- 1 root root 210233 Jan 12 03:29 /var/log/messages-20200112
    -rw------- 1 root root 318452 Feb 13 10:23 /var/log/messages-20200213
    -rw------- 1 root root 268371 Feb 20 09:41 /var/log/messages-20200220
    
    [root@test ~]# ls -l /var/log/secure* 用户登录日志
    -rw------- 1 root root  5980 Feb 21 09:18 /var/log/secure
    -rw------- 1 root root  1694 Jan  6 10:47 /var/log/secure-20200106
    -rw------- 1 root root   661 Jan  9 10:46 /var/log/secure-20200112
    -rw------- 1 root root  1546 Feb 13 09:52 /var/log/secure-20200213
    -rw------- 1 root root 12033 Feb 20 09:03 /var/log/secure-20200220
    
    
    • 用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。
    例如:服务器时间同步
    [root@test ~]# crontab -l
    no crontab for root
    这里没有设置定时任务
    用户执行的任务工作,也就是我们运维管理人员执行的任务工作,因此,这个用户执行的任务是我们今天讨论的重点
    

    1.2.4 linux系统下定时任务软件的种类

    严格的说,linux系统下的定时任务软件还真不少,例如:at,crontab,anacron
    假如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务。要执行at命令,还需要启动一个名为atd的服务才行,在实际工作中,还真没碰到需要用到它的时候。因此,建议大家不要深入研究了,到此我们讲解到这里为止即可。

    crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行,这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。

    • 开机自启动crond服务
    [root@test ~]# systemctl list-unit-files | egrep crond              
    crond.service                                 enabled
    
    [root@test ~]# systemctl status crond
    * crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2020-02-20 16:42:47 CST; 16h ago
     Main PID: 6439 (crond)
       CGroup: /system.slice/crond.service
               `-6439 /usr/sbin/crond -n
    
    Feb 20 16:42:47 mysql01 systemd[1]: Started Command Scheduler.
    Feb 20 16:42:48 mysql01 crond[6439]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 69% if used.)
    Feb 20 16:42:48 mysql01 crond[6439]: (CRON) INFO (running with inotify support)
    
    • 如何查看进程
    [root@test ~]# ps -ef | grep crond
    root       6439      1  0 04:31 ?        00:00:00 /usr/sbin/crond -n
    root       8271   8252  0 09:39 pts/0    00:00:00 grep --color=auto crond
    

    anacron:这个命令主要用于非7*24小时开机的服务器准备的,anacron并不能指定具体时间执行任务工作,而是以天为周期或者在系统每次开机后执行的任务工作。
    它会检测服务器停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一遍。 小结提示:

    • 我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令
    • crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略
    • 几乎每个服务器都会用到crond服务
    • 上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)

    1.3 定时任务Crond使用说明

    1.3.1 指令语法

    crontab [-u user] { -l | -e | -r | -i }
    

    查看系统帮助

    [root@test ~]# crontab --help
    crontab: invalid option -- '-'
    crontab: usage error: unrecognized option
    Usage:
     crontab [options] file
     crontab [options]
     crontab -n [hostname]
    
    Options:
     -u <user>  define user
     -e         edit user's crontab
     -l         list user's crontab
     -r         delete user's crontab
     -i         prompt before deleting
     -n <host>  set host in cluster to run users' crontabs
     -c         get host in cluster to run users' crontabs
     -s         selinux context
     -x <mask>  enable debugging
    
    Default operation is replace, per 1003.2
    

    crontab -l 查看当前用户的定时任务配置

    [root@test ~]# crontab -l
    */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
    
    crontab -e 进入当前用户的定时任务vim编辑模式
    

    crontab -u 用户名 -l 查看指定用户的定时任务设置

    [root@test ~]# crontab -u root -l
    */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
    [root@test ~]# crontab -u weilei -l
    no crontab for weilei
    
    

    1.3.2 指令说明

    通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等企业运维场景工作

    1.3.3 使用者权限及定时任务文件

    文件 说明
    /etc/cron.deny(拒绝) 该文件中所列用户不允许使用crontab
    /etc/cron.allow(允许) 该文件优先级高于cron.deny(默认不存在,一般不用)
    /var/spool/cron/ 所有用户crontab配置文件默认都存在此目录,文件名以用户名命名
    [root@test ~]# cat /etc/cron.deny 
    [root@test ~]# echo "weilei" >> /etc/cron.deny 
    [root@test ~]# cat /etc/cron.deny 
    weilei
    [root@test ~]# su weilei
    [weilei@test root]# crontab -l
    You (weilei) are not allowed to use this program (crontab)
    See crontab(1) for more information
    [weilei@test root]# crontab -e
    You (weilei) are not allowed to use this program (crontab)
    See crontab(1) for more information
    #用户weilei没有设置定时任务的权限
    
    [root@test ~]# ls /var/spool/cron/
    root
    [root@test ~]# cat /var/spool/cron/root
    */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
    

    1.3.4 指令选项说明含义表

    参数 含义
    -l 查看crontab文件内容
    -e 编辑crontab文件内容
    -r 删除crontab文件内容(用的很少)
    -u user 指定使用的用户执行任务

    特别强调:-r参数在生产中很少用,没什么特殊需求必须要用-e进入编辑即可

    补充:

    crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件 使用crontab命令的优点:
    1、crontab可以检查语法
    2、输入方便

    1.3.5 定时任务指令的使用格式

    默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root
    Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段

    用户定时任务实例:

    01 * * * * cmd #每小时的01分钟执行
    02 04 * * * cmd #每天4点的02分钟执行
    22 14 * * 00 cmd #每周日的14点22分执行
    42 04 01 * * cmd #每月1日的4点42分执行
    提示:
    1,cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/weilei.sh
    2,每个列之间必须要有一个空格。多个空格可以么?自己实践
    

    1.3.6 crontab 语法格式中时间段的含义如下表

    段	含义
    第一段	代表分钟  0-59
    第二段	代表小时  0-59
    第三段	代表日,天 1-31
    第四段	代表月份  1-12
    第五段	代表星期,周几 week 0-6 周日(0 or 7)或者 sun  mon tue wed thu fri sat
    提示:时间记忆口诀:分时日月周。取值范围记忆:正常日期时间范围,小学生都会的了
    

    1.3.7 crontab 语法格式中特殊符号含义如下表

    特殊符号 含义
    * *号,表示任意时间都,实际就是“每”的意思
    - 减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd
    逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd
    /n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成/10 * * * cmd,其中,/10,的范围是0-59,因此也可以写成0-59/10

    生产环境常用Crontab专业实例

    2.1书写crontab定时任务多个基本要领

    2.1.1 规范定时任务两例

    例1:每分钟打印一次自己的名字拼音全拼到“/test/log/weilei 自己的名字命名的文件”中。

    [root@test ~]# crontab -l
    */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
    * * * * * /bin/echo "weilei" >> /test/log/weilei
    [root@test ~]# cat /test/log/weilei 
    weilei
    weilei
    
    • 解答知识小结:
    • 定时任务要加注释
    • 如果已经要定向到文件中,结尾不要有>/dev/null 2>&1
    • /server/log目录必须要存在才能出结果,如没有创建这个目录。 - 定时任务中的路径一定要绝对路径
    • crond服务必须首先开启
    • 查看定时任务日志tail /var/log/cron

    例2:每周六,日上午9点和下午14点(执行/test/scripts/weilei.sh).要求:/test/scripts/weilei.sh脚本的功能是打印I miss you wendy并且打印此时时间:

    [root@test ~]# crontab -l
    
    00 9,14 * * 0,6 /bin/sh /server/scripts/chensiqi.sh >/dev/null 2>&1
    

    步骤:

    • 创建对应的目录
    [root@test ~]# mkdir /test/scripts -p
    
    • 命令行测试
    [root@test ~]# date +'%Y-%m-%d %H:%M:%S'
    
    • 书写脚本
    [root@test ~]# cat /test/scripts/weilei.sh
    #!/bin/bash
    Date=`date +'%Y-%m-%d %H:%M:%S'`
    /bin/echo "I miss you wendy at $Date"
    
    • 命令行测试脚本
    [root@test ~]# sh /test/scripts/weilei.sh
    I miss you wendy at 2020-02-21 11:44:13
    
    • 编辑定时任务(让他快速执行*****)
    [root@test ~]# crontab -l
    # At 9:00 a.m. and 14:00 p.m. on Saturday and Sunday (execute / test / scripts / WeiLei. SH). The function of / test / scripts / weilei.sh script is to print the date of the day
    # The autor is weilei
    00 9,14 * * 0,6 /bin/sh /test/scripts/weilei.sh >>/test/log/test1
    
    ##测试定时任务
    [root@test ~]# /bin/sh /test/scripts/weilei.sh >>/test/log/test1
    [root@test ~]# cat /test/log/test1 
    I miss you wendy at 2020-02-21 14:57:02
    

    定时任务一定要尽量用脚本实现。 命令行操作成功,然后放入脚本执行(/bin/sh 脚本全路径)成功,最后在配置任务复制操作成功的命令行脚本,再定时任务里黏贴配置。 加/bin/sh执行脚本 /bin/sh /server/script/chensiqi.sh 要把脚本的执行结果定向到空或者是一个文件中,不要什么都不加。

    2.1.2 定时任务书写要领

    要领1:为定时任务规则加必要的注释

    要领2:执行shell脚本任务前加/bin/sh

    要领3:定时任务命令或脚本的结尾加>/dev/null 2>&1

    要领4:定时任务命令超过2条的命令执行,最好用脚本文件

    * * * * * sleep 1;echo chensiqi >> /server/log/chensiqi.log
    标准写法:
    [root@chensiqi /]# cat /server/scripts/log.sh
    sleep1
    echo weilei >> /server/log/weilei.log
    定时任务写法:
    * * * * * /bin/sh /server/scripts/log.sh >dev/null 2>&1
    

    要领5:在指定用户下执行相关定时任务

    需要root权限执行的任务可以登录到root用户下然后设置,如果不需要root权限,可以登录到普通用户下(也可以直接在root下crontab -u weilei -e 的写法直接设置),然后设置。这里要特别注意不同用户的环境变量问题,如果是调用了系统环境变量/etc/profile(如生产场景中java程序的定时任务),最好在程序脚本中将用到的环境变量重新export下。
    

    要领6:生产任务程序不要随意打印输出信息。

    尽量关闭取消没有用的输出(命令的执行过程)
    1,定向到文件
    2,>/dev/null 2>&1
    在开发定时任务程序或脚本时,在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果确实需要输出日志,可定向到执行日志文件里,避免产生系统垃圾。
    

    要领7:定时任务命令或程序最好写到脚本里执行

    要领8:定时任务执行的脚本要规范路径

    要领9:配置定时任务规范操作过程,防止出错。

    1,首先要在命令行操作成功,然后复制成功的命令到脚本里,在各个细小环节减少出错的机会。
    2,然后测试脚本,测试成功后,复制脚本的规范路径到定时任务配置里,不要手敲。
    3,先在测试环境下测试,然后正式环境规范部署
    
    小结书写定时任务的若干要领方法:
    要领1:为定时任务规则加必要的注释。
    要领2:执行shell脚本任务前加/bin/sh
    要领3:定时任务命令或脚本结尾加>/dev/null 2>&1
    要领4:定时任务命令或程序最好写到脚本里执行
    要领5:在指定用户下执行相关的定时任务
    要领6:生产任务程序不要随意打印输出信息
    要领7:定时任务执行的脚本要规范路径(/server/scripts)
    要领8:配置定时任务规范操作过程
    

    2.1.3 定时任务不加>/dev/null 2>&1的后果

    如果定时任务规则结尾不加>/dev/null
    2>&1等命令配置,有可能有大量输出信息,时间长了,可能由于系统未开启邮件服务而导致邮件临时目录/var/spool/clientmqueue 文件数猛增的隐患发生,大量文件会占用大量磁盘inode节点(每个文件占一个inode),以致磁盘inode满而无法写入正常数据

    提示:上面的>/dev/null 2>&1 写法也可以写成1>/dev/null 2>/dev/null,例:$JAVA-jar $RESIN_HOME/lib/resin.jar $ARGS stop 1>/dev/null 2>/dev/null 此写法来自resin服务默认启动脚本
    上述是centos5.8的情况,假如系统不安装sendmail(Centos6.4),那是不是就没有上述问题了?
    企业案例::如果定时任务规则结尾不加>/dev/null 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。
    当一个定时任务执行的时候,就会给系统发一封邮件。sendmail邮件服务,经常是关闭的,所以定时任务发送的邮件就会临时堆在/var/spool/clientmqueue/,时间长了,/var/spool/clientmqueue/文件数特别多。Centos5的时候一定会有这个问题。
    

    Centos6呢?

    定时任务没定向到空,postfix服务没有开启的话,那么每执行一次定时任务,/var/spool/postfix/maildrop/文件夹下就会产生一个小文件,随着时间累计,就会越来越多,导致出现问题。
    如果开启了邮件服务,就会直接给root发送邮件。
    解决方法:
    1,删除大量小文件/var/spool/postfix/maildrop/下所有文件(ls|xargs rm -f)
    2,临时开启postfix(sendmail)服务
    3,vi /etc/crontab:将‘MAILTO=root’替换成‘MAILTO=“”’然后service crond restart即可。(如果还不行,crontab -e 第一行增加MAILTO=“”)
    
    目录名 解释
    /var/spool/clientmqueue centos5.xsendmail临时邮件文件目录,有很多原因会导致这个目录碎文件很多,比如crontab定时任务命令不加>/dev/null等,并且sendmail服务没开。工作中偶尔会因为该目录文件太多,导致/var所在的分区inode数量被消耗尽,无法写入文件的情况
    /var/spool/postfix/maildrop/ centos6.x postfix临时队列目录/var/spool/postfix/maildrop/默认定时任务执行时会给root发邮件,如果邮件服务不开,就会把邮件推到上述目录。当定时任务结尾不加>/dev/null 2>&1的时候,定时任务就会在上述目录存大量小文件

    2.2 定时任务的系统配置文件/etc/crontab

    [root@test ~]# 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
    SHELL=/bin/bash #shell解释器
    PATH=/sbin:/bin:/usr/sbin:/usr/bin #PATH环境变量
    MAILTO=root #定义如果任务有输出,发给哪个用户,默认发给root用户
    HOME=/ #定时任务执行命令从根目录开始
    

    轮询的日志(日志轮询):周期性切割日志 系统的定时任务+logrotate

    [root@test ~]# cat /etc/cron.daily/logrotate 
    #!/bin/sh
    
    /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    EXITVALUE=$?
    if [ $EXITVALUE != 0 ]; then
        /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    fi
    exit 0
    
    
    [root@test ~]# ll /var/log/messages*
    -rw------- 1 root root 188725 Feb 21 15:20 /var/log/messages
    -rw------- 1 root root 290264 Jan  6 11:15 /var/log/messages-20200106
    -rw------- 1 root root 210233 Jan 12 03:29 /var/log/messages-20200112
    -rw------- 1 root root 318452 Feb 13 10:23 /var/log/messages-20200213
    -rw------- 1 root root 268371 Feb 20 09:41 /var/log/messages-20200220
    [root@test ~]# ll /var/log/secure*
    -rw------- 1 root root  6644 Feb 21 11:11 /var/log/secure
    -rw------- 1 root root  1694 Jan  6 10:47 /var/log/secure-20200106
    -rw------- 1 root root   661 Jan  9 10:46 /var/log/secure-20200112
    -rw------- 1 root root  1546 Feb 13 09:52 /var/log/secure-20200213
    -rw------- 1 root root 12033 Feb 20 09:03 /var/log/secure-20200220
    

    2.3 企业生产场景如何调试crontab定时任务

    2.3.1 增加执行任务频率调试任务(某些任务不能用于生产环境)

    在调试时,把任务执行频率调快一点,如:每分钟,每5分钟执行一次,或者比当前时间推迟5分钟以后,看能否执行,是不是按照你想象的去执行了,如果正常没问题了,在改成需要的任务的执行时间。
    
    强调:有些计划任务是不允许频繁执行的,例如:定时往数据库里插入数据,这样的任务就要在测试机上测试好,然后部署到正式线上,这样正式工作出问题的机会就少了。
    
    规范的公司开发和运维人员操作流程,个人的开发配置环境-->办公室的测试环境-->idc机房的测试环境-->idc机房的正式环境。
    
    使用log文件调试任务
    
    /bin/sh /server/scripts/del_sys_file.sh >/tmp/file.log 2>&1
    

    2.3.2 调整系统时间调试任务(不能用于生产环境)

    如字面意思,调整系统时间,以达到接近触发计划任务的目的进行调试。

    2.3.3 通过脚本日志输出调试定时任务

    在脚本中加入日志输出,然后把输出打到指定的日志中,然后观察日志内容结果,看是否执行或正确执行。或像下面的内容把脚本结果定向到一个log文件里,重定向>即可,不需要>>追加,这样日志就不会一直变大。

    2.3.4 注意环境变量导致的定时任务故障

    PATH 在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。

    例:
    [root@test ~]# cat /scripts/resin/shell/Task.sh
    #!/bin/bash
    export JAVA_HOME=/application/jdk1.6
    export PATH=$JAVA_HOME/bin:$PATH
    export SH_HOME=/application/resin/webapps/ROOT/
    export LIB=$SH_HOME/WEB-INF/lib
    以下省略...
    
    定时任务:
    00 09,14 * * * nohup /scripts/resin/shell/Task.sh & >/app/log.log 2>&1
    提示:命令也要尽可能写全路径。
    

    2.3.5 通过crond定时任务服务日志调试定时任务

    查看定时任务服务日志

    [root@test ~]# tail -10 /var/log/cron
    Feb 21 14:56:36 mysql01 crontab[9503]: (root) BEGIN EDIT (root)
    Feb 21 14:56:39 mysql01 crontab[9503]: (root) END EDIT (root)
    Feb 21 14:56:42 mysql01 crontab[9505]: (root) LIST (root)
    Feb 21 14:57:01 mysql01 crond[6439]: (root) RELOAD (/var/spool/cron/root)
    Feb 21 15:00:01 mysql01 CROND[9535]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    Feb 21 15:01:01 mysql01 CROND[9541]: (root) CMD (run-parts /etc/cron.hourly)
    Feb 21 15:01:01 mysql01 run-parts(/etc/cron.hourly)[9541]: starting 0anacron
    Feb 21 15:01:01 mysql01 run-parts(/etc/cron.hourly)[9550]: finished 0anacron
    Feb 21 15:10:02 mysql01 CROND[9581]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    Feb 21 15:20:01 mysql01 CROND[9587]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    
    展开全文
  • linux 定时任务

    2018-05-02 22:02:19
    定时任务就是系统按设定时间执行...在linux命令行界面中键入命令:crontab -e出来的就是vm/vim打开的文件,文件中每一行就是一个定时任务(如果是空白就是没有定时任务),定时任务的编辑非常简单,如何编辑?请先...

    web开发基本上都是客户端触发访问,然后php脚本执行的!而定时任务就是系统按设定时间执行某个程序。

    比如业务要求每天8点推送消息给客户端。

    在linux系统中都默认安装了crontab 我们就用crontab来实现。

    在linux命令行界面中键入命令:crontab -e

    出来的就是vm/vim打开的文件,文件中每一行就是一个定时任务(如果是空白就是没有定时任务),定时任务的编辑非常简单,如何编辑?请先看看如下一行即可!

    00 */4 * * * /user/bin/php /home/wwwroot/default/xxxxx.com/xxxyy.php

    此条语句的意思就是每4个小时的0分钟开始 通过php(php的安装路径) 执行 xxxxyy.php脚本(php脚本的位置)

    00*/4***  此部分是表示执行时间的   分 时 日 月 周

    第1列表示分钟1~59 每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12

    第5列标识号星期0~6(0表示星期天)

    01****  表示当前时间为01分的时候执行,这个规则大家一看就懂了!

    另外我们就是路径(绝对路径)

    PHP的安装路径(用which php命令或者php -v查找php安装路径)

    脚本的路径(你执行的PHP脚本写哪里,就是哪个路径了)

    编写好了定时任务 :wq 保存退出!



    展开全文
  • Linux系统定时任务

    万次阅读 2018-08-24 16:55:42
    Linux系统定时任务 定时任务Crond ...Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定...

    Linux系统定时任务

    定时任务Crond

        Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。

    Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。 

     

    程序文件:程序代码组成,但是没有在计算机内执行。当前没有执行

    进程:所谓的进程就是计算机中正在执行的程序

    守护程序或守护进程:守护进程就是一种运行的程序

     

    crontab -l用来查看定时任务信息

     

    下面是定时任务的使用指定格式:

    # 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

    简单点儿记就是分时日月周,*代表每的意思

    例:

    ①30 3,12 * * * /bin/sh /scripts/oldboy.sh

    每天凌晨3点半和中午12点半的时刻执行/scripts/oldboy.sh脚本

    ②30 */6 * * * /bin/sh /scripts/oldboy.sh

    每6小时30分执行一次/scripts/oldboy.sh脚本

    ③30 8-18/2 * * * /bin/sh /scripts/oldboy.sh

    在每天的8点到18点之间,每隔2小时的   半点时刻执行/scripts/oldboy.sh

    ④30 21 * * * /application/apache/bin/apachectl graceful

    每天晚上9点半重启apache

    ⑤ 45 4 1,10,22 * * /application/apache/bin/apachectl graceful

    每月1日10日22日的4点45分重启apache

    ⑥ 10 1 * * 6,0 /application/apache/bin/apachectl graceful

    每周六和周日的凌晨1点10分重启apache

    ⑦ 0,30 18-23 * * * /application/apache/bin/apachectl graceful

    每天的18点到23点每隔30分钟重启一次apache。

    提示:最后一次执行任务时23:30分

    ⑧ 0 */1 * * * /application/apache/bin/apachectl graceful

    每小时重启一次apache

    ####⑨ * 23,00-07/1 * * * /application/apache/bin/apachectl graceful

    每天的23点与0-7点之间每分钟重启一次apache

    ⑩ 00 11 * 4 1-3 /application/apache/bin/apachectl graceful

    每年的4月份每周的周1到周3每天的11点整重启一次apache

    //一般周和日尽量不要同时用,否则可能达不到想要的效果

    例:8月9号上午10:00开学:

    00 10 09 08 *  

    每周日,下午7:30上晚自习:

    30 07 * * 0

    工作中调试定时任务的方法:

    1. 增加执行任务频率调试任务

       每分钟或者系统时间之后5分钟执行,看结果对不对

       某些任务不能用于生产环境没有测试机会

    代码、配置变更发布流程:

    个人开发环境--办公室测试环境--IDC机房测试环境--IDC正式环境(分组,灰度发布)

    1. 调整系统时间调试任务(不能直接用于生产环境),保持5分钟

    2. 通过脚本日志输出调试定时任务

    3. 注意一些任务命令带来的问题

    例如:

    标准输出多了

    */1 * * * * echo “==” >> /emp/oldboy.log >/dev/null 2>&1)

    百分号转义(脚本无需转义)

    */1 * * * * tar zvf /tmp/oldboy_$(date +%F).tar.gz /etc/hosts

    1. 注意:环境变量导致的定时任务故障(java)

    2. 通过crond定时任务服务日志调试定时任务(/var/log/oron)

    3. 其他问题调试的办法

    展开全文
  • Linux定时任务详解

    2018-10-29 20:41:15
    linux的定时任务crond(crontab)服务 ...2、linux定时任务分类: 1)系统自身的定期执行的任务; 2)用户执行的定时任务。 a)at适合执行一次就结束的调度任务。突发性的任务,每天晚上。了解即可。依赖服务atd. b...
  • linux定时任务(crontab)

    千次阅读 2021-02-23 10:53:19
    linux crontab定时任务 ,crontab发送邮件
  • 2.添加定时任务 有两种方法 a.修改文件 vim /etc/crontab 然后添加定时任务,注意环境变量和用户信息, 脚本无法执行问题 如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)...
  • Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。...
  • 1.2 Linux系统Crond的定时任务 1.3 Linux系统下定时任务软件种类 2 定时任务Crond使用说明 2.1 crontab指令语法 2.2 crontab命令说明 2.3 使用者权限及定时任务文件 2.4 crontab指令选项说明含义表 2.5 定时任务...
  • 大数据-linux定时任务

    2019-02-11 21:56:34
    定时任务使用crontab 命令 crontab  -e 编辑定时任务列表 -l 查看定时任务列表 -r 移除定时任务 定时任务编辑格式 * * * * * command 五个星号从左到右依次表示 分钟 小时 天 月 星期 01 02 28 1 * /bin/...
  • 第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装...
  • Linux crond定时任务

    2020-11-27 19:05:52
    Crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。 秒级任务: crond无能为力 解决方法:自己写守护进程shell循环 2. 在centos7中写一...
  • Linux 系统定时任务

    2019-03-22 17:48:58
    周期性的执行任务计划的软件,linux 定时任务的常用软件crond。 使用定时任务软件,可以每天,每小时按你需求重复的执行一项工作。 例如:备份 都是0点以后, 需要写一个程序实现自动备份,然后让定时任务软件帮你...
  • 来完成对某个接口运转情况的监控,使用的方法 是用Linux里的Crontab定时器,查阅了很多资料,资料讲的不是太全,有些也有错误,在其中我也绕了很多弯路,故记录一下自己使用Crontab来实现定时任务的过程,希望能与...
  • 1.定时任务crond介绍1.1 crond是什么crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护进程执行。 1.2 为什么要使用crond...
  • 1、为定时任务规则加必要的注释 2、执行shell脚本任务前加/bin/sh 3、定时任务命令或脚本的结尾加>/dev/null 2>&1或定向到一个文件 4、定时任务命令超过2条的命令执行,用脚本文件更好 5、在指定用户下...
  • Linux定时任务(crond)

    2018-02-10 14:23:00
    1、Crond定义  crond是Linux系统中用来定期执行命令或指定程序的一种服务或软件。  (1)linux系统自身定期执行的任务...定时任务的命令是crontab,其守护进程是crond(服务运行的程序) NAME crontab - m...
  • Debian定时任务管理cron设置   (最简便每天定时关机办法:1. gedit /etc/crontab 2.在文件最后添加一行:01 22 * * * root halt -p #表示每天22:01关机) 任何系统管理员权限内的任务都必须位于 /etc 内,因为它们...
  • cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: /sbin/service crond start //启动服务  /sbin/...
  • Linux设置定时任务

    2019-10-09 08:43:12
    什么是crond? crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。...如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时服务就像我们的闹钟一样。crontab是用于设置...
  • Linux定时任务

    2017-05-09 09:50:25
    定时任务Crond介绍 ...Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们
  • 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务,在我们前面的系统安装及...
  • 原文出处:linux定时任务crond那些事! 来自老男孩教育的运维班面授课程内容,17期依良同学作业整理而得! 1.定时任务crond介绍 1.1 crond是什么 crond是linux系统中用来定期执行命令或指定程序任务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,302
精华内容 7,720
关键字:

linux定时任务规则

linux 订阅