2021-05-12 14:32:11
Linux系統管理員常用命令範例分析
作為一名Linux系統管理員,熟悉並熟練運用一些常用的命令是必不可少的,對裝置即檔案的Linux系統來說,Linux系統管理的命令是它正常執行的核心。筆者根據實際工作總結一些常用指令,附上一些相對常見的警報處理方法,以供共同學習。
【1】、檢視命令(ls)
語法:
ls [option] [dirname]
常用引數:
-a,–all列出目錄下的所有檔案,包括以 .開頭的隱含檔案
-h,–human-readable以容易理解的格式列出檔案大小 (例如 1K 234M 2G)
-i,–inode印出每個檔案的 inode號
-l除了檔名之外,還將檔案的許可權、所有者、檔案大小等資訊詳細列出來。
[gz_fieldyang@ test ~]$ ls -ltr
total192
-rw-rw-r--1 gz_fieldyang gz_fieldyang 88 Mar 4 14:36 test.html
-rw-rw-r--1 gz_fieldyang gz_fieldyang 18 Mar 4 14:47 sed-n.sed
-rw-rw-r--1 gz_fieldyang gz_fieldyang 182 Mar 4 15:21 test.txt
-rw-rw-r--1 gz_fieldyang gz_fieldyang 50 Mar 4 16:06 example.txt
案例分析:
一般用於PortLinkStatus (Integer): down或者more than 1 CDR update process之類的警報,檢視cdr
>login
>cd/opt/xxx/pcp
>ls-lt | more
>cd/opt/xxx/cdr
>ls-lt | more
【2】、檢視進程存在與否 (ps)
語法:ps[option]
命令引數:
a 顯示所有進程
-a顯示同一終端下的所有程式
-A顯示所有進程
c 顯示進程的真實名稱
-N反向選擇
e 顯示環境變數
f 顯示程式間的關係
-H顯示樹狀結構
r 顯示當前終端的進程
T 顯示當前終端的所有程式
u 指定使用者的所有進程
-au顯示較詳細的資訊
-aux顯示所有包含其他使用者的行程
-C<命令>列出指定命令的狀況
--lines<行數>每頁顯示的行數
--width<字元數>每頁顯示的字元數
--help顯示幫助資訊
--version顯示版本顯示
[gz_fieldyang@test ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
(使用者)(進程ID)(進程耗CPU比)(進程耗實體記憶體比)(耗虛擬記憶體量)(耗固定記憶體量)(執行終端機)(狀態資訊)(觸發時間)(運作時間)(實際指令)
root 1 0.0 0.0 2064 592 ? Ss 2015 2:24 init [5]
root 2 0.0 0.0 0 0 ? S< 2015 8:33 [migration/0]
root 3 0.0 0.0 0 0 ? SN 2015 0:06 [ksoftirqd/0]
...
root 30641 2.0 0.0 9916 2812 ? Ss 10:41 0:00 sshd: gz_fieldyang [priv]
871 30644 0.0 0.0 10048 1672 ? S 10:41 0:00 sshd: gz_fieldyang@pts/2
871 30646 1.5 0.0 4528 1388 pts/2 Ss 10:41 0:00 -bash
871 30677 0.0 0.0 4248 936 pts/2 R+ 10:41 0:00 ps -aux
root 31137 0.0 0.0 0 0 ? S Apr10 0:04 [pdflush]
說明:
USER:該 process 使用者的賬號
PID:該 process的號碼
%CPU:該 process 使用掉的 CPU資源百分比
%MEM:該 process 所佔用的實體記憶體百分比
VSZ:該 process使用掉的虛擬記憶體量 (Kbytes)
RSS:該 process占用的固定的記憶體量 (Kbytes)
TTY:該 process是在那個終端機上面運作,若與終端機無關,則顯示 ?,
另外,tty1-tty6是本機上面的登入者程式,若為 pts/0等等的,則表示為由網路連線進主機的程式。
STAT:該程式目前的狀態,主要的狀態有
R:該程式目前正在運作,或者是可被運作
S:該程式目前正在睡眠當中 (可說是 idle狀態),但可被某些訊號(signal)喚醒。
T:該程式目前正在偵測或者是停止了
Z:該程式應該已經終止,但是其父程式卻無法正常的終止他,造成 zombie(疆屍)程式的狀態
START:該 process 被觸發啟動的時間
TIME:該 process實際使用 CPU運作的時間
COMMAND:該程式的實際指令
案例分析:
配合grep查詢特定進程,一般用於出現諸如Application process '...' not running 或者disk full之類的警報
ps -ef |grep ...
範例1:
[gz_fieldyang@test ~]$ ps -ef | grep MySQLd
root 7370 1 0 2011 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql--skip-slave-start
mysql 7427 7370 0 2011 ? 7-02:05:47 /usr/local/mysql/bin/mysqld
--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data --user=mysql
--skip-slave-start--log-error=/usr/local/mysql/data/test.com.err
--pid-file=/usr/local/mysql/data/test.com.pid
836 20670 20606 0 15:26 pts/1 00:00:00 grep mysqld
範例2:
>1.檢視磁碟情況
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-lvol01
20G 20G 0 100% /
/dev/mapper/vg00-lvol04
9.7G 1.7G 7.6G 19% /var
/dev/mapper/vg00-lvol06
20G 5.2G 14G 29% /var/www /dev/mapper/vg00-lvol05
20G 10G 8.4G 55% /home
/dev/mapper/vg00-lvol07
20G 912M 18G 5% /housekeep
/dev/mapper/vg00-lvol03
9.7G 5.7G 3.6G 62% /usr
/dev/cciss/c0d0p1 99M 12M 82M 13% /boot
tmpfs 12G 0 12G 0% /dev/shm
>2.切換至警報路徑尋找大檔案進程號
[root@test ~]# cd /trans/ph/
[root@test ph]# ls -ltr|tail
....
-rw-r--r-- 1 root root 9562558464 Mar 7 17:48 YLWb0443
drwxrwxrwx3950 root root 184320 Mar 7 17:48 mov
-rw-r--r-- 1 root root 9322479616 Mar 7 17:48 2quZ0443
[root@test ph]# ps -ef|grep 2quZ0443
root 4697 1 74 17:13 pts/1 00:25:40 .....
root 4702 4697 21 17:13 pts/1 00:07:25.....
root 19935 17542 0 17:48 pts/4 00:00:00 grep 2quZ0443
>3.殺死進程
[root@test ph]# kill -9 4697 4702
[root@test ph]# ps -ef|grep YLWb0443
root 4220 1 74 17:13 pts/1 00:26:27/var/www /pdup /var/www/ YL/YLWb0443 /transcoder/iphone/mov/YL/YLWb0443.mov
root 4225 4220 21 17:13 pts/1 00:07:41/var/www/ /ipmplayer -quiet -endpos +3600 -cache-min 0 -cache-seek-min 90 -vfdsize=336:224:0,scale=0:0,expand=336:224……
root 21602 17542 0 17:48 pts/4 00:00:00 grep YLWb0443
【3】、檢視紀錄檔檔案是否執行,顯示指定檔案末尾內容,不指定檔案時,作為輸入資訊進行處理 (tail)
語法:
tail[必要引數][選擇引數][file]
命令引數:
-f迴圈讀取
-q不顯示處理資訊
-v顯示詳細的處理資訊
-c<數目>顯示的位元組數
-n<行數>顯示行數
--pid=PID與-f合用,表示在進程ID,PID死掉之後結束.
-q, --quiet, --silent從不輸出給出檔名的首部
-s, --sleep-interval=S與-f合用,表示在每次反復的間隔休眠S秒
一般用於出現諸如Application process '...' not running或者(update.sh)’...‘ is not synced
或者 App_Procs port18506 ERROR之類的警報,或者配合grep查詢特定狀態資訊
/var/www/.../.../log
tail-f xxx.log
範例1:(update.sh)’...‘ is not synced
[gz_fieldyang@test] cd /gz/util/HealthCheckScript/
[gz_fieldyang@test HealthCheckScript]$ tail -20 healthcheck_log.txt
2016-04-0815:19:03 (resume.sh) cg1 is synced gzBehavior: 0
2016-04-0815:19:04 (resume.sh) cg2 is not synced gzcBehavior: 0
2016-04-0815:19:05 (resume.sh) cg3 is synced gzBehavior: 0
2016-04-0815:19:06 (resume.sh) cg4 is synced gzBehavior: 0
2016-04-0815:19:06 (resume.sh) cg5 is synced gzBehavior: 0
...
範例2:切換到特定資料夾,檢視紀錄檔
cd/home/.../log
tail-f portxxxxx.log
範例3:配合grep查詢特定狀態資訊
[root@test upelogs]# tail -f upe-debug.log | grep status@S
[2016-03-2418:53:07.962][http-80-1] DEBUG - Reply with response <?xml version='1.0'
……
<Result>id@....status@S|ove....></soap:Envelope>
【4】、啟動進程(start,reatart)
一般用於出現諸如Application process '...' not running或者 connection fail或者 request time out之類
重新啟動步驟如下:
①
1).checkthe process if running
ps-ef|grep mysqld
2).if not running then restart
/etc/init.d/mysqldrestart
②
/sbin/servicentpd restart
/sbin/servicentpd status
③
login
>bash
>xxxstatus
>cd/var/xxxx/LOG
>tail-f xxxxx.log
>xxxx stop
>xxx status
>xxxx start
>xxx status
【5】、檔案傳輸(ftp)
failed to FTP file to ... Procedure
可能原因是磁碟將滿或者vsFTPd進程未執行
範例1:磁碟將滿
[fieldyang@test~]$ ftp 127.0.0.1
Connectedto 127.0.0.1.
220(vsFTPd 2.0.5)
530Please login with USER and PASS.
530Please login with USER and PASS.
KERBEROS_V4rejected as an authentication type
Name(127.0.0.1:fieldyang):
[fieldyang@test ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/map/vg00-lvol01
2.0G 683M 1.2G 37% /
/dev/map/vg00-lvol05
97G 18G 76G 19% /home
/dev/map/vg00-lvol04
4.9G 3.7G 927M 81% /var
/dev/map/vg00-lvol03
7.8G 4.5G 3.0G 61% /usr
/dev/map/vg00-lvol06
242G 85G 147G 37% /smc
/dev/sda1 99M 18M 77M 19% /boot
tmpfs 4.0G 0 4.0G 0% /dev/shm
範例2::vsFTPd進程是否執行
1).檢測FTP服務是否開啟
①檢視進程是否存在ps -ef | grep ftp
[gz_fieldyang@test ~]$ ps -ef | grep ftp
nobody 3461 6064 0 Mar24 ? 00:00:00 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
gup 3477 3461 0 Mar24 ? 00:02:31 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
root 6064 1 0 2011 ? 00:08:36 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
...
若並未找到任何包含ftp關鍵字的進程資訊,可判斷服務未開啟。
②.查詢vsftpd服務是否存在service vsftpd status
vsftpd是最常見的FTP伺服器,一般Linux系統都是通過vsftpd來搭建FTP服務環境。
[gz_fieldyang@test ~]$ /sbin/service vsftpd status
vsftpddead but subsys locked
2).開啟FTP服務
/sbin/servicevsftpd start
3).檢視狀態
/sbin/servicevsftpd status
附:編輯vsftpd.conf簡單設定實現匿名上傳下載
vivsftpd.conf
anon_upload_enable=YES
anonymous_enable=YES
write_enable=YES
Anon_mkdir_write_enable=yes
【6】、檢查linux伺服器的檔案系統的磁碟空間佔用情況(df)
Df命令在運維中使用廣泛,使用引數相對單一,大多數情況下都是用(df –kh)來檢視磁碟佔用情況,以便獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。
語法:
df [option] [file]
引數:
必要引數:
-a全部檔案系統列表
-h方便閱讀方式顯示
-i顯示inode資訊
-k區塊為1024位元組
-l只顯示本地檔案系統
--no-sync忽略 sync命令
-P輸出格式為POSIX
--sync在取得磁碟資訊前,先執行sync命令
-T檔案系統型別
選擇引數:
--block-size=<區塊大小>指定區塊大小
-t<檔案系統型別>只顯示選定檔案系統的磁碟資訊
-x<檔案系統型別>不顯示選定檔案系統的磁碟資訊
--help顯示幫助資訊
--version顯示版本資訊
範例:如:"/:" filesystem over 98% full(819MB free)
[gz_fieldyang@test ~]$ df -kh
Filesystem Size Used Avail Use% Mounted on
(檔案系統) (容量)(已用)(可用)(已用占比)(掛載點)
/dev/mapper/vg00-lvol01
2.0G 807M 1.1G 43% /
/dev/mapper/vg00-lvol03
4.9G 3.9G 780M 84% /usr
/dev/mapper/vg00-lvol04
4.9G 2.7G 2.0G 58% /var
/dev/mapper/vg00-lvol05
15G 11G 3.2G 78% /home
/dev/mapper/vg00-lvol06
20G 14G 5.3G 73% /smc
/dev/sda1 99M 18M 76M 19% /boot
tmpfs 1014M 0 1014M 0% /dev/shm
[gz_fieldyang@test ~]$
【7】、建立使用者帳號和建立使用者的起始目錄(useradd)
語法:
useradd [-d home] [-s shell] [-c comment] [-m [-ktemplate]] [-f inactive] [-eexpire ] [-p passwd] [-r]name
主要引數
-c:加上備註文字,備註文字儲存在passwd的備註欄中。
-d:指定使用者登入時的啟始目錄。
-D:變更預設值。
-e:指定賬號的有效期限,預設表示永久有效。
-f:指定在密碼過期後多少天即關閉該賬號。
-g:指定使用者所屬的群組。
-G:指定使用者所屬的附加群組。
-m:自動建立使用者的登入目錄。
-M:不要自動建立使用者的登入目錄。
-n:取消建立以使用者名稱稱為名的群組。
-r:建立系統賬號。
-s:指定使用者登入後所使用的shell。
-u:指定使用者ID號。
useradd可用來建立使用者賬號,它和adduser命令是相同的。賬號建好之後,再用passwd設定賬號的密碼。
使用useradd命令所建立的賬號,實際上是儲存在/etc/passwd文字檔案中。
範例:建立一個新使用者賬戶,並設定ID:
[root@ test ~]#useradd Kin_ma-u 544
groupadd:將新組加入系統。
語法:
groupadd [-g gid] [-o]] [-r] [-f]groupname
3.主要引數
-g gid:指定組ID號。
-o:允許組ID號,不必惟一。
-r:加入組ID號,低於499系統賬號。
-f:加入已經有的組時,發展程式退出。
【8】、修改使用者帳號(usermod)
語 法:
usermod [-LU][-c<備註>][-d <登入目錄>][-e <有效期限>][-f <緩衝天數>][-g <群組>][-G <群組>][-l <帳號名稱>][-s <shell>][-u <uid>][使用者帳號]
補充說明:usermod可用來修改使用者帳號的各項設定。
參 數:
-c<備註> 修改使用者帳號的備註文字。
-d登入目錄> 修改使用者登入時的目錄。
-e<有效期限> 修改帳號的有效期限。
-f<緩衝天數> 修改在密碼過期後多少天即關閉該帳號。
-g<群組> 修改使用者所屬的群組。
-G<群組> 修改使用者所屬的附加群組。
-l<帳號名稱> 修改使用者帳號名稱。
-L 鎖定使用者密碼,使密碼無效。
-s<shell> 修改使用者登入後所使用的shell。
-u<uid> 修改使用者ID。
-U 解除密碼鎖定。
groupmod(groupmodify)
功能說明:更改群組識別碼或名稱。
語 法:groupmod [-g <群組識別碼> <-o>][-n <新群組名稱>][群組名稱]
補充說明:需要更改群組的識別碼或名稱時,可用groupmod指令來完成這項工作。
參 數:
-g <群組識別碼> 設定欲使用的群組識別碼。
-o 重複使用群組識別碼。
-n <新群組名稱> 設定欲使用的群組名稱。
範例:修改已辭職管理員賬戶jack為新管理員賬戶Field
[root@ test ~]# usermod-l gz_fieldyang gz_jack
[root@ test ~]# usermod -d/home/gz_fieldyang gz_fieldyang
[root@ test ~]# groupmod -ngz_fieldyang gz_jack
[root@ test ~]# mv /home/gz_jack/home/gz_fieldyang
[root@ test ~]# passwd gz_fieldyang
範例:修改組名.
[root@ test ~]# groupadd linuxso
[root@ test ~]]# tail -1 /etc/group
linuxso:x:500:
[root@ test ~]# tail -1 /etc/group
linuxso:x:500:
[root@ test ~]# groupmod -n linuxlinuxso
[root@ test ~]# tail -1 /etc/group
linux:x:500:
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2016-04/130077p2.htm
相關文章