日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CentOS学习笔记--程序管理

發(fā)布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CentOS学习笔记--程序管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

程序管理

一個程序被加載到內(nèi)存當(dāng)中運行,那么在內(nèi)存內(nèi)的那個數(shù)據(jù)就被稱為程序(process)。程序是操作系統(tǒng)上非常重要的概念, 所有系統(tǒng)上面跑的數(shù)據(jù)都會以程序的型態(tài)存在。那么系統(tǒng)的程序有哪些狀態(tài)?不同的狀態(tài)會如何影響系統(tǒng)的運行? 程序之間是否可以互相控管等等的,這些都是我們所必須要知道的項目。本節(jié)節(jié)選自鳥哥的 Linux 私房菜 -- 基礎(chǔ)學(xué)習(xí)篇目錄 第十七章、程序管理與 SELinux 初探

什么是程序 (process)

  • 程序 (program):通常為 binary program ,放置在儲存媒體中 (如硬盤、光盤、軟盤、磁帶等), 為實體文件的型態(tài)存在;
  • 程序 (process):程序被觸發(fā)后,運行者的權(quán)限與屬性、程序的程序碼與所需數(shù)據(jù)等都會被加載內(nèi)存中, 操作系統(tǒng)并給予這個內(nèi)存內(nèi)的單元一個識別碼 (PID),可以說,程序就是一個正在運行中的程序。

子程序與父程序:

當(dāng)我們登陸系統(tǒng)后,會取得一個 bash 的 shell ,然后,我們用這個 bash 提供的介面去運行另一個命令,例如 /usr/bin/passwd 或者是 touch 等等,那些另外運行的命令也會被觸發(fā)成為 PID ,呵呵!那個后來運行命令才產(chǎn)生的 PID 就是『子程序』了,而在我們原本的 bash 環(huán)境下,就稱為『父程序』了!

例題:

請在目前的 bash 環(huán)境下,再觸發(fā)一次 bash ,并以『 ps -l 』這個命令觀察程序相關(guān)的輸出資訊。

答:

直接運行 bash ,會進(jìn)入到子程序的環(huán)境中,然后輸入 ps -l 后,出現(xiàn):

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 8074 8072 2 76 0 - 1287 wait pts/1 00:00:00 bash 0 S 0 8102 8074 4 76 0 - 1287 wait pts/1 00:00:00 bash 4 R 0 8118 8102 0 78 0 - 1101 - pts/1 00:00:00 ps

有看到那個 PID 與 PPID 嗎?第一個 bash 的 PID 與第二個 bash 的 PPID 都是 8074 啊, 因為第二個 bash 是來自於第一個所產(chǎn)生的嘛!另外,每部主機的程序啟動狀態(tài)都不一樣, 所以在你的系統(tǒng)上面看到的 PID 與我這里的顯示一定不同!那是正常的!詳細(xì)的 ps 命令我們會在本章稍后介紹, 這里你只要知道 ps -l 可以查閱到相關(guān)的程序資訊即可。

很多朋友常常會發(fā)現(xiàn):『咦!明明我將有問題的程序關(guān)閉了,怎么過一陣子他又自動的產(chǎn)生? 而且新產(chǎn)生的那個程序的 PID 與原先的還不一樣,這是怎么回事呢?』不要懷疑,如果不是 crontab 工作排程的影響,肯定有一支父程序存在,所以你殺掉子程序后, 父程序就會主動再生一支!那怎么辦?正所謂這:『擒賊先擒王』,找出那支父程序,然后將他刪除就對啦!

程序的觀察

