1、計劃任務linux
1) Crontab簡介shell
一、Crontab是一個用於設置週期性被執行任務的工具;apache
二、被週期性執行的任務咱們稱爲Cron Job;vim
三、週期性執行的任務列表咱們稱爲Cron Table。windows
2) Crontab實踐centos
一、 相關工具緩存
#Putty安全
#一個免費的易用的SSH鏈接工具bash
#http://www.putty.org/服務器
二、 安裝並檢查Crontab服務
①檢查cron服務
檢查Crontab工具是否安裝:crontab -l
檢查crond服務是否啓動:service crond status
②安裝cron(centos7以上已默認安裝)
yum install vixie-cron
yum install crontabs
③案例實現
#每分鐘都打印當前時間到一個日誌文件中
*/1 * * * * date >> /tmp/log.txt
三、 Crontab的基本組成
crond 系統服務 + 配置文件 + 配置工具crontab
四、 Crontab的配置文件格式
案例:
①每晚的21:30重啓apache
30 21 * * * service httpd restart
②每個月一、十、22日的4:45重啓apache
45 4 1,10,22 * * service httpd restart
③每個月1到10日的4:45重啓apache
45 4 1-10 * * service httpd restart
④每隔兩分鐘重啓Apache服務器
*/2 * * * * service httpd restart #偶數分鐘
1-59/2 * * * * service httpd restart #基數分鐘
⑤晚上11點到早上7點之間,每隔一小時重啓apache
0 23-7/1 * * * service httpd restart
⑥天天18:00至23:00之間每隔30分鐘重啓apache
0,30 18-23 * * * service httpd restart
0-59/30 18-23 * * * service httpd restart
總結:
* 表示任什麼時候候都匹配
能夠用「A,B,C」 表示A或者B或者C時執行命令
能夠用「A-B」 表示A到B之間時執行命令
能夠用「*/A」 表示每A分鐘(小時等)執行一次命令
五、 Crontab工具的使用
#查看某用戶的計劃任務列表
crontab -l -u 用戶名
#修改某用戶的計劃任務
crontab -e -u 用戶名
#查看生成的最終計劃任務文件
/var/spool/cron
六、 Crontab的日誌
/var/log/cron文件保存着全部cron的任務執行記錄
/var/spool/mail/ 下也會以郵件的方式發送日誌信息
七、 Crontab配置文件
① 全局(系統)配置文件
/etc/crontab
[root@localhost etc]# cat crontab
SHELL=/bin/bash(用該命令去執行)
PATH=/sbin:/bin:/usr/sbin:/usr/bin(載入時須要用的PATH)
MAILTO=root(執行記錄郵件對象)
HOME=/(執行計劃任務的根目錄)
# 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
注:也可在/etc/crontab文件下添加計劃任務,跟crontab -e不一樣的是其實是一個全局的配置文件設置的計劃任務,也稱爲系統計劃任務。
② 服務配置文件
/etc/cron.d/
[root@localhost etc]# cat sysstat
#sysstat中的內容跟crontab -l所執行的內容是一致的
#crontab在載入文件的時候會把cron.d下面的配置文件信息(sysstat)載入成root用戶下面的計劃任務,若是用crontab –e會破壞原始文件(即sysstat)的配置內容。若是直接編輯sysstat文件的話,須要執行crontab +文件名,此時將會覆蓋原先crontab -e裏的內容。
③ 執行crontab -e其實是修改/var/spool/cron/下面對應當前帳號的文件。執行(crontab +文件名)時,將直接讀取文件中的數據覆蓋到/var/spool/cron/所對應用戶的配置文件中
④ 在/etc/cron.d文件夾下面的文件能夠認爲是對系統配置的補充文件,打開能夠看到和/var/spool/cron/用戶的配置文件同樣,可是多了個用戶字段這些是系統的cron運行時自動加載的配置文件,使用crontab -l只能查看存在於/var/spool/cron/用戶的cron任務
3) Crontab的常見錯誤
一、 環境變量
二、 命令行雙引號中使用%時,未加反斜線\
三、 第三和第五個域之間執行的是「或」操做
四、 分鐘設置誤用
2、服務管理
1) 簡介與分類
一、 系統的運行級別
① 運行級別
運行級別 |
含義 |
0 |
關機 |
1 |
單用戶模式,能夠想象爲windows的安全模式,主要用於系統修復 |
2 |
不徹底的命令行模式,不含NFS服務 |
3 |
徹底的命令行模式,就是標準字符界面 |
4 |
系統保留 |
5 |
圖形模式 |
6 |
重啓動 |
② 運行級別命令
[root@localhost ~]# runlevel
N 3
(N表明no,由於一開機就進入字符界面,沒有從哪一個級別轉入到3級別)
#查看運行級別命令
[root@localhost ~]# init 運行級別
#修改運行級別命令
③ 系統默認運行級別
[root@localhost ~]# vim /etc/inittab
id:3:initdefault:
#系統開機後直接進入哪一個運行級別
二、 服務的分類
#獨立的服務須要佔用系統內存
#xinetd服務屬於超級守護進程,自己是獨立的,管理一些後臺程序,用戶須要訪問後臺程序要先訪問xinetd,再經過它去訪問對應的後臺程序,響應時間慢,但除了xinetd自己佔內存,剩下的都不佔用系統內存
① 查詢已安裝的服務
[root@localhost ~]# chkconfig --list
#查看服務自啓動狀態,能夠看到全部RPM包安裝的服務(獨立服務)
#查看服務安裝位置,通常是/usr/local/下
② 查看xinetd服務
須要安裝xinetd服務自己
[root@localhost ~]# yum -y install xinetd
③ 啓動與自啓動
服務啓動:就是在當前系統中讓服務運行,並提供功能。
服務自啓動:自啓動是指讓服務在系統開機或重啓動以後,隨着系統的啓動而自啓動服務
④ RPM安裝服務和源碼包安裝服務的區別
RPM安裝服務和源碼包安裝服務的區別就是安裝位置的不一樣:
#源碼包安裝在指定位置,通常是/usr/local/
#RPM包安裝在默認位置中
三、 服務與端口
① 端口的定義
若是把IP地址比做一間房子,端口就是出入這間房子的門。真正的房子只有幾個門,可是一個IP地址的端口能夠有65536個。如圖:
② 端口與服務的對應
#1萬之內的端口是系統預留的,超出的是用戶使用的
#[root@localhost ~]# cat /etc/services(查看常規端口)
③ 查詢系統中開啓的服務
[root@localhost ~]# netstat -tlunp
-t列出tcp數據
-u列出udp數據
-l列出正在監聽的網絡服務(不包含已經鏈接的網絡服務)
-n用端口號來顯示服務,而不是用服務名
-p 列出該服務的進程ID(PID)
#列出系統中全部的已經啓動的服務
總結:查看服務自啓動狀態:chkconfig –list
查看服務啓動狀態:a、[root@localhost ~]# ps aux
b、[root@localhost ~]# netstat -tlunp
2) RPM包服務管理
一、 獨立服務的管理
① RPM包安裝服務的位置
RPM安裝服務和源碼包安裝服務的區別就是安裝位置的不一樣:
#源碼包安裝在指定位置,通常是/usr/local/。
其中usr是Unix System Resource,即Unix系統資源的縮寫
#RPM包安裝在默認位置中(不是絕對的),以下:
/etc/init.d/:啓動腳本位置
/etc/sysconfig/:初始化環境配置文件位置
/etc/:配置文件位置
/etc/xinetd/conf:xinted配置文件
/etc/xindtd.d/:基於xinetd服務的啓動腳本
/var/lib/:服務產生的數據放在這裏
/var/log/:日誌
② 獨立服務的啓動
[root@localhost ~]# /etc/init.d/獨立服務名
start|stop|status|restart
[root@localhost ~]# /etc/rc.d/init.d/獨立服務名
start|stop|status|restart
#redhat7.2系統早版本時,全部常規服務在此目錄,照顧管理員的習慣/etc/init.d是/etc/rc.d/init.d的軟連接即快捷方式。
[root@localhost ~]# service 獨立服務名
start|stop|status|restart
#這個是redhat系列的專有命令
#默認源碼包服務例外,不能由以上命令啓動。
③ 獨立服務的自啓動的三種方式
A、chkconfig [--level 運行級別] [獨立服務名] [on|off]
B、修改/etc/rc.d/rc.local文件(區別A和C的獨立一種方法,推薦使用)
C、使用ntsysv命令管理自啓動(redhat專有命令)
二、 基於xinetd服務的管理
① 安裝xinetd
[root@localhost ~]# yum -y install xinetd
② xinetd服務的啓動
#能夠先查看rsync的端口號:grep rsync /etc/services
[root@localhost ~]# vi /etc/xinetd.d/rsync
service rsync(服務名稱)
{
disable = yes
flags = IPv6(設定TCP/IP socket可重用)
socket_type = stream(使用TCP協議數據包)
wait = no(容許多個鏈接同時鏈接)
user = root(啓動服務的用戶爲root)
server = /usr/bin/rsync(服務的啓動程序)
server_args = --daemon
log_on_failure += USERID(登錄失敗後,記錄用戶的ID)
}
把文件中的disable改爲這個disable(不能)=no
注意重啓的是xinetd服務:service xinetd restart
③ xinetd服務的自啓動兩種方法
a、[root@localhost ~]# chkconfig rsync on
b、ntsysv
注:xinetd的啓動是混爲一談,啓動與自啓動是通用的。
3) 源碼包服務管理
一、 源碼包安裝服務的啓動
使用絕對路徑,調用啓動腳原本啓動。不一樣的源碼包的啓動腳本不一樣。能夠查看源碼包的安裝說明,查看啓動腳本的方法。
二、 源碼包服務的自啓動
把服務的絕對路徑加入/etc/rc.d/rc.local文件中,絕對路徑可經過安裝文檔查看(INSTALL)
三、 讓源碼包服務被服務管理命令識別
① 讓源碼包的某服務(如apache服務)能被service命令管理啓動即建立軟連接:ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
② 讓源碼包的某服務(如apache服務)能被chkconfig與ntsysv命令管理自啓動
[root@localhost ~]# vi /etc/init.d/apache
加入如下兩句話:
#chkconfig:35 86 76
(指定httpd腳本能夠被chkconfig命令管理。格式是:
chkconfig:運行級別 啓動順序關閉順序)
#description:source package apache
(文檔說明至關於註釋,必需要加)
說明:啓動、關閉順序號不能跟/etc/rc3.d/目錄下現有的順序重複
35 啓動級別
86 啓動順序
76 關閉順序
加入紅色標記的兩句話以後,還要執行下面的語句才生效:
[root@localhost ~]# chkconfig --add apache
③ chkconfig和ntsysv是通用的,chkconfig能管理,就能被ntsysv管理。
4) 服務管理總結
3、系統管理
1) 進程管理
一、 進程管理簡介
定義:進程是正在執行的一個程序或命令,每個進程都是一個運行的實體,都有本身的地址空間,並佔用必定的系統資源。
做用:判斷服務器健康狀態;查看系統中全部進程;殺死進程
二、 進程的查看-ps命令和pstree命令
①ps aux #查看系統中全部進程,使用BSD操做系統格式
②ps -le #查看系統中全部進程,使用linux標準命令格式
選項
a:顯示一個終端的全部進程,除了會話引線
u:顯示進程的歸屬用戶及內存的使用狀況
x:顯示沒有控制終端的進程
-l:長格式顯示。顯示更加詳細的信息
-e:顯示全部進程,和-A做用一致
③查看進程信息:
USER:該進程是由哪一個用戶產生的;
PID:進程的ID號;
%CPU:該進程佔用CPU資源的百分比,佔用越高,進程越耗費資源;
%MEM:該進程佔用物理內存的百分比,佔用越高,進程越耗費資源;
VSZ:虛擬內存的大小,單位KB;
RSS:實際物理內存的大小,單位KB;
TTY:該進程是在哪一個終端中運行的。其中tty1~tty7表明本地控制檯終端,
tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0 -255表明
虛擬終端。不少都是?表示不少進程都是系統進程
注:在linux中,/sbin/init是全部的進程的父進程,進程ID永遠都是1。
STAT:進程狀態。
常見的狀態有:
R:運行
S:睡眠
T:中止狀態
s:包含子進程
+:位於後臺
START:該進程的啓動時間
TIME:該進程佔用CPU的運算時間,注意不是系統時間
COMMAND:產生此進程的命令名
④查看進程樹
[root@localhost etc]# pstree [選項]
選項:
-p:顯示進程PID
-u:顯示進程的所屬用戶
三、 進程的查看-top命令
[root@localhost ~]# top [選項]
選項:
-d 秒數:指定top命令每隔幾秒更新,默認是3秒
-b:使用批處理模式輸出。通常和「-n」選項合用
-n次數:指定top命令執行的次數,通常和「-b」選項合用
使用top查看全部進程:
[root@localhost ~]# top -b -n 1 > /root/top.log
在top命令的交互模式中能夠執行的命令:
?或者h :顯示交互模式的幫助
P:以CPU使用率排序 默認就是此項
M:之內存的使用率排序
N:以PID排序
q:推出top
①第一行信息爲任務隊列信息
內容 |
說明 |
21:05:56 |
系統當前時間 |
up 1 day,13:32 |
系統的運行時間,本機已經運行1天13小時32分鐘 |
2 users |
當前登陸了兩個用戶 |
Load average:0.00,0.00,0.00 |
系統在以前1分鐘,5分鐘,15分鐘的平均負載。通常認爲小於1時,負載較小。若是大於1,系統已經超出負荷。(依核數來斷定,默認1) |
有計劃的重啓是服務器維護的基本原則。
②第二行爲進程信息
內容 |
說明 |
Task:95 total |
系統中的進程總數 |
1 running |
正在運行的進程數 |
94 sleeping |
睡眠的進程 |
0 stopped |
正在中止的進程 |
0 zombie |
殭屍進程。若是不是0,須要手工檢查殭屍進程 |
③第三行
內容 |
說明 |
Cpu(s):0.1%us |
用戶模式佔用的CPU百分比 |
0.1%sy |
系統模式佔用的CPU百分比 |
0.0%ni |
改變過優先級的用戶進程佔用的CPU百分比 |
99.7%id |
空閒CPU的CPU百分比(不能低於20%) |
0.1%wa |
等待輸入/輸出的進程的佔用CPU百分比 |
0.0%hi |
硬中斷請求服務佔用的CPU百分比 |
0.1%si |
軟中斷請求服務佔用的CPU百分比 |
0.0%st |
st(steal time)虛擬時間百分比。就是當有時,虛擬CPU等待實際CPU的時間百分比。 |
④第四行
內容 |
說明 |
Mem:625344k total |
物理內存的總量,單位kb |
571504k used |
已經使用的物理內存數量 |
53840k free |
空閒的物理內存數量 |
65800k buffers |
做爲緩衝的內存數量(加速數據的寫入) |
⑤第五行
內容 |
說明 |
Swap: 524280k total |
交換分區(虛擬內存)的總大小 |
0k used |
已經使用的交互分區大小 |
524280k free |
空閒交換分區的大小 |
409280k cached |
做爲緩存的交互分區的大小(加速數據的讀取) |
四、 殺死進程
① kill命令
[root@localhost ~]# kill -l
#查看可用的進程信號
[root@localhost ~]# kill -1 進程號
#重啓進程
[root@localhost ~]# kill -9 進程號
#強制殺死進程
信號代號 |
信號名稱 |
說明 |
1 |
SIGHUP |
該信號讓進程當即關閉,而後從新讀取配置文件以後重啓(平滑重啓) |
2 |
SIGINT |
程序終止信號,用於終止前臺進程。至關於輸出ctrl+c快捷鍵。 |
8 |
SIGFPE |
在發生致命的算術運算錯誤時發出,不只包括浮點運算錯誤,還包括溢出及除數爲0等其它全部的算術的錯誤。 |
9 |
SIGKILL |
用來當即結束程序的運行,本信號不能被阻塞、處理和忽略。通常用於強制終止進程。 |
14 |
SIGALRM |
時鐘定時信號,計算的是實際時間或時鐘時間,alarm函數使用該信號。 |
15 |
SIGTERM |
正常結束進程的信號,kill命令的默認信號。有時若是進程已經發生問題,這個信號是沒法正常終止進程的,咱們纔會嘗試SIGKILL信號,也就是信號9。 |
18 |
SIGCONT |
該信號可讓暫停的進程恢復執行,本信號不能被阻斷。 |
19 |
SIGSTOP |
該信號能夠暫停前臺進程,至關於輸入ctrl+z快捷鍵。本信號不能被阻斷。 |
② killall命令
killall [選項][信號] 進程名
#按照進程名殺死進程
選項:
-i:交互式,詢問是否要殺死某個進程
-I:忽略進程名的大小寫(此處是大寫的i)
③ pkill命令
pkill [選項][信號] 進程名
#按照進程名終止進程
選項:
-t 終端號:按照終端號踢出用戶
④ 按照終端號踢出用戶
w
#使用w命令查詢本機已經登陸的用戶
pkill -9 -t pts/1
#強制殺死從pts/1虛擬終端登陸的進程
五、 修改進程優先級
① 簡介
Linux操做系統是一個多用戶、多任務的操做系統,Linux系統中一般運行着很是多的進程。可是CPU在同一個時鐘週期內只能運算一個指令。進程優先級決定了每一個進程處理的前後順序
PRI表明Priority,NI表明Nice。這兩個值都是優先級,數字越小表明該進程優先級越高。最終生效的是PRI,可是無論是超級用戶仍是普通用戶都不能直接修改PRI這個優先級進程,只能修改NI這個優先級進程,系統最終生效的是PRI+NI的值。
② 修改NI值時有幾個注意事項
③ nice命令
nice [選項] 命令
#nice命令能夠給新執行的命令直接賦予NI值,可是不能修改已經存在進程的NI值
選項:
-n NI值:給命令賦予NI值。
例如:nice -n -5 service httpd start
④ renice命令
renice [優先級] PID
#renice命令是修改已經存在進程的NI值得命令
例如:renice -10 2125
2) 工做管理
① 工做管理簡介
工做管理:指的是在單個登陸終端中(shell界面)同時管理多個工做行爲。
[root@localhost ~]# jobs(查看在後臺運行的程序)
Linux後臺運行:命令後面加上「 &」
注意事項:
② 工做管理方法
tar -zcf etc.tar.gz /etc &
#把命令放入後臺,並在後臺執行
top
#按下ctrl+z快捷鍵,放在後臺暫停
jobs [-l]
選項:
-l:顯示工做的PID
注:「+」號表明最近一個放入後臺的工做,也是工做恢復時,默認恢復的工做。「-」號表明倒數第二個放入後臺的工做
[root@localhost ~]# fg %工做號
參數:
%工做號:%號能夠省略,可是注意工做號(第一列顯示的[1]、[2]、[3]等這樣的數字)和PID的區別
例如:[root@localhost ~]# fg %1
[root@localhost ~]# bg %工做號
注:後臺恢復執行的命令,是不能和前臺有交互的,不然不能恢復到後臺執行
③ 後臺命令脫離登陸終端執行
方法1.把須要後臺執行的命令加入/etc/rc.local文件
方法2.使用系統定時任務,讓系統在指定的時間執行某個後臺命令
方法3.使用nohup命令(推薦使用)
nohup [命令] &
3) 系統資源查看
① vmstat命令監控系統資源
vmstat [刷新延時][刷新次數]
例如:vmstat 1 3
procs:進程信息字段
-r:等待運行的進程數,數量越大,系統越繁忙
-b:不可被喚醒的進程數量,數量越大,系統越繁忙。
memory:內存信息字段
-swpd:虛擬內存的使用狀況,單位kb
-free:空閒的內存容量,單位爲KB
-buff:緩衝的內存容量,單位爲KB
-cache:緩存的內存容量,單位爲KB
swap:交換分區的信息字段
-si:從磁盤中交換到內存中數據的數量,單位KB
-so:從內存中交換到磁盤中數據的數量,單位KB。此兩個數越大,證實
數據須要常常在磁盤和內存之間交換,系統性能越差。
io:磁盤讀寫信息字段
-bi:從塊設備讀入數據的總量,單位是塊。
-bo:寫到塊設備的數據的總量,單位是塊,此兩個值越大,表明系統的
I/O越繁忙。
system:系統信息字段
-in:每秒被中斷進程的次數
-cs:每秒進行的事件切換次數。此兩個數越大,表明系統與接口設備的
通訊很是繁忙
CPU:CPU信息字段
-us:非內核進程消耗CPU運算時間的百分比
-sy:內核進程消耗CPU運算時間的百分比
-id:空閒CPU的百分比,值越小表明系統越繁忙
-wa:等待I/O所消耗的CPU百分比
-st:被虛擬機所盜用的CPU佔比
② 緩存和緩衝的區別
簡單來講緩存(cache)是用來加速數據從硬盤中「讀取」的,而緩衝(buffer)是用來加速數據「寫入」硬盤的。
③ dmesg開機時內核檢測信息(判斷當前服務器的硬件狀態)
[root@localhost ~]# dmesg
例如:[root@localhost ~]# dmesg | grep CPU
④ free命令查看內存使用狀態
[root@localhost ~]# free [-b|-k|-m|-g]
選項:
-b:以字節爲單位顯示
-k:以KB爲單位顯示,默認此單位
-m:以MB爲單位顯示
-g:以GB爲單位顯示
第一行:total是總內存數,used是已經使用的內存數,free是空閒的內存數,
shared是多個進程共享的內存總數,buffers是緩衝內存數,cached
是緩存內存數。默認單位是KB。
第二行:-/buffers/cache的內存數,至關於第一行的used-buffers-cached
+/buffers/cache的內存數,至關於第一行的free+buffers+cached
第三行:total是swap的總數;used是已經使用的swap數,free是空閒的
swap數,默認單位KB。
⑤ 查看CPU信息
[root@localhost ~]# cat /proc/cpuinfo
⑥ uptime命令
[root@localhost ~]# uptime
顯示系統的啓動時間和平均負載,也就是top命令的第一行。w命令也能夠看這個數據。
⑦ 查看系統與內核相關信息
uname [選項]
選項:
-a 查看系統全部相關信息
-r 查看內核版本
-s 查看內核名稱
⑧ 判斷當前系統的位數
[root@localhost ~]# file /bin/ls
⑨ 查詢當前linux系統的發行版本
[root@localhost ~]# lsb_release -a
⑩ 列出進程打開或使用的文件信息
lsof [選項]
選項:
-c 字符串:只列出以字符串開頭的進程打開的文件
-u 用戶名:只列出某個用戶的進程打開的文件
-p pid:列出某個PID進程打開的文件
例如:
lsof | more
#查詢系統中全部進程調用的文件
lsof /sbin/init
#查詢某個文件被哪一個進程調用(必須是系統文件)
lsof –c httpd
#查看httpd進程調用了哪些文件
lsof –u root
#按照用戶名,查詢某用戶的進程調用的文件名
4) 系統定時任務
一、 at一次性定時任務
① 肯定at安裝
[root@localhost ~]# chkconfig --list | grep atd
#at服務是否安裝
[root@localhost ~]# service atd restart
#at服務的啓動
② at的訪問控制
③ at命令
at [選項] 時間
選項:
-m:當at工做完成後,不管是否命令有輸出,都用email通知執行at
命令的用戶
-c 工做號:顯示該at工做的實際內容
時間:
HH:MM 例如:02:30
HH:MM YYYY-MM-DD 例如:02:30 2013-07-25
HH:MM[am|pm] [month][date] 例如:02:30 July 25
HH:MM[am|pm] + [minutes|hours|days|weeks]
例如:now+5 minutes
舉例:
at now + 2 minutes #在兩分鐘後執行腳本。
#寫完回車,出現下面的at提示符,提示你輸入要執行的腳本和重定向
路徑
at> /root/helo.sh >> /root/helo.log
④ 其餘at管理命令
atq #查詢當前服務器上的at工做
atrm[工做號] #刪除指定的at任務
⑤
二、 crontab循環定時任務
① crond服務管理與訪問控制
[root@localhost ~]# service crond restart
[root@localhost ~]# chkconfig crond on #開啓crond服務
② 訪問控制
當系統中有/etc/cron.allow文件時,只有寫入此文件的用戶可使用crontab命令,沒有寫入的用戶不能使用crontab命令。一樣若是有此文件,/etc/cron.deny文件會被忽略,/etc/cron.allow文件的優先級更高。
當系統中只有/etc/cron.deny文件時,則寫入此文件的用戶不能使用crontab命令,沒有寫入文件的用戶可使用crontab命令
③ 用戶的crontab設置
[root@localhost ~]# crontab [選項]
選項:
-e:編輯crontab定時任務
-l:查詢crontab任務
-r:刪除當前用戶全部的crontab任務
舉例:
[root@localhost ~]# crontab -e
#進入crontab編輯界面。
* * * * * 執行的任務
項目 |
含義 |
範圍 |
第一個「*」 |
一個小時當中的第幾分鐘 |
0-59 |
第二個「*」 |
一天當中的第幾小時 |
0-23 |
第三個「*」 |
一個月當中的第幾天 |
1-31 |
第四個「*」 |
一年當中的第幾月 |
1-12 |
第五個「*」 |
一週當中的星期幾 |
0-7(0和7都表明星期日) |
特殊符號 |
含義 |
* |
表明任什麼時候間。好比第一個「*」就表明一小時中每分鐘都執行一次的意思。 |
, |
表明不連續的時間。好比「0 8,12,16 * * * 命令」,就表明在天天的8點0分,12點0分,16點0分都執行一次命令 |
- |
表明連續的時間範圍。好比「0 5 * * 1-6 命令」,表明在週一到週六的凌晨5點0分執行命令 |
*/n |
表明每隔多久執行一次。好比「*/10 * * * * 命令」,表明每隔10分鐘就執行一遍命令 |
時間 |
含義 |
45 22 * * * 命令 |
在22點45分執行命令 |
0 17 * * 1 命令 |
每週1的17點0分執行命令 |
0 5 1,15 * * 命令 |
每個月1號和15號的凌晨5點0分執行命令 |
40 4 * * 1-5 命令 |
每週一到週五的凌晨4點40分執行命令 |
*/10 4 * * * 命令 |
天天的凌晨4點,每隔10分鐘執行一次命令 |
0 0 1,15 * 1 命令 |
每個月1號和15號,每週1的0點0分都會執行。注意:星期幾和幾號最好不要同時出現,由於它們定義的都是天。很是容易讓管理員混亂 |
④ 經常使用命令
[root@localhost ~]# crontab -l
#查看root用戶的crontab任務
[root@localhost ~]# crontab -r
#刪除root用戶全部的定時任務
⑤ crontab注意事項
三、 系統的crontab設置
① 系統的定時任務
「crontab -e」是每一個用戶執行的命令,也就是說不一樣的用戶身份能夠執行本身的定時任務(不能執行超出本身權限的任務)。但是有些定時任務(如只有root用戶權限才能執行的:關機、添加用戶等)須要系統執行,這時咱們就須要編輯/etc/crontab這個配置文件。
② CentOS 5中的配置文件
[root@localhost ~]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.mouthly
其中run-parts是一個命令或者程序,是遍歷目標文件夾,執行第一層目錄下的可執行權限的文件。
③ 執行系統的定時任務的方法
第一種是把須要定時執行的腳本複製到
/etc/cron.{hourly,daily,weekly,mouthly}目錄中的任意一個
第二種是修改/etc/crontab配置文件
四、 anacron配置
① 定義
anacron是用來保證在系統關機的時候錯過的定時任務,能夠在系統開機以後再執行。
② anacron檢測週期
cron.{daily,weekly,monthly}文件,用於記錄上次執行cron的時間;
③ CentOS 6.x的區別
④ Anacron配置文件
[root@VM_68_42_centos ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45(最大隨機延遲,單位:分鐘)
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
(anacron的執行時間範圍是3:00-22:00)
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
(天數 強制延遲(分) 工做名稱 實際執行的命令)
⑤ cron.daily工做來講明執行過程
和當前時間比較,若是兩個時間的差值超過1天,就執行cron.daily工做;
/etc/cron.daily目錄中的全部可執行文件