编程 shell 微软 mysql Android Firefox wordpress Ubuntu centos Python google 开源 程序员 云计算 nginx linux Windows php apache java

《循序漸進Linux(第2版) 基礎知識 服務器搭建 系統管理 性能調優 虛擬化與集群應用》——4.2 系統管理與維護《循序漸進Linux(第2版) 基礎知識 服務器搭建 系統管理 性能調優 虛擬化與集群應用》——4.2 系統管理與維護

本節書摘來自異步社區《循序漸進Linux(第2版) 基礎知識 服務器搭建 系統管理 性能調優 虛擬化與集群應用》一書中的第4章,第4.2節,作者:高俊峰著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

4.2 系統管理與維護

4.2.1 ls命令
1.功能說明
ls命令顯示指定工作目錄下的內容,列出工作目錄所含的文件及子目錄。此命令與Windows下的dir類似。另外,Linux也提供了dir命令,用戶也可以用dir命令代替ls命令。ls的語法如下。

ls [選項] [路徑或文件]
ls的選項及其說明如表4.1所示。

screenshot
screenshot

2.举例
以下命令列出/home目录下文件及其子目录。

# ls -l /home
-rw-r--r-- 1 root  root   0 Jul 7 22:39 db2
drwx------ 3 mysql mysql 4096 Oct 10 2007 mysql
drwx------ 3 oracle oracle 4096 Oct 16 2007 oracle

以下命令显示/home/oracle下的所有文件及其子目录的详细信息,并显示文件类型标记。

# ls -alF
total 56
drwx------ 4 oracle oracle 4096 Jul 7 22:43 ./
drwxr-xr-x 4 root  root  4096 Jul 7 22:39 ../
-rw------- 1 oracle oracle 238 Dec 20 2007 .bash_history
-rw-r--r-- 1 oracle oracle 304 Oct 16 2007 .bash_logout
-rw-r--r-- 1 oracle oracle 191 Oct 16 2007 .bash_profile
-rw-r--r-- 1 oracle oracle 124 Oct 16 2007 .bashrc
-rw-r--r-- 1 oracle oracle 383 Oct 16 2007 .emacs
-rw-r--r-- 1 oracle oracle 120 Oct 16 2007 .gtkrc
drwxr-xr-x 3 oracle oracle 4096 Oct 16 2007 .kde/
drwxr-xr-x 2 root  root  4096 Jul 7 22:41 .linux/
lrwxrwxrwx 1 root  root   10 Jul 7 22:43 mount -> /bin/mount*
-rwxr-xr-x 1 root  root  4283 Jul 7 22:42 nfs*
-rw-r--r-- 1 oracle oracle  22 Oct 16 2007 .rhosts

4.2.2 pwd命令
功能說明
顯示當前的工作目錄,執行pwd指令可立刻得知目前所在的工作目錄的絕對路徑名稱,pwd命令的語法如下。

pwd
4.2.3 cd命令
1.功能說明
改變當前工作目錄,其用法與Windows下的cd類似。具體的語法格式如下。

cd [目錄名]
cd命令的選項及其說明如表4.2所示。


screenshot

2.舉例
要切換到/usr/bin目錄下,命令如下。

#cd /usr/bin
#pwd
/usr/bin
要返回oracle工作目錄下,命令如下。

#cd ~oracle
#pwd
/home/oracle
4.2.4 date命令
1.功能說明
顯示或者修改系統時間與日期。只有超級用戶才能用date命令設置時間,一般用戶只能用date命令顯示時間。date命令的語法如下。

date [選項] 顯示時間格式(以+開頭,後面接時間格式)
date命令的選項及其說明如下。

-s --set:設置系統時間。
-d --date:顯示描述的日期。

2.舉例
1)用指定的格式顯示時間和日期。

# date '+This date now is:%x, time is now:%X,thanks!'
This date now is:07/15/2008, time is now:07:41:35 PM,thanks!
2)修改系統時間。