既然程序這么重要,那么我們?nèi)绾尾殚喯到y(tǒng)上面正在運行當(dāng)中的程序呢?很簡單啊! 利用靜態(tài)的 ps 或者是動態(tài)的 top,還能以 pstree 來查閱程序樹之間的關(guān)系喔!

  • ps :將某個時間點的程序運行情況擷取下來 [root@www ~]# ps aux <==觀察系統(tǒng)所有的程序數(shù)據(jù) [root@www ~]# ps -lA <==也是能夠觀察所有系統(tǒng)的數(shù)據(jù) [root@www ~]# ps axjf <==連同部分程序樹狀態(tài) 選項與參數(shù): -A :所有的 process 均顯示出來,與 -e 具有同樣的效用; -a :不與 terminal 有關(guān)的所有 process-u :有效使用者 (effective user) 相關(guān)的 process ; x :通常與 a 這個參數(shù)一起使用,可列出較完整資訊。 輸出格式規(guī)劃: l :較長、較詳細(xì)的將該 PID 的的資訊列出; j :工作的格式 (jobs format) -f :做一個更為完整的輸出。
    • 僅觀察自己的 bash 相關(guān)程序: ps -l 范例一:將目前屬於您自己這次登陸的 PID 與相關(guān)資訊列示出來(只與自己的 bash 有關(guān)) [root@www ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 13639 13637 0 75 0 - 1287 wait pts/1 00:00:00 bash 4 R 0 13700 13639 0 77 0 - 1101 - pts/1 00:00:00 ps

系統(tǒng)整體的程序運行是非常多的,但如果使用 ps -l 則僅列出與你的操作環(huán)境 (bash) 有關(guān)的程序而已, 亦即最上一級的父程序會是你自己的 bash 而沒有延伸到 init 這支程序去!那么 ps -l 秀出來的數(shù)據(jù)有哪些呢? 我們就來觀察看看:

  • F:代表這個程序旗標(biāo) (process flags),說明這個程序的總結(jié)權(quán)限,常見號碼有:
    • 若為 4 表示此程序的權(quán)限為 root ;
    • 若為 1 則表示此子程序僅進(jìn)行復(fù)制(fork)而沒有實際運行(exec)。
  • S:代表這個程序的狀態(tài) (STAT),主要的狀態(tài)有:
    • R (Running):該程序正在運行中;
    • S (Sleep):該程序目前正在睡眠狀態(tài)(idle),但可以被喚醒(signal)。
    • D :不可被喚醒的睡眠狀態(tài),通常這支程序可能在等待 I/O 的情況(ex>列印)
    • T :停止?fàn)顟B(tài)(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態(tài);
    • Z (Zombie):僵尸狀態(tài),程序已經(jīng)終止但卻無法被移除至內(nèi)存外。
  • UID/PID/PPID:代表『此程序被該 UID 所擁有/程序的 PID 號碼/此程序的父程序 PID 號碼』
  • C:代表 CPU 使用率,單位為百分比;
  • PRI/NI:Priority/Nice 的縮寫,代表此程序被 CPU 所運行的優(yōu)先順序,數(shù)值越小代表該程序越快被 CPU 運行。詳細(xì)的 PRI 與 NI 將在下一小節(jié)說明。
  • ADDR/SZ/WCHAN:都與內(nèi)存有關(guān),ADDR 是 kernel function,指出該程序在內(nèi)存的哪個部分,如果是個 running 的程序,一般就會顯示『 - 』 / SZ 代表此程序用掉多少內(nèi)存 / WCHAN 表示目前程序是否運行中,同樣的, 若為 - 表示正在運行中。
  • TTY:登陸者的終端機位置,若為遠(yuǎn)程登陸則使用動態(tài)終端介面 (pts/n);
  • TIME:使用掉的 CPU 時間,注意,是此程序?qū)嶋H花費 CPU 運行的時間,而不是系統(tǒng)時間;
  • CMD:就是 command 的縮寫,造成此程序的觸發(fā)程序之命令為何。

所以你看到的 ps -l 輸出信息中,他說明的是:『bash 的程序?qū)凫?UID 為 0 的使用者,狀態(tài)為睡眠 (sleep), 之所以為睡眠因為他觸發(fā)了 ps (狀態(tài)為 run) 之故。此程序的 PID 為 13639,優(yōu)先運行順序為 75 , 下達(dá) bash 所取得的終端介面為 pts/1 ,運行狀態(tài)為等待 (wait) 。』這樣已經(jīng)夠清楚了吧? 您自己嘗試解析一下那么 ps 那一行代表的意義為何呢? ^_^

