Linux計劃任務

在Linux中能實現計劃任務的主要有三個,分別是at,batch,crongit

at

    at命令用於執行一次性計劃任務,使用/etc/at.allow(白名單)、/etc/at.deny(黑名單)控制容許那些用戶使用at命令,若是兩個文件都不存在則只有root用戶能使用。
    centos7默認存在/etc/at.deny文件,此文件爲空,表示全部用戶可用at任務.
    vim

使用格式:
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 centos

    使用mail/mailx命令輸入相應的編號便可查看.bash

    

batch

與at同樣,是一次性任務,其不須要指定時間,當系統空閒時自動執行命令.不多使用.
用法:
batch 執行回車,進入交互式界面,按ctrl+d提交任務
    ide

crontab

    crontab,用於提供週期性計劃任務
相關程序包:
    cronie 主程序包,提供crond
    cronie-anacron 輔助程序包,用於監視crond是否正確執行, 例如,當執行任務時系統關機了,crond沒法執行任務,當系統啓動後被anacron監測到crond執行失敗,則當即執行一遍任務.
    crontabs 提供維護工具工具

[root@localhost ~]# 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
配置文件格式:centos7

系統任務 /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分鐘運行一次)code

示例
創建系統任務: 
    [root@localhost cron.d]# vim /etc/crontab 
    * */3 * * *    gentoo  /bin/bash  wall <123.txt
    0 */3 * * *    gentoo /bin/bash   wall <123.txt 
    第一個是錯誤示例,當大範圍爲*時,小範圍要給具體值
創建用戶任務:
root用戶下爲別的用戶創建用戶任務: (只有root能爲別的用戶建任務)
    [root@localhost ~]# crontab -u gentoo
普通用戶本身創建用戶任務:
    [hurn@localhost ~]# 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
相關文章
相關標籤/搜索