Linux之服務管理

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自己佔內存,剩下的都不佔用系統內存

①    查詢已安裝的服務

  • RPM包安裝的服務

[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值時有幾個注意事項

  •   NI值得範圍是-20到19;
  •   普通用戶調整NI值得範圍是0到19,並且只能調整本身的進程;
  •   普通用戶只能調高NI值,而不能下降,如本來NI值爲0,則只能調整爲大於0;
  •   root用戶才能設定進程的NI值爲負值,並且能夠調整任何用戶的進程。
  •   PRI(最終值)=PRI(原始值)+NI
  •   用戶只能修改NI的值,不能直接修改PRI

③    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命令

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的訪問控制

  •   若是系統中有/etc/at.allow文件,那麼只有寫入/etc/at.allow文件(白名單)中的用戶可使用at命令(/etc/at.deny文件會被忽略)
  •   若是系統中沒有/etc/at.allow文件,只有/etc/at.deny文件,那麼寫入/etc/at.deny文件(黑名單)中的用戶不能使用at命令。對root不起做用。
  •   若是系統中這兩個文件都不存在,那麼只有root用戶可使用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設置

①    系統的定時任務

「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檢測週期

  •   anacron會使用一天,七天,一個月做爲檢測週期;
  •   在系統的/var/spool/anacron/目錄中存在

cron.{daily,weekly,monthly}文件,用於記錄上次執行cron的時間;

  •   和當前時間作比較,若是兩個時間的差值超過了anacron的指定時間差值,證實有cron任務被漏執行;

③    CentOS 6.x的區別

  •   在老的CentOS版本中,/etc/cron.{daily,weekly,monthly}這些目錄即會被cron調用,也會被anacron調用,容易重複執行;
  •   在CentOS 6.x中則只會被anacron調用,避免了重複執行;
  •   在CentOS 6.x中,anacron再也不是服務,而是系統命令

④    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工做來講明執行過程

  •   首先讀取/var/spool/anacron/cron.daily中的上一次anacron執行的時間;

  和當前時間比較,若是兩個時間的差值超過1天,就執行cron.daily工做;

  •   執行這個工做只能在03:00-22:00之間;
  •   執行工做時強制延遲時間爲5分鐘,再隨機延遲0-45分鐘時間;
  •   使用nice命令指定默認優先級,使用run-parts腳本執行

/etc/cron.daily目錄中的全部可執行文件

相關文章
相關標籤/搜索