接下來讓我們使用 ps 來觀察一下系統(tǒng)內(nèi)所有的程序狀態(tài)吧!

觀察系統(tǒng)所有程序: ps aux 范例二:列出目前所有的正在內(nèi)存當(dāng)中的程序: [root@www ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2064 616 ? Ss Mar11 0:01 init [5] root 2 0.0 0.0 0 0 ? S< Mar11 0:00 [migration/0] root 3 0.0 0.0 0 0 ? SN Mar11 0:00 [ksoftirqd/0] .....(中間省略)..... root 13639 0.0 0.2 5148 1508 pts/1 Ss 11:44 0:00 -bash root 14232 0.0 0.1 4452 876 pts/1 R+ 15:52 0:00 ps aux root 18593 0.0 0.0 2240 476 ? Ss Mar14 0:00 /usr/sbin/atd

你會發(fā)現(xiàn) ps -l 與 ps aux 顯示的項目并不相同!在 ps aux 顯示的項目中,各欄位的意義為:

  • USER:該 process 屬於那個使用者帳號的?
  • PID :該 process 的程序識別碼。
  • %CPU:該 process 使用掉的 CPU 資源百分比;
  • %MEM:該 process 所占用的實體內(nèi)存百分比;
  • VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)
  • RSS :該 process 占用的固定的內(nèi)存量 (Kbytes)
  • TTY :該 process 是在那個終端機上面運行,若與終端機無關(guān)則顯示 ?,另外, tty1-tty6 是本機上面的登陸者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機的程序。
  • STAT:該程序目前的狀態(tài),狀態(tài)顯示與 ps -l 的 S 旗標(biāo)相同 (R/S/T/Z)
  • START:該 process 被觸發(fā)啟動的時間;
  • TIME :該 process 實際使用 CPU 運行的時間。
  • COMMAND:該程序的實際命令為何?

一般來說,ps aux 會依照 PID 的順序來排序顯示,我們還是以 13639 那個 PID 那行來說明!該行的意義為『 root 運行的 bash PID 為 13639,占用了 0.2% 的內(nèi)存容量百分比,狀態(tài)為休眠 (S),該程序啟動的時間為 11:44 , 且取得的終端機環(huán)境為 pts/1 。』與 ps aux 看到的其實是同一個程序啦!這樣可以理解嗎? 讓我們繼續(xù)使用 ps 來觀察一下其他的資訊吧!

