天天看點

《Linux指令、編輯器與Shell程式設計》讀書筆記7-Linux系統管理一、系統服務管理二、程序管理三、計劃任務管理四、日志管理

一、系統服務管理

【檢視系統服務】

chkconfig --list | grep <service_name>

每個服務後面的0-6裡面的on/off表示每個運作級别下該服務是否被開啟

*這個運作級别就是之前說過的init 0-6,/etc/inittab中有詳細的說明:

# runlevel 0  is System halt   (Do not use this forinitdefault!)

# runlevel 1  is Single user mode

# runlevel 2  is Local multiuser without remote network (e.g. NFS)

# runlevel 3  is Full multiuser with network

# runlevel 4  is  Notused

# runlevel 5  is Full multiuser with network and xdm

# runlevel 6  is System reboot (Do not use this for initdefault!)

【設定服務自啟狀态】

chkconfig  [--level]  [levels]  <service_name> <on|off>

如果不使用--level選項,指定的服務将會在2,3,4,5運作級别上自啟,如果帶了這個選項,則隻在指定的運作級别中自啟:

chkconfig --level 35  xinetd on

chkconfig --list | grep xinetd

xinetd                    0:off  1:off 2:off  3:on   4:off 5:on   6:off

對于非獨立服務,沒有運作級别直說,是以直接使用

chkconfig <service_name>  <on|off>

就可以了。所謂非獨立服務,是指依賴其他服務的系統服務程序,比如:

xinetd based services:

       chargen:            off

       chargen-udp:        off

       cups-lpd:           off

       cvs:                off

       daytime:            off

       daytime-udp:        off

       discard:            off

       discard-udp:        off

       echo:               off

       echo-udp:           off

       netstat:            off

       rsync:              off

       servers:            off

       services:           off

       swat:               off

       systat:             off

       time:               off

       time-udp:           off

       vnc:                off

這些服務就是依賴于xinetd服務的非獨立服務。

【添加删除系統服務】

某些應用程式,如mysql,oracle等,安裝後需要将其對應服務添加到系統服務的自啟清單中,方法如下:

1. 将應用的服務檔案,比如叫mysqld,拷貝到系統服務目錄/etc/init.d下

2. 增加執行權限:

chmod +x  /etc/init.d/mysqld

3. 添加該服務到自啟清單:

chkconfig -add  mysqld

4. 删除自啟服務:

chkconfig -del  mysqld

然後再把之前拷到/etc/init.d/下的服務檔案删掉就可以了。

【手動開啟/關閉服務】

service service_name  [start|stop|restart]

如果知道服務檔案的位置,也可以直接使用

服務檔案路徑  [start|stop|restart]

二、程序管理

【ps指令】

ps  [option]

【OPTION】

a:顯示所有終端程序

x:顯示所有終端程序,包括沒有明确終端的程序

e:使用BSD格式按照如下格式顯示所有終端程序

  PID       TTY            TIME         CMD

f:使用如下格式顯示所有終端程序

UID  PID   PPID                   C       STIME       TTY           TIME         CMD

l:以長格式顯示程序清單

u:顯示所有使用者的程序,格式如下:

USER PID  %CPU  %MEM  VSZ  RSS  TTY  STAT  START  TIME  COMMAND

各字段含義:

USER:運作該程序的使用者

PID:程序ID,唯一

%CPU:CPU占用率

%MEM:實際記憶體占用率

VSZ:程序占用虛拟記憶體大小(KB)

RSS:占用實體記憶體大小(KB)

TTY:登入終端名

STAT:目前程序狀态:

         D:不可終端的等待狀态,通常是等待I/O裝置的資料

         R:處于運作隊列中的程序

         S:處于終端休眠狀态的程序

         T:已停止工作的程序、隻因被跟蹤是以存在

         X:已經死亡的程序,這種狀态通常不應出現

         Z:僵死程序(有可能是已經退出、正在釋放資源,需要反複确認)

         <:高優先級程序

         N:低優先級程序

         s:會話的管理者

         +:程序會使用前台的終端

         l:多線程程序

         一個程序有可能同時具備上述的多種狀态,比如Ss+

【pstree指令】

以樹狀目錄的形式顯示程序及其子程序的關系

【top】

實時顯示程序:

第一行最後三個數,表示過去1、5、10分鐘内系統的負載均衡平均值;數值越高、負載越高;

第二行展示程序概況

第三行展示CPU的具體使用情況:us-使用者程序的CPU占用率,sy-系統程序的CPU占用率,id-空閑CPU比例

第四、五行是實體記憶體和swap交換區的概況

列名說明:

PR:程序的優先級

         linux有40個優先級,-20~19,-20最高,19最低。優先級越高、得到的CPU時間片越多。

NI:程序的優先級值

VIRT:使用虛拟記憶體的總量

RES:使用的實體記憶體總量

SHR:使用共享記憶體大小

進入top界面後,按H鍵可以檢視幫助資訊,按P鍵按CPU使用率由高到低排序,按M鍵按記憶體占用率排序。

【&,jobs,fg】

檢視背景任務指令,在init 3模式下運作某些耗時較長的指令,會占用終端導緻無法執行其他指令,這時可以在運作的指令最後加上&符号将其放在背景運作。

