一、系統服務管理
【檢視系統服務】
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.