范例三:以范例一的顯示內(nèi)容,顯示出所有的程序: [root@www ~]# ps -lA F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 76 0 - 435 - ? 00:00:01 init 1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0 1 S 0 3 1 0 70 -5 - 0 worker ? 00:00:00 events/0 ....(以下省略).... # 你會發(fā)現(xiàn)每個欄位與 ps -l 的輸出情況相同,但顯示的程序則包括系統(tǒng)所有的程序。 范例四:列出類似程序樹的程序顯示: [root@www ~]# ps axjf PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND0 1 1 1 ? -1 Ss 0 0:01 init [5] .....(中間省略).....1 4586 4586 4586 ? -1 Ss 0 0:00 /usr/sbin/sshd4586 13637 13637 13637 ? -1 Ss 0 0:00 \_ sshd: root@pts/1 13637 13639 13639 13639 pts/1 14266 Ss 0 0:00 \_ -bash 13639 14266 14266 13639 pts/1 14266 R+ 0 0:00 \_ ps axjf .....(后面省略)..... 看出來了吧?其實鳥哥在進(jìn)行一些測試時,都是以網(wǎng)絡(luò)連線進(jìn)主機來測試的,所以羅,你會發(fā)現(xiàn)其實程序之間是有相關(guān)性的啦! 不過,其實還可以使用 pstree 來達(dá)成這個程序樹喔!以上面的例子來看,鳥哥是透過 sshd 提供的網(wǎng)絡(luò)服務(wù)取得一個程序, 該程序提供 bash 給我使用,而我透過 bash 再去運行 ps axjf ! 范例五:找出與 cron 與 syslog 這兩個服務(wù)有關(guān)的 PID 號碼? [root@www ~]# ps aux | egrep '(cron|syslog)' root 4286 0.0 0.0 1720 572 ? Ss Mar11 0:00 syslogd -m 0 root 4661 0.0 0.1 5500 1192 ? Ss Mar11 0:00 crond root 14286 0.0 0.0 4116 592 pts/1 R+ 16:15 0:00 egrep (cron|syslog) # 所以號碼是 4286 及 4661 這兩個羅!就是這樣找的啦! 除此之外,我們必須要知道的是『僵尸 (zombie) 』程序是什么? 通常,造成僵尸程序的成因是因為該程序應(yīng)該已經(jīng)運行完畢,或者是因故應(yīng)該要終止了, 但是該程序的父程序卻無法完整的將該程序結(jié)束掉,而造成那個程序一直存在內(nèi)存當(dāng)中。 如果你發(fā)現(xiàn)在某個程序的 CMD 后面還接上 <defunct> 時,就代表該程序是僵尸程序啦,例如: apache 8683 0.0 0.9 83384 9992 ? Z 14:33 0:00 /usr/sbin/httpd <defunct> 當(dāng)系統(tǒng)不穩(wěn)定的時候就容易造成所謂的僵尸程序,可能是因為程序?qū)懙牟缓美?#xff0c;或者是使用者的操作習(xí)慣不良等等所造成。 如果你發(fā)現(xiàn)系統(tǒng)中很多僵尸程序時,記得啊!要找出該程序的父程序,然后好好的做個追蹤,好好的進(jìn)行主機的環(huán)境最佳化啊! 看看有什么地方需要改善的,不要只是直接將他 kill 掉而已呢!不然的話,萬一他一直產(chǎn)生,那可就麻煩了!事實上,通常僵尸程序都已經(jīng)無法控管,而直接是交給 init 這支程序來負(fù)責(zé)了,偏偏 init 是系統(tǒng)第一支運行的程序, 他是所有程序的父程序!我們無法殺掉該程序的 (殺掉他,系統(tǒng)就死掉了!),所以羅,如果產(chǎn)生僵尸程序, 而系統(tǒng)過一陣子還沒有辦法透過核心非經(jīng)常性的特殊處理來將該程序刪除時,那你只好透過 reboot 的方式來將該程序抹去了! top:動態(tài)觀察程序的變化

相對於 ps 是擷取一個時間點的程序狀態(tài), top 則可以持續(xù)偵測程序運行的狀態(tài)!使用方式如下:

[root@www ~]# top [-d 數(shù)字] | top [-bnp] 選項與參數(shù): -d :后面可以接秒數(shù),就是整個程序畫面升級的秒數(shù)。默認(rèn)是 5 秒; -b :以批量的方式運行 top ,還有更多的參數(shù)可以使用喔!通常會搭配數(shù)據(jù)流重導(dǎo)向來將批量的結(jié)果輸出成為文件。 -n :與 -b 搭配,意義是,需要進(jìn)行幾次 top 的輸出結(jié)果。 -p :指定某些個 PID 來進(jìn)行觀察監(jiān)測而已。 在 top 運行過程當(dāng)中可以使用的按鍵命令:? :顯示在 top 當(dāng)中可以輸入的按鍵命令;P :以 CPU 的使用資源排序顯示;M :以 Memory 的使用資源排序顯示;N :以 PID 來排序喔!T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。k :給予某個 PID 一個訊號 (signal)r :給予某個 PID 重新制訂一個 nice 值。q :離開 top 軟件的按鍵。 接下來讓我們實際觀察一下如何使用 top 與 top 的畫面吧! 范例一:每兩秒鐘升級一次 top ,觀察整體資訊: [root@www ~]# top -d 2 top - 17:03:09 up 7 days, 16:16, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie Cpu(s): 0.5%us, 0.5%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 742664k total, 681672k used, 60992k free, 125336k buffers Swap: 1020088k total, 28k used, 1020060k free, 311156k cached<==如果加入 k 或 r 時,就會有相關(guān)的字樣出現(xiàn)在這里喔!PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14398 root 15 0 2188 1012 816 R 0.5 0.1 0:00.05 top1 root 15 0 2064 616 528 S 0.0 0.1 0:01.38 init2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/03 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