[root@mylinux /]# date -s 20080715 
Tue Jul 15 00:00:00 CST 2008
[root@mylinux /]# date -s 17:25  
Tue Jul 15 17:25:00 CST 2008
也可以將上面兩部合並到一起。

[root@mylinux /]# date -s "20080715 17:25"
Tue Jul 15 17:25:00 CST 2008
3)顯示兩天前的時間。

[root@mylinux /]# date '+%Y-%m-%d'
2008-07-15
[root@server108 /]# date -d "2 days ago" +%Y-%m-%d
2008-07-13
4.2.5 passwd命令
1.功能說明
用於設置用戶密碼。語法格式如下。

passwd [用戶名]
2.舉例
1)普通用戶要修改自己的密碼,可使用以下命令。

passwd
然後根據提示連續兩次輸入密碼即可。

2)超級用戶root修改某個用戶的密碼時,使用以下命令。

passwd [用戶名]
然後根據提示連續兩次輸入密碼即可。

root修改自己的密碼時,只需輸入以下命令。

passwd
或者

passwd root
然後根據提示連續兩次輸入密碼即可。

4.2.6 su命令
1.功能說明
su命令主要用於改變用戶身份,其格式如下。

su [選項] [用戶名]
su命令的選項及其說明如表4.4所示。

screenshot
   

2.舉例
1)普通用戶要成為超級用戶,可執行如下命令。

$su -
根據系統提示輸入超級用戶密碼,即可轉變為超級用戶。

註意
 su後面的“-”就會加載root環境變量,如果直接輸入su也可以轉變為超級用戶,但是由於沒有加載root環境變量,因此某些指令可能無法執行,會提示“command not found”。
2)在普通用戶A下修改超級用戶root的密碼,可以使用下面的命令。

$su –c passwd
然後根據提示輸入root密碼,接著連續兩次輸入root用戶新的密碼。執行完畢,系統自動退出到普通用戶A下。

4.2.7 clear命令
功能說明
clear命令用來清除屏幕信息,格式如下。

clear
4.2.8 man命令
1.功能說明
man命令用來顯示指定命令的幫助信息,其格式如下。

man [命令名稱]
2.舉例
需要得到ls命令的幫助信息,可使用以下命令。

#man ls
4.2.9 who命令
1.功能說明
who命令顯示目前登錄到系統的用戶,其格式如下。

who [選項] [file]
who命令的一般輸出格式如下。

名稱 [狀態] 終端 時間 [活動] [進程標識](主機名)

名稱:用戶的登錄名。
狀態:表明終端是否對用戶都是可寫的。
終端:類似於pts/1、pts/2等,此終端標識在/dev目錄中可找到。
時間:用戶登錄系統的時間。
活動:某個用戶在自己的終端上最後一次活動發生以來到現在的時間,如果此項是個“.”,就表示一分鐘內的終端活動;如果終端保持靜止已經超過24小時或自從系統啟動以來還沒有被使用過,那麽此項標記為“old”。
進程標識:用戶登錄Shell的進程id。
主機名:登錄到Linux系統上的客戶端機器標識。
在Linux下who通常通過/var/run/utmp文件來獲取信息,如果“[file]”選項指定另一個文件,則who命令不再默認讀取/var/run/utmp文件,而是讀取指定文件來獲取信息。

2.舉例
1)查詢系統處於什麽運行級別(見圖4.1)。

screenshot

2)显示系统最近启动日期,以及当前每个用户的登录详情、终端状态(见图4.2)。

screenshot

4.2.10 w命令
1.功能說明
用於顯示登錄到系統的用戶信息,其格式如下。

w [選項] [用戶]
w命令的選項及其說明如表4.6所示。

screenshot

[用戶]表示當指定用戶後,只顯示該用戶的信息。

2.舉例
顯示當前用戶登錄信息(見圖4.3)。

