linux計劃任務

linux計劃任務、周期性任務執行

未來的某時間點執行一次某任務:at,batch

周期性運行某任務:crontab

執行結果: 會通過郵件發送給用戶, 存放在/var/spool/mail/UserName

~]# ss -tnl 或者 ~]# netstat -tnlp  查看是否有25號端口打開,來判斷本機的郵件服務是否正常打開

本地電子郵件服務:

smtp協議: simple mail transmission protocol,簡單郵件傳遞協議

pop3: post office protocol

imap4: internet mail access protocol

mail命令:

mailx – send and receive Internet mail (CentOS 7)

MUA: Mail User Agent, 用戶收發郵件的工具程序

mailx [-s 'SUBJECT(標題)'] UserName[@hostname]

郵件正文的生成:

(1) 交互式輸入, . 單獨成行可以表示正文結束, ctrl + d提交亦可

(2) 通過輸入重定向

(3) 通過管道

at 命令  

需要atd服務啟動

/var/spool/at

at [option]… [TIME]

TIME:

HH:MM[YYYY-mm-dd]

noon: 中午

midnight: 午夜

teatime: 下午4點

tomorrow: 明天

now + #: 指定從現在延遲多久后執行作業任務

UNIT(單位): minutes, hours, days, weeks

at的作業有隊列, 用單個字母表示, 默認都使用a隊列

常用選項:

-l: 查看作業隊列, 相當于atq

-f /Path/From/File: 從文件中讀取作業任務, 而不用再交互式輸入

-d #: 刪除指定號碼的任務, 相當于atrm #

-c #: 查看指定號碼的作業的具體內容 

-q QUEUE: 指明隊列

注意: 作業的執行結果是以郵件發送給提交作業的用戶

/etc/at.allow文件比/etc/at.deny文件的優先級高

batch 命令

batch會讓系統自行選擇在系統資源較空閑的時間去執行指定的任務

周期性任務計劃: cron

/var/spool/cron/username

需要服務程序始終處于運行狀態: 

cronie: 主程序包, 提供了crond守護進程及相關輔助工具

/etc/cron.allow和 /etc/cron.deny

確保crond守護進程(daemon)處于運行狀態;

CentOS 7: systemctl status crond.service

CentOS 6: service crond status

向crond提交作業的方式不同于at, 需要使用專用的配置文件, 并且此文件有固定格式, 不建議使用文本編輯器直接編輯此文件, 要使用crontab命令

crond任務分為兩類

系統crond任務: 主要用于實現系統自身的維護

手動編輯: /etc/crontab 文件

用戶crond任務: 

命令: crontab 命令

系統cron的配置格式:

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

注意:

(1)每一行定義一個周期性任務, 共七個字段

*  *  *  *  *: 定義周期性時間 

user-name: 運行任務的用戶的身份

command to be executed: 要執行的任務

(2)此處的環境變量不同于用戶登錄后獲得的環境變量, 因此, 建議命令使用決定路徑, 或者自定義環境變量PATH

(3) 執行結果郵件發送給MAILTO指定的用戶

用戶crond的配置格式

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

# |  |  |  |  |

# *  *  *  *  * command to be executed

注意: 

(1) 每行定義一個cron任務, 共6個字段, 沒有用戶名

(2)此處的環境變量不同于用戶登錄后獲得的環境變量, 因此, 建議命令使用決定路徑, 或者自定義環境變量PATH

(3) 郵件發送給當前用戶

時間表示法:

(1) 特定值

給定時間點有效取值范圍內的值; 

注意: day of week和day of month一般不同時使用

(2) * 

給定時間點上有效取值范圍內的所有值; 表示"每…"

(3) 離散取值: ,

在時間點上使用逗號分隔的多個值

#,#,#

(4) 連續取值: – 

在時間上使用 – 連接開頭和結束

#-#

(5) 在指定時間點上, 定義步長: /

*/#: #即步長

*/2: 

注意:

(1)指定的時間點不能被指定的步長整除時, 其意義將不存在

(2) 最小時間單位為"分鐘", 想完成"秒"級任務, 需要額外借助于其他機制

定義成每分鐘任務: 再利用腳本實現在每分鐘之內, 循環執行多次

示例:

(1) 3 * * * *: 每小時的第3分鐘執行

(2) 3 4 * * 5: 每周五的 4:03 執行

(3) 5 6 7 * *: 月任務, 每月7號的 6:05執行

(4) 7 8 9 10 *: 年任務, 每年的10月9日8:07執行

(5) 9 8 * * 3,7: 每周三、日的8:09執行

(6) 0 8,20 * * 3,7: 小于指定時間點的時間要給與一個時間點

(7) 0 9-18 * * 1-5:

(8) */5 * * * *: 每5分鐘執行一次某任務

crontab 命令:

crontab [-u user] [-l | -r | -e] [-i] [-s]

-e: 編輯任務, 自動調用編輯器打開模板文件

-l: 列出自己的所有任務

-r: 移除所有任務, 即刪除crontab文件/var/spool/cron/USERNAME文件;

-i: 交互式刪除任務, 配合 -r 選項使用

-u user: root用戶可為指定用戶指定計劃任務

注意: 運行結果以郵件通知當前用戶; 如果拒絕接收郵件

(1) COMMAND > /dev/null: 只發送錯誤郵件

(2) COMMAND &> /dev/null

注意: 定義COMMAND時, 如果命令需要用到 %, 需要對其轉義; 但放置于單引號中的 %不用轉義 

如果某任務在指定的時間因關機未能執行, 下次開機不會自動執行, 如果期望下次開機后無論是否到了相應時間點都要執行一次, 可使用anacron實現

原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/47269

(0)
black_fishblack_fish
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • N25-第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限。 1.  [root@jizo etc]# ls –d skel 2.  skel 3.  [root@jizo etc]# cd /home 4.  [root@jizo …

    Linux干貨 2016-12-26
  • FHS文件系統各目錄功能

    / 根目錄。 包含了幾乎所的文件目錄。相當于中央系統。進入的最簡單方法是:cd /。 /boot 引導程序,內核等存放的目錄。 這個目錄,包括了在引導過程中所必需的文件,引導程序的相關文件(例如grub,lilo以及相應的配置文件以及Linux操作系統內核相關文件(例如vmlinuz等一般都存放在這里。在最開始的啟動階…

    Linux干貨 2016-10-20
  • 沒有自動ip解決辦法

    用虛擬機下載好centos6.9后,本來想查看ip地址,結果發現沒有自動獲取ip地址,在網上找了很多方法都不行,問題如下: 用命令ifconfig查看ip地址,發現沒有,如下 查看eth0如下 解決辦法如下: 1、關閉NetworkManager服務 2、關閉NetworkManager開機啟動 3、添加 /etc/sysconfig/network-scr…

    2017-07-16
  • 第七周作業,分區格式化及一些腳本練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;       fidsk劃分10G分區,partx命令強制內核重新讀磁盤分區表,cat /proc/partitions是否內核識別到新分區 …

    Linux干貨 2017-02-01
  • 馬哥教育網絡第20期—IO類型與IO模型

    IO類型與IO模型 IO類型 同步與異步(synchronous,asynchronous):關注消息通知機制 同步:進程發出系統調用之后,不會立即有返回信息,但是一旦有返回信息,則一定是最終結果. 異步:進程發出系統調用之后,會有立即返回結果,但不是最終的結果,當內核處理完成之后,內核通過通知機制通知進程,該系統調用已完成. 阻塞與非阻塞(blocking…

    Linux干貨 2016-06-26
  • Linux基礎概念和基礎命令

    計算機基礎:     一、計算機系統組成               二、馮諾依曼體系              三、服務器存儲類…

    Linux干貨 2016-07-22
欧美性久久久久