top 也是個挺不錯的程序觀察工具!但不同於 ps 是靜態(tài)的結(jié)果輸出, top 這個程序可以持續(xù)的監(jiān)測整個系統(tǒng)的程序工作狀態(tài)。 在默認(rèn)的情況下,每次升級程序資源的時間為 5 秒,不過,可以使用 -d 來進(jìn)行修改。 top 主要分為兩個畫面,上面的畫面為整個系統(tǒng)的資源使用狀態(tài),基本上總共有六行,顯示的內(nèi)容依序是:

  • 第一行(top...):這一行顯示的資訊分別為:
    • 目前的時間,亦即是 17:03:09 那個項目;
    • 啟動到目前為止所經(jīng)過的時間,亦即是 up 7days, 16:16 那個項目;
    • 已經(jīng)登陸系統(tǒng)的使用者人數(shù),亦即是 1 user項目;
    • 系統(tǒng)在 1, 5, 15 分鐘的平均工作負(fù)載。我們在第十六章談到的 batch 工作方式為負(fù)載小於 0.8 就是這個負(fù)載羅!代表的是 1, 5, 15 分鐘,系統(tǒng)平均要負(fù)責(zé)運行幾個程序(工作)的意思。 越小代表系統(tǒng)越閑置,若高於 1 得要注意你的系統(tǒng)程序是否太過繁復(fù)了!
  • 第二行(Tasks...):顯示的是目前程序的總量與個別程序在什么狀態(tài)(running, sleeping, stopped, zombie)。 比較需要注意的是最后的 zombie 那個數(shù)值,如果不是 0 !好好看看到底是那個 process 變成僵尸了吧?
  • 第三行(Cpus...):顯示的是 CPU 的整體負(fù)載,每個項目可使用 ? 查閱。需要特別注意的是 %wa ,那個項目代表的是 I/O wait, 通常你的系統(tǒng)會變慢都是 I/O 產(chǎn)生的問題比較大!因此這里得要注意這個項目耗用 CPU 的資源喔! 另外,如果是多核心的設(shè)備,可以按下數(shù)字鍵『1』來切換成不同 CPU 的負(fù)載率。
  • 第四行與第五行:表示目前的實體內(nèi)存與虛擬內(nèi)存 (Mem/Swap) 的使用情況。 再次重申,要注意的是 swap 的使用量要盡量的少!如果 swap 被用的很大量,表示系統(tǒng)的實體內(nèi)存實在不足!
  • 第六行:這個是當(dāng)在 top 程序當(dāng)中輸入命令時,顯示狀態(tài)的地方。

至於 top 下半部分的畫面,則是每個 process 使用的資源情況。比較需要注意的是:

  • PID :每個 process 的 ID 啦!
  • USER:該 process 所屬的使用者;
  • PR :Priority 的簡寫,程序的優(yōu)先運行順序,越小越早被運行;
  • NI :Nice 的簡寫,與 Priority 有關(guān),也是越小越早被運行;
  • %CPU:CPU 的使用率;
  • %MEM:內(nèi)存的使用率;
  • TIME+:CPU 使用時間的累加;

top 默認(rèn)使用 CPU 使用率 (%CPU) 作為排序的重點,如果你想要使用內(nèi)存使用率排序,則可以按下『M』, 若要回復(fù)則按下『P』即可。如果想要離開 top 則按下『 q 』吧!如果你想要將 top 的結(jié)果輸出成為文件時, 可以這樣做:

范例二:將 top 的資訊進(jìn)行 2 次,然后將結(jié)果輸出到 /tmp/top.txt [root@www ~]# top -b -n 2 > /tmp/top.txt # 這樣一來,嘿嘿!就可以將 top 的資訊存到 /tmp/top.txt 文件中了。
  • pstree
