歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux系統管理員常用命令實例分析

Linux系統管理員常用命令實例分析

日期:2017/2/28 13:53:05   编辑: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:

Copyright © Linux教程網 All Rights Reserved