screenshot

  • 上面第1行輸出顯示了當前的系統時間、系統從啟動到現在已經運行的時間、登錄到系統中的用戶數和系統平均負載。平均負載是指在1分鐘、5分鐘、15分鐘內系統負載狀況。
    USER:表示登錄系統的用戶。
    TTY:表示用戶使用的TTY名稱。
    FROM:表示用戶從哪裏登錄進來,一般顯示遠程登錄主機的ip地址或者主機名。
    login@:用戶登錄的日期和時間。
    IDLE:表示某個程序上次從終端開始執行到現在所持續的時間。
    JCPU:表示該終端上的所有進程及子進程使用系統的總時間。
    PCPU:當前活動進程使用的系統時間。
    WHAT:當前用戶執行的進程名稱和選項。
    4.2.11 uname命令
    1.功能說明
    uname命令用來顯示操作系統相關信息。其格式如下。

    uname [選項]
    uname命令的選項及其說明如表4.7所示。


screenshot

2.舉例
1)圖4.4顯示的是一個32位的Linux操作系統,內核版本為2.6.32-279.el6.i686,主機名為centos6.3。

screenshot

2)图4.5显示的是一个64位的Linux操作系统,内核版本为3.10.0-229.el7.x86_64,主机名为centos7.1。

screenshot

4.2.12 uptime命令
1.功能說明
uptime命令用來輸出系統任務隊列信息,其格式如下。

uptime
uptime輸出當前系統時間、系統開機到現在的運行時間、目前有多少用戶在線和系統平均負載等。

2.舉例

[root@web1 ~]# uptime
 16:03:08 up 4 days, 1:49, 2 users, load average: 0.12, 0.20, 0.17
上面的輸出表示現在系統時間是16:03:08,系統已經運行4天零1小時49分鐘,目前有兩個用戶在線,系統在1分鐘、5分鐘、15分鐘前到現在的平均負載為0.12、0.20、0.17。

4.2.13 last命令
功能說明
列出目前與過去登入系統的用戶相關信息。當執行last指令時,它會默認讀取位於/var/log目錄下名稱為wtmp的文件,並把該給文件記錄的登入系統的用戶名單全部顯示出來。

last [選項] [-n 顯示列數]
last命令的選項及其說明如表4.8所示。

screenshot
          

4.2.14 dmesg命令
功能說明
顯示開機信息。內核會將開機信息存儲在系統緩沖區(ring buffer)中,如果開機來不及查看相關信息,可以在開機後利用dmesg命令查看,也可以在/var/log/目錄中查看dmesg文件。其格式如下。

dmesg [選項]
dmesg命令的選項及其說明如表4.9所示。

screenshot
       

4.2.15 free命令
1.功能說明
free命令用來顯示系統內存狀態,具體包括系統物理內存、虛擬內存、共享內存和系統緩存。其格式如下。

free [選項] [-s (間隔秒數)]
free命令的選項及其說明如表4.10所示。


screenshot
         

2.举例
列出当前内存的使用状况,以MB的形式显示,如图4.6所示。
screenshot

從圖4.6中可以看出,系統總的物理內存為4GB,已經使用了4033MB,可用內存只有16MB。而交換分區(Swap)總大小為4GB,還沒有被系統使用。

4.2.16 ps命令
1.功能說明
ps命令顯示系統進程在瞬間的運行動態,其格式如下。

ps [選項]
ps的選項非常之多,這裏僅僅列出常用的選項介紹,ps命令的選項及其說明如表4.11所示。

screenshot

2.举例
1)要查看目前使用者的进程,使用以下命令,如图4.7所示。

screenshot

默認ps命令輸出使用者自己的進程。其中,

PID是進程的標識號;
TTY是進程所屬的終端控制臺;
TIME列是進程所使用的總的CPU時間;
CMD列列出正在執行的命令行。
2)要查看系統所有進程,使用以下命令。