[root@www ~]# pstree [-A|U] [-up] 選項與參數(shù): -A :各程序樹之間的連接以 ASCII 字節(jié)來連接; -U :各程序樹之間的連接以萬國碼的字節(jié)來連接。在某些終端介面下可能會有錯誤; -p :并同時列出每個 process 的 PID; -u :并同時列出每個 process 的所屬帳號名稱。范例一:列出目前系統(tǒng)上面所有的程序樹的相關(guān)性: [root@www ~]# pstree -A init-+-acpid|-atd|-auditd-+-audispd---{audispd} <==這行與底下一行為 auditd 分出來的子程序| `-{auditd}|-automount---4*[{automount}] <==默認(rèn)情況下,相似的程序會以數(shù)字顯示 ....(中間省略)....|-sshd---sshd---bash---pstree <==就是我們命令運行的那個相依性! ....(底下省略).... # 注意一下,為了節(jié)省版面,所以鳥哥已經(jīng)刪去很多程序了! 范例二:承上題,同時秀出 PID 與 users [root@www ~]# pstree -Aup init(1)-+-acpid(4555)|-atd(18593)|-auditd(4256)-+-audispd(4258)---{audispd}(4261)| `-{auditd}(4257)|-automount(4536)-+-{automount}(4537) <==程序相似但 PID 不同!| |-{automount}(4538)| |-{automount}(4541)| `-{automount}(4544) ....(中間省略)....|-sshd(4586)---sshd(16903)---bash(16905)---pstree(16967) ....(中間省略)....|-xfs(4692,xfs) <==因為此程序擁有者并非運行 pstree 者!所以列出帳號 ....(底下省略).... # 在括號 () 內(nèi)的即是 PID 以及該程序的 owner 喔!不過,由於我是使用 # root 的身份運行此一命令,所以屬於 root 的程序就不會顯示出來啦!

如果要找程序之間的相關(guān)性,這個 pstree 真是好用到不行!直接輸入 pstree 可以查到程序相關(guān)性,如上表所示,還會使用線段將相關(guān)性程序連結(jié)起來哩! 一般連結(jié)符號可以使用 ASCII 碼即可,但有時因為語系問題會主動的以 Unicode 的符號來連結(jié), 但因為可能終端機無法支持該編碼,或許會造成亂碼問題。因此可以加上 -A 選項來克服此類線段亂碼問題。

程序的管理

  • kill -signal PID

kill 可以幫我們將這個 signal 傳送給某個工作 (%jobnumber) 或者是某個 PID (直接輸入數(shù)字)。 要再次強調(diào)的是: kill 后面直接加數(shù)字與加上 %number 的情況是不同的! 這個很重要喔!因為工作控制中有 1 號工作,但是 PID 1 號則是專指『 init 』這支程序!你怎么可以將 init 關(guān)閉呢? 關(guān)閉 init ,你的系統(tǒng)就當(dāng)?shù)袅税?#xff01;所以記得那個 % 是專門用在工作控制的喔! 我們就活用一下 kill 與剛剛上面提到的 ps 來做個簡單的練習(xí)吧!

例題: 以 ps 找出 syslog 這個程序的 PID 后,再使用 kill 傳送信息,使得 syslog 可以重新讀取配置檔。 答: 由於需要重新讀取配置檔,因此 signal 是 1 號。至於找出 syslog 的 PID 可以是這樣做: ps aux | grep 'syslog' | grep -v 'grep'| awk '{print $2}' 接下來則是實際使用 kill -1 PID,因此,整串命令會是這樣: kill -SIGHUP $(ps aux|grep 'syslog'|grep -v 'grep'|awk '{print $2}') 如果要確認(rèn)有沒有重新啟動 syslog ,可以參考登錄檔的內(nèi)容,使用如下命令查閱: tail -5 /var/log/messages 如果你有看到類似『Mar 19 15:08:20 www syslogd 1.4.1: restart』之類的字樣,就是表示 syslogd 在 3/19 有重新啟動 (restart) 過了!
  • killall -signal 命令名稱