之後,使用jobs指令,可以檢視其作業号和運作狀态,最後使用

fg 作業号

将運作好的結果再次調用到前台展示

【結束程序指令kill】

正常終止程序

kill -15  pid

強制終止程序(包括其子程序)(快捷鍵ctrl+c)

kill -9  pid

挂起程序(快捷鍵ctrl+z)

kill -19  pid

重新開機程序

kill -18  pid

【指定程序優先級nice】

顯示程序的預設優先級

nice

在開始執行某指令/腳本之前,指定其以某個優先級運作

nice -n  <優先級序号>  command|file_name

【改變程序優先級renice】

對于運作狀态的程序,可以使用該指令改變其優先級:

renice  -n  <PID>

三、計劃任務管理

【開啟計劃任務管理功能】

#将cron服務加入自啟清單

chkconfig --level  35  cron

(有的系統中把cron命名為crond)

将atd服務加入自啟清單

chkconfig  atd  on

#啟動cron服務

service  cron  start

#啟動atd服務

service  atd  start

【cron計劃任務格式】

*       *       *       *       *       command|shell_name

五個星号的含義及取值範圍:

第一個:分鐘,1~59

第二個:小時,0~24,

第三個:日期,1~31

第四個:月份,1~12

第五個:星期幾,0~6(0是星期天)

後面跟要執行的指令或者腳本絕對路徑。

其中,可以使用- * , # /等通配符

-:表示範圍

*:表示每個機關時間

,:表示一個清單

#:注釋行

/:分隔時間段

*一個計劃任務後面可以執行多條指令或腳本,用;分割。

比如:

1. 每月1日淩晨4點運作/root/backup.sh

*       4       1       *       *       /root/backup.sh

2. 每周六日19點至24點,每隔15分鐘在背景運作/root/backup1.sh和/root/backup2.sh

*/15 19-24  *  *  6,0  /root/backup1.sh& >/dev/null; /root/backup1.sh&>/dev/null

【添加/管理計劃任務】

crontab [option]

【OPTION】

u:指定要操作的系統使用者

e:編輯計劃任務(就是把上面的指令加到這裡面、然後儲存退出)

r:删除目前登入使用者下的所有計劃任務,如果配合u使用,則删除指定使用者下的所有計劃任務;如果要删除某一條,則使用e選項進入編輯模式一條一條删

l:檢視已存在的計劃任務清單

【使用at執行一次性計劃任務】

at [option]  [time  command|file_name]

【OPTION】

f:指定一個檔案作為任務腳本

m:完成任務後給使用者發一個郵件

l:列出計劃任務清單

d:删除指定的計劃任務

【time】

1. 隻指定HH:MM,比如19:00,預設為當天的這個時間執行;

2. HHam(或者pm) Jan|Feb…Day,比如8pm  Oct15,表示10月15日晚上8點執行;

3. now +2 hour:從現在起兩個小時後執行

4. 10:10am tomorrow:明天上午10點10分執行

使用該指令時,可以先指定執行時間,然後進入at文本編輯界面指定要執行的指令/腳本,編輯完成後使用ctrl+d儲存退出(有<EOT>提示);也可以直接指定執行時間和要執行的指令/腳本。

【舉例】

#添加一個5小時後執行的腳本

at  now+5  hour  -f  /root/backup.sh

#檢視待執行的任務清單

at -l

#删除一個已經存在的定時任務

#先用atq檢視其任務号

atq(或at  -l)

3  2015-12-2102:39  a  root

atrm  3(或at  -d  3)

*cron和at對應的計劃任務,都被存放在/var/spool/下的cron和at檔案夾。

*如果要拒絕某個使用者執行at指令,可以在/etc/ at.deny檔案中設定。

四、日志管理

【SUSE日志清單】

/var/log/boot.msg

 系統啟動時顯示的螢幕資訊。當無法登入系統時,按“CTRL+ALT+F10”切換到日志顯示界面再通過KVM觀察螢幕輸出。

/var/log/boot.omsg

 上一次啟動日志。

/var/log/messages

 系統日志。也可以通過執行dmesg指令檢視核心輸出緩沖區資訊,即核心、驅動的日志輸出,但是不包含日志記錄時間資訊。

/var/log/warn

 warn級别以上的系統日志。

/var/log/wtmp

 系統登入及重新開機資訊,執行last指令讀取。

/var/log/YaST2/y2log

 YaST界面記錄檔。

/var/log/xinetd.log

 xinetd服務日志。

/var/log/dump/

 系統Dump日志存放目錄,包括Kdump工具收集的系統當機的故障資訊。

/var/log/atop(沒找到)

 Atop工具收集的系統資源使用情況日志,包括CPU、記憶體、系統程序和IO資料,常用于分析程序記憶體洩露、CPU耗盡、IO異常等故障。

【記錄日志消息logger】

在編寫腳本時,可以将相應的警告/報錯資訊使用該指令寫入到message系統日志。

logger [option]  message

【OPTION】

i:使用logger的PID作為消息的PID

p:使用指定的選擇域

t:使用指定的程序名

比如:

logger  -i  -p  local6.err  -t  test.sh "This is a test message."

執行後,在/var/log/message中會産生一條記錄:

Dec 20 23:33:58 linux-6ojz test.sh[32293]:This is a test message.

繼續閱讀