Linux计划任务

Posted

tags:

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

    在Linux中能实现计划任务的主要有三个,分别是at,batch,cron.

* at

    at命令用于执行一次性计划任务,使用/etc/at.allow(白名单)、/etc/at.deny(黑名单)控制允许那些用户使用at命令,如果两个文件都不存在则只有root用户能使用。
    centos7默认存在/etc/at.deny文件,此文件为空,表示所有用户可用at任务.
    

使用格式:
at  [option]  time 
    -m  at的工作完成后不管有没有输出,都用email通知使用者工作完成。
    -l  类似于atq,列出at的任务列表
    -d  类似于atrm,删除at任务
    -c #    列出id为#的任务实际运行的工作指令
TIME格式:
    HH:MM       
    HH:MM   YYYY-MM-DD  
    HH:MM +* Unit[minutes、hour、day、weeks]  #在某个时间再加个时间
例如 at  now  +5 minutes   五分钟后执行任务
    at  now +5 minutes 
    echo "hello world" >/dev/pts/4      #输出到终端

    注意:at所有任务执行完后都将结果发送邮件给用户,默认邮件存放地址为/var/spool/mail/username

    使用mail/mailx命令输入相应的编号即可查看.

    

* batch

与at一样,是一次性任务,其不需要指定时间,当系统空闲时自动执行命令.很少使用.
用法:
batch 执行回车,进入交互式界面,按ctrl+d提交任务
    

* crontab

    crontab,用于提供周期性计划任务
相关程序包:
    cronie 主程序包,提供crond
    cronie-anacron 辅助程序包,用于监视crond是否正确执行, 例如,当执行任务时系统关机了,crond无法执行任务,当系统启动后被anacron监测到crond执行失败,则立即执行一遍任务.
    crontabs 提供维护工具

[[email protected] ~]# rpm -qa | grep cron
cronie-1.4.11-14.el7_2.1.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-anacron-1.4.11-14.el7_2.1.x86_64

相关文件:
     /etc/cron.allow 运行执行crond的用户列表
     /etc/cron.deny 拒绝执行crond的用户列表
    /etc/crontab 系统任务文件
    /etc/cron.d/ 系统任务文件夹
计划任务:
    系统cron任务,通常用于执行系统维护操作 /etc/crontab /etc/cron.d/*
    用户cron任务,通常用于用户操作任务 /var/spool/cron/user_name
配置文件格式:

    系统任务 /etc/crontab
         *  *  *  *  * user-name  command
    用户任务 /var/spool/cron/user_name
         *  *  *  *  *   command        #区别在于不用指定用户
         *分别代表 minutes, hour ,day of mouth, month, day of week 

时间表示方法:
    1)具体时间,一个特定的值
    2) ,表示所有值,每时每刻都执行任务
    3)离散取值,逗号分隔 “#,#”
    4)连续取值,短减号分隔 “#-#”
    5)在指定的范围上指定步长, “
/3” (每3分钟运行一次) , “20-50/3” (在20-50分钟内每隔3分钟运行一次)

示例
建立系统任务: 
    [[email protected] cron.d]# vim /etc/crontab 
    * */3 * * *    gentoo  /bin/bash  wall <123.txt
    0 */3 * * *    gentoo /bin/bash   wall <123.txt 
    第一个是错误示例,当大范围为*时,小范围要给具体值
建立用户任务:
root用户下为别的用户建立用户任务: (只有root能为别的用户建任务)
    [[email protected] ~]# crontab -u gentoo
普通用户自己建立用户任务:
    [[email protected] ~]# crontab -e

默认情况下,crond执行的所有命令输出都将以邮件方式发送给相应的用户,如果不想发到邮箱则需要使用重定向:
command >/dev/null  正确的扔掉,错误的发送邮件
command &>/dev/null 所有的都扔掉

当用户要实现秒级别的任务或则不能被相应*的取值范围整除的数,则可以通过sleep命令实现.
sleep   # (smhd)  s秒,m分,h时,d天
例如实现每3秒执行一次ps命令:
* * * * *  sleep 3s ; ps 
例如每7分钟执行一次ps命令:
(分钟的取值范围为1-60,不能被7整除,实际上最后一轮并没有执行)
* * * * * sleep  7m ; ps

以上是关于Linux计划任务的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统管理10——进程和计划任务管理

linux中的进程于计划任务管理

Linux/Centos7系统管理之进程与计划任务管理

Linux——进程和计划任务管理

Fragment 中的计划任务将 getActivity 返回为 null

Linux系统之守护进程和计划任务