[root@mylinux ~]#ps –ef
註意
 ps命令是Linux系統最基本、最常用的且非常強大的進程查看命令,使用該命令可以確定哪些進程在運行,進程占用了多少資源,是否合理,運行狀態是否正常,進程是否結束,進程有沒有僵死現象,等等。該命令最常用的選項就是e、f、a、u,相應的選項組合為ps-ef、ps aux,可以通過這些組合準確定位系統進程運行狀態。
4.2.17 top命令
top命令提供了對系統處理器狀態的實時監控,它能夠實時顯示系統中各個進程的資源占用狀況。該命令可以按照對CPU的使用、內存使用和執行時間對系統任務進程進行排序顯示,同時top命令還可以通過交互式命令進行設定顯示。

1.功能說明
查看即時活躍的進程,類似於Windows的任務管理器。其格式如下。

top [選項]
top的選項很多,這裏列出常用的選項及其說明,如表4.12所示。

screenshot
      

除了一些選項之外,top命令還有很多交互式命令。交互式命令就是在top命令執行過程中使用的一些命令,這些命令都是單個字母,從應用來講,熟悉這些交互式命令至關重要。

2.舉例
查看當前系統活動的進程,具體的命令和結果如圖4.8所示。

screenshot

從圖4.8中可以看到,top的輸出可以分為統計信息區和進程信息區兩個部分,即前5行為統計信息區,下面幾行為進程信息區,下面分別介紹兩種信息區。

(1)統計信息區

第1行為任務隊列信息,含義如下。

13:29:02:表示當前系統時間。
up 3 days,23:15:表示系統已經啟動3天零23小時15分鐘了。
2 users:當前登錄系統的用戶數。
load average: 0.47, 0.20, 0.10:表示系統平均負載,3個數值分別表示1分鐘、5分鐘、15分鐘前到現在的系統平均負載值。
第2行和第3行分別為進程和CPU信息,具體含義如下。

Tasks: 122 total:進程的總數。
1 running:正在運行的進程數。
121 sleeping:處於休眠狀態的進程數。
0 stopped:停止的進程數。
0 zombie:僵死的進程數。
Cpu(s):0.3% us:表示用戶進程占用CPU的百分比。
0.1% sy:系統進程占用CPU的百分比。
0.0% ni:用戶進程空間內改變過優先級的進程占用CPU的百分比。
99.3% id:空閑CPU占用的百分比。
0.2% wa:等待輸入、輸出的進程占用CPU的百分比。
最後兩行輸出的是內存信息,具體含義如下。

Mem:4059952k total:系統的物理內存大小。
4009540k used:已經使用的物理內存大小。
50412k free:目前空余內存大小。
468964k buffers:用作內核緩沖區的內存大小。
Swap:8193108k total:交換分區內存大小。
0k used:已經使用的交換分區大小。
8193108k free:空閑的交換分區大小。
2320396k cached:緩存大小。
(2)進程信息區

進程信息區顯示了每個進程的運行狀態,我們先來看一下每列輸出的含義。

PID:進程的id。
USER:進程所有者的用戶名。
pr:進程優先級。
NI:nice值。負值表示高優先級,正值表示低優先級。
VIRT:進程使用的虛擬內存總量,單位KB。VIRT=SWAP+RES。
RES:進程使用的、未被換出的物理內存大小,單位KB。RES=CODE+DATA,其中,CODE為執行代碼占用的物理內存大小,DATA為數據占用的內存大小。
SHR:共享內存大小,單位KB。
S:進程狀態,D表示不可中斷的睡眠狀態,R表示運行狀態,S表示睡眠狀態,T表示跟蹤/停止,Z表示僵死進程。
%CPU:上次更新到現在的CPU時間占用百分比。
%MEM:進程占用的物理內存百分比。
TIME+:進程總計使用的CPU時間,單位為1/100秒。
COMMAND:正在運行進程的命令名或者命令路徑。

延伸阅读

评论