由於 kill 后面必須要加上 PID (或者是 job number),所以,通常 kill 都會配合 ps, pstree 等命令,因為我們必須要找到相對應(yīng)的那個程序的 ID 嘛!但是,如此一來,很麻煩~有沒有可以利用『下達(dá)命令的名稱』來給予訊號的?舉例來說,能不能直接將 syslog 這個程序給予一個 SIGHUP 的訊號呢?可以的!用 killall 吧!

[root@www ~]# killall [-iIe] [command name] 選項與參數(shù): -i :interactive 的意思,互動式的,若需要刪除時,會出現(xiàn)提示字節(jié)給使用者; -e :exact 的意思,表示『后面接的 command name 要一致』,但整個完整的命令不能超過 15 個字節(jié)。 -I :命令名稱(可能含參數(shù))忽略大小寫。范例一:給予 syslogd 這個命令啟動的 PID 一個 SIGHUP 的訊號 [root@www ~]# killall -1 syslogd # 如果用 ps aux 仔細(xì)看一下,syslogd 才是完整的命令名稱。但若包含整個參數(shù), # 則 syslogd -m 0 才是完整的呢! 范例二:強制終止所有以 httpd 啟動的程序 [root@www ~]# killall -9 httpd 范例三:依次詢問每個 bash 程序是否需要被終止運行! [root@www ~]# killall -i -9 bash Kill bash(16905) ? (y/N) n <==這個不殺! Kill bash(17351) ? (y/N) y <==這個殺掉! # 具有互動的功能!可以詢問你是否要刪除 bash 這個程序。要注意,若沒有 -i 的參數(shù), # 所有的 bash 都會被這個 root 給殺掉!包括 root 自己的 bash 喔! ^_^

總之,要刪除某個程序,我們可以使用 PID 或者是啟動該程序的命令名稱, 而如果要刪除某個服務(wù)呢?呵呵!最簡單的方法就是利用 killall , 因為他可以將系統(tǒng)當(dāng)中所有以某個命令名稱啟動的程序全部刪除。 舉例來說,上面的范例二當(dāng)中,系統(tǒng)內(nèi)所有以 httpd 啟動的程序,就會通通的被刪除啦! ^_^

系統(tǒng)資源的觀察

  • free :觀察內(nèi)存使用情況 [root@www ~]# free [-b|-k|-m|-g] [-t] 選項與參數(shù): -b :直接輸入 free 時,顯示的單位是 Kbytes,我們可以使用 b(bytes), m(Mbytes)k(Kbytes), 及 g(Gbytes) 來顯示單位喔! -t :在輸出的最終結(jié)果,顯示實體內(nèi)存與 swap 的總量。范例一:顯示目前系統(tǒng)的內(nèi)存容量 [root@www ~]# free -m total used free shared buffers cached Mem: 725 666 59 0 132 287 -/+ buffers/cache: 245 479 Swap: 996 0 996 仔細(xì)看看,我的系統(tǒng)當(dāng)中有 725MB 左右的實體內(nèi)存,我的 swap 有 1GB 左右, 那我使用 free -m 以 MBytes 來顯示時,就會出現(xiàn)上面的資訊。Mem 那一行顯示的是實體內(nèi)存的量, Swap 則是虛擬內(nèi)存的量。 total 是總量, used 是已被使用的量, free 則是剩余可用的量。
  • uname:查閱系統(tǒng)與核心相關(guān)資訊 [root@www ~]# uname [-asrmpi] 選項與參數(shù): -a :所有系統(tǒng)相關(guān)的資訊,包括底下的數(shù)據(jù)都會被列出來; -s :系統(tǒng)核心名稱 -r :核心的版本 -m :本系統(tǒng)的硬件名稱,例如 i686 或 x86_64 等; -p :CPU 的類型,與 -m 類似,只是顯示的是 CPU 的類型! -i :硬件的平臺 (ix86)范例一:輸出系統(tǒng)的基本資訊 [root@www ~]# uname -a Linux www.vbird.tsai 2.6.18-92.el5 #1 SMP Tue Jun 10 18:49:47 EDT 2008 i686 i686 i386 GNU/Linux
  • uptime:觀察系統(tǒng)啟動時間與工作負(fù)載 [root@www ~]# uptime15:39:13 up 8 days, 14:52, 1 user, load average: 0.00, 0.00, 0.00 # top 這個命令已經(jīng)談過相關(guān)資訊,不再聊!
  • netstat :追蹤網(wǎng)絡(luò)或插槽檔 [root@www ~]# netstat -[atunlp] 選項與參數(shù): -a :將目前系統(tǒng)上所有的連線、監(jiān)聽、Socket 數(shù)據(jù)都列出來 -t :列出 tcp 網(wǎng)絡(luò)封包的數(shù)據(jù) -u :列出 udp 網(wǎng)絡(luò)封包的數(shù)據(jù) -n :不以程序的服務(wù)名稱,以埠號 (port number) 來顯示; -l :列出目前正在網(wǎng)絡(luò)監(jiān)聽 (listen) 的服務(wù); -p :列出該網(wǎng)絡(luò)服務(wù)的程序 PID 范例一:列出目前系統(tǒng)已經(jīng)創(chuàng)建的網(wǎng)絡(luò)連線與 unix socket 狀態(tài) [root@www ~]# netstat Active Internet connections (w/o servers) <==與網(wǎng)絡(luò)較相關(guān)的部分 Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 132 192.168.201.110:ssh 192.168.:vrtl-vmf-sa ESTABLISHED Active UNIX domain sockets (w/o servers) <==與本機的程序自己的相關(guān)性(非網(wǎng)絡(luò)) Proto RefCnt Flags Type State I-Node Path unix 20 [ ] DGRAM 9153 /dev/log unix 3 [ ] STREAM CONNECTED 13317 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 13233 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 13208 /tmp/.font-unix/fs7100 ....(中間省略)....
  • dmesg :分析核心產(chǎn)生的信息 范例一:輸出所有的核心啟動時的資訊 [root@www ~]# dmesg | more 范例二:搜尋啟動的時候,硬盤的相關(guān)資訊為何? [root@www ~]# dmesg | grep -i hdide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMAide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio hda: IC35L040AVER07-0, ATA DISK drive hdb: ASUS DRW-2014S1, ATAPI CD/DVD-ROM drive hda: max request size: 128KiB ....(底下省略)....
  • vmstat :偵測系統(tǒng)資源變化 [root@www ~]# vmstat [-a] [延遲 [總計偵測次數(shù)]] <==CPU/內(nèi)存等資訊 [root@www ~]# vmstat [-fs] <==內(nèi)存相關(guān) [root@www ~]# vmstat [-S 單位] <==配置顯示數(shù)據(jù)的單位 [root@www ~]# vmstat [-d] <==與磁碟有關(guān) [root@www ~]# vmstat [-p 分割槽] <==與磁碟有關(guān) 選項與參數(shù): -a :使用 inactive/active(活躍與否) 取代 buffer/cache 的內(nèi)存輸出資訊; -f :啟動到目前為止,系統(tǒng)復(fù)制 (fork) 的程序數(shù); -s :將一些事件 (啟動至目前為止) 導(dǎo)致的內(nèi)存變化情況列表說明; -S :后面可以接單位,讓顯示的數(shù)據(jù)有單位。例如 K/M 取代 bytes 的容量; -d :列出磁碟的讀寫總量統(tǒng)計表 -p :后面列出分割槽,可顯示該分割槽的讀寫總量統(tǒng)計表范例一:統(tǒng)計目前主機 CPU 狀態(tài),每秒一次,共計三次! [root@www ~]# vmstat 1 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r b swpd free buff cache si so bi bo in cs us sy id wa st0 0 28 61540 137000 291960 0 0 4 5 38 55 0 0 100 0 00 0 28 61540 137000 291960 0 0 0 0 1004 50 0 0 100 0 00 0 28 61540 137000 291964 0 0 0 0 1022 65 0 0 100 0 0

轉(zhuǎn)載于:https://www.cnblogs.com/ysztcn/p/4179592.html

總結(jié)

以上是生活随笔為你收集整理的CentOS学习笔记--程序管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。