Linux 計劃任務快速理解入門

計劃任務簡單來說是一個我們規定的時間去執行我們需要的腳本、命令及需要Linux做的事情。

以前寫過一個腳本,由于當時沒有學過計劃任務,所以寫起來特別痛苦,該腳本的需求是每天晚上11:00 備份/etc目錄

當時特別小白,于是這么寫的:

Vim
rebootScript ‘

#!/bin/bash

while
true;do

If [ -d
/app/etc_backup ];then

cp -a /etc /app/etc

else

mkdir -p /app/etc_backup && cp -a /etc /app/etc_backup

fi

sleep 24h

done

這個sleep一直困擾我,當時不得不在腳本里加死循環,為了每24小時后執行,加了sleep
24h 。這樣寫非常LOW并且十分占用資源的。

相信有很多人都是有過這種遭遇,所以這時我們就十分需要一個系統專門維護的計劃任務。我們不必在腳本里去考慮什么時間執行,而把所有的執行權限交給系統處理。于是at和cron 就此誕生。

at 對于我們來說,使用不是特別頻繁,功能上只執行一次我們設定的計劃任務。執行之后釋放。

at任務

包:at

at命令:at [option]
TIME

常用選項:

-V 顯示版本信息:

-l: 列出指定隊列中等待運行的作業;相當于atq

-d: 刪除指定的作業;相當于atrm

-c: 查看具體作業任務

-f /path/from/somefile:從指定的文件中讀取任務 -m:當任務被完成之后,將給用戶發送郵件。

用法:

at時間格式

HH:MM 比如 10:00

即在今日的 10:00 進行,若該時刻已過,則明天此時執行任務

HH:MM
YYYY-MM-DD 02:00 2016-09-20

規定在這一天進行該項任務

now +  1 minutes 一分鐘以后

02pm + 3 days

3天后的下午2

at 是交互命令

要執行的命令輸入完以后需要按ctrl+D 保存;

注意:如果執行的命令有輸入則需要重定向到/dev/null

Cron

周期性任務計劃

cronie: 概念太多,簡單來說就是可以在有規律的時間內重復執行我們要做的事

比如:我們需要每天做備份,目標 /etc 
;  /tmp

等等。那么我們就要用到Cron了

相關的程序包:

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

cronie-anacron:cronie的補充程序,用于監控cronie任 務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務

就是說我們需要安裝這個cronie包并且打開cron的服務

crontabs:包含CentOS提供系統維護任務

: 'bin : /usr/sbin : /usr/bin For details see mn 4 crontabs Example of job def init ion: minute (B - 53) - hour (B - 23) day of mnth (1 - 31) - mnth (1 - 12) OR , apr - day of 'Eek (B - 6) (Sunday-a or 7) OR , sat user-nam conmnd to be executed

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

例如:每天晚上10點運行echo命令;

0 */22 * * * centos /bin/echo “Hello world!”

這里加斜杠意思是 每個; */22 :每天22點都要執行

時間表示法:

(1) 特定值

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

  
                
  (2)  給定時間點上有效取值范圍內的所有值 表示“每.

  
                       (3) 離散取值 #,#,#

  
                   
(4) 連續取值 #-#

  
                    
(5) 在指定時間范圍上,定義步長 /#: #即為步長  
        

@reboot

@yearly

@annually

@monthly

@weekly

@daily

@hourly

        
系統的計劃任務設置位置:

/etc/crontab /etc/cron.d/ 配置文件

/etc/cron.hourly/ 腳本

/etc/cron.daily/ 腳本

/etc/cron.weekly/ 腳本

/etc/cron.monthly/腳本

系統級命令一般用戶是不能訪問添加的,因此周期計劃任務也有用戶級別設置;

用戶cron:

crontab命令定義,每個用戶都有專用的cron任務文件:

/var/spool/cron/USERNAME

crontab命令:

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

-l: 列出所有任務;

-e: 編輯任務;

-r: 移除所有任務;

-i:同-r一同使用,以交互式模式移除指定任務

-u user: 僅root可運行,指定用戶管理cron任務

控制用戶執行計劃任務,設置黑白名單:

/etc/cron.{allow,deny}

at和crontab

一次性作業使用 at

重復性作業使用crontab

 

 

 

 

 

 

 

 

 

 

 

 


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

(0)
曉楠曉楠
上一篇 2017-05-15
下一篇 2017-05-16

相關推薦

  • Linux軟件包管理器—rpm

    rpm 最開始是Red Hat Package Manager 之意,原用在Red Hat Linux一款軟件包管理器,先在已被許多其他Linux 發行商使用,成為主流包管理器,rpm包的文件格式也寫進Linux標準庫中,所以rpm 現在遞歸意為RPM Package Manager。rpm的誕生使得在Linux上管理軟件包變得方便許多,rpm功能強大,可完成構建、安裝、查詢、校驗、升級和卸載軟件包。

    Linux干貨 2016-08-26
  • rpm與yum的簡單命令

                                  …

    Linux干貨 2017-04-18
  • 安裝 VMware Workstation

    1.第一步 打開安裝包所在位置 2.第二步 開始安裝 ai      上面的路徑看個人習慣修改,然后點擊下一步 3.安裝完成后,點擊輸入許可證秘鑰  打開Vmware注冊碼生成器  安裝成功

    2017-07-11
  • 8月2日作業

    在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 [root@localhost ~]# groupadd g1 [root@localhost ~]# groupadd g2 [root@local…

    Linux干貨 2016-08-05
  • 數據結構-線性表

    1. 線性表:n個數據元素的有序集合。 線性表是一種常用的數據結構。在實際應用中,線性表都是以棧、隊列、字符串、數組等特殊線性表的形式來使用的。由于這些特殊線性表都具有各自的特性,因此,掌握這些特殊線性表的特性,對于數據運算的可靠性和提高操作效率都是至關重要的?! 【€性表是一個線性結構,它是一個含有n≥0個結點的有限序列,對于其中的結點,有且僅有一個開始結點…

    Linux干貨 2015-04-07
  • N26-第七周博客作業

    一、創建一個10G分區,并格式為ext4文件系統; 1、 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;          A、創建一個10G的磁盤空間 [root@VM_221_40_centos ~]#fdisk /de…

    2017-07-09
欧美性久久久久