Linux【实操篇】—— 进程管理、服务管理、软件包管理(rpm、yum)
目錄???????
一、進(jìn)程管理
1. 查看進(jìn)程信息
2. 查看父進(jìn)程信息
3. 終止進(jìn)程
4. 查看進(jìn)程樹
5. 動(dòng)態(tài)監(jiān)控進(jìn)程
二、服務(wù)管理
1. 服務(wù)管理
2. 服務(wù)的運(yùn)行級(jí)別
3. 服務(wù)管理指令 systemctl(CentOS 7.0之后)
4. 打開/關(guān)閉指定端口
三、軟件包管理(rpm、yum)
1. rpm?包的管理
2. yum 包的管理
一、進(jìn)程管理
????????在 Linux 操作系統(tǒng)中,每一個(gè)執(zhí)行的程序都是被稱之為進(jìn)程,且每個(gè)進(jìn)程都有它專屬的進(jìn)程號(hào) pid;每個(gè)進(jìn)程可能都以前臺(tái)和后臺(tái)兩種方式存在,前臺(tái)進(jìn)程就是用戶直接可在屏幕上操作的部分,與用戶直接交互;后臺(tái)進(jìn)程則無法在屏幕看到,只在后臺(tái)運(yùn)行(一般系統(tǒng)服務(wù)都是以后臺(tái)進(jìn)程的方式存在,常駐于 系統(tǒng),只有關(guān)機(jī)才會(huì)結(jié)束)。
程序 是靜態(tài)的實(shí)體;
進(jìn)程 則是動(dòng)態(tài)的實(shí)體,可以理解為運(yùn)行著的程序;
1. 查看進(jìn)程信息
使用指令 ps 可以查看當(dāng)前系統(tǒng)正在運(yùn)行的進(jìn)程以及它們執(zhí)行的狀態(tài);
- ps -a? //顯示當(dāng)前終端所有的進(jìn)程信息
- ps -u? //以用戶的格式顯示進(jìn)程信息
- ps -x? //顯示后臺(tái)進(jìn)程運(yùn)行的參數(shù)
- ps -aux | more? //分頁查看所有進(jìn)程信息
如下分頁查看所有進(jìn)程信息:
各字段含義如下:
2. 查看父進(jìn)程信息
除進(jìn)程本身外,進(jìn)程也可以創(chuàng)建多個(gè)子進(jìn)程,進(jìn)而就有了父進(jìn)程和子進(jìn)程的概念;
查看父進(jìn)程的信息需要先知道父進(jìn)程的 pid,此時(shí)需要使用指令 ps -ef 以全格式顯示當(dāng)前的所有進(jìn)程。例如我們查看進(jìn)程 sshd(遠(yuǎn)程登錄) 的父進(jìn)程信息(結(jié)果只需看第一條即可);
可以看到,進(jìn)程 sshd 的 id 為 1478,它的父進(jìn)程 id 為 1;此時(shí)再全格式查看進(jìn)程信息就可以找到 id 為 1 的進(jìn)程是哪個(gè)了;
以全格式查看進(jìn)程信息時(shí)新增了 PPID 字段,代表此進(jìn)程的父進(jìn)程 pid;PPID 為 0 表示該進(jìn)程沒有父進(jìn)程。
3. 終止進(jìn)程
需要停止某進(jìn)程時(shí),可以使用指令 kill 進(jìn)程號(hào) 或者 killall 進(jìn)程名 分別通過進(jìn)程號(hào)或進(jìn)程名終止該進(jìn)程;需要注意的是,如果一個(gè)進(jìn)程下有子進(jìn)程,該進(jìn)程被終止后它的所有子進(jìn)程也將被終止。
終止進(jìn)程指令常用選項(xiàng):
- -9? //強(qiáng)制進(jìn)程立即停止
4. 查看進(jìn)程樹
查看進(jìn)程樹使用指令 pstree,相較于使用 ps 指令它可以更加直觀;
- pstree -p? //顯示進(jìn)程的pid
- pstree -u? //顯示進(jìn)程的所屬用戶
5. 動(dòng)態(tài)監(jiān)控進(jìn)程
動(dòng)態(tài)監(jiān)控進(jìn)程使用指令 top,功能與 ps 指令相似,區(qū)別在于 top 是動(dòng)態(tài)的監(jiān)控進(jìn)程,可以查看進(jìn)程的更新過程。
- top -d 秒數(shù)? //指定top命令每隔幾秒更新一次當(dāng)前進(jìn)程的執(zhí)行情況(默認(rèn)3s)
- top -i? //top指令不再顯示任何僵死或者閑置的進(jìn)程
- top -p? //通過進(jìn)程號(hào)pid指定監(jiān)控某個(gè)進(jìn)程執(zhí)行情況
在使用 top 指令動(dòng)態(tài)查看進(jìn)程的過程中,我們也可以進(jìn)行一些交互操作:
- 按下 “P” 使進(jìn)程按照? CPU 的使用率進(jìn)行排序(默認(rèn))
- 按下 “M” 按照內(nèi)存占用率排序
- 按下 “N” 按照 pid 進(jìn)行排序
- 按下 “u” 再輸入用戶名,監(jiān)控指定用戶的進(jìn)程
- 按下 “k” 再輸入進(jìn)程號(hào),終止指定的進(jìn)程
- 按下 “q” 退出 top 指令
二、服務(wù)管理
? ? ? ? 服務(wù)管理中的服務(wù)本質(zhì)上就是一個(gè)后臺(tái)的進(jìn)程。服務(wù)運(yùn)行在后臺(tái),監(jiān)聽某個(gè)端口等待某個(gè)程序的請(qǐng)求,如 sshd、mysqld、防火墻?等都屬于服務(wù),服務(wù)又被稱為守護(hù)進(jìn)程。
1. 服務(wù)管理
服務(wù)管理使用的指令為 service 服務(wù)名 選項(xiàng)(注意在 CentOS 7.0 之后不再使用 service 指令,由 systemctl 指令代替);
常用選項(xiàng)有:
- start? //啟動(dòng)服務(wù)
- stop? //關(guān)閉服務(wù)
- restart? //重啟
- reload? //重載
- status? //狀態(tài)
當(dāng)然,service 指令依舊可以管理若干服務(wù),具體存儲(chǔ)在 /etc/init.d 目錄下。如下是 7.0 版本之后 services 指令所管理的服務(wù):
使用指令 setup 可以查看 Linux 操作系統(tǒng)的所有服務(wù);如下為所有系統(tǒng)服務(wù),前面帶 [*] 的代表此服務(wù)會(huì)隨著操作系統(tǒng)的啟動(dòng)而自動(dòng)啟動(dòng),我們可以使用空格鍵來選擇它是否選中。
2. 服務(wù)的運(yùn)行級(jí)別
之前已經(jīng)有介紹,Linux 操作系統(tǒng)中一共有七種運(yùn)行級(jí)別;
- 0 - 系統(tǒng)停機(jī)狀態(tài),系統(tǒng)默認(rèn)運(yùn)行級(jí)別不能設(shè)置為0,否則無法正常啟動(dòng)(基本不用)
- 1 - 單用戶工作狀態(tài),常用于系統(tǒng)維護(hù),沒有遠(yuǎn)程登陸功能(基本不用)
- 2 - 多用戶工作狀態(tài),不支持網(wǎng)絡(luò)服務(wù)
- 3 - 多用戶狀態(tài),無界面,登陸后進(jìn)入控制臺(tái)命令行模式(最常用)
- 4 - 系統(tǒng)未使用
- 5 - 圖形界面模式(常用)
- 6 - 系統(tǒng)正常關(guān)閉并重啟,默認(rèn)運(yùn)行級(jí)別不能設(shè)為6,否則不能正常啟動(dòng)
通過指令 chkconfig 可以為服務(wù)的各個(gè)運(yùn)行級(jí)別設(shè)置自啟動(dòng)或關(guān)閉自啟動(dòng)(注意該命令在 CentO S 7.0 之后也不再使用,由 systemctl 代替);
- chkconfig --list? //查看 chkconfig 命令管理的服務(wù)
- chkconfig --level 運(yùn)行級(jí)別?服務(wù)名 on/off? //設(shè)置某個(gè)服務(wù)在某個(gè)運(yùn)行級(jí)別為自啟動(dòng)或者關(guān)閉自啟動(dòng)
舉例:關(guān)閉 network 服務(wù)在運(yùn)行級(jí)別 3 的自啟動(dòng)服務(wù),再使用 --list 指令可以看到,network 服務(wù)的自啟動(dòng)功能已關(guān)閉。
打開自啟動(dòng)功能只需把 off 改為 on 即可;
使用 chkconfig 指令設(shè)置服務(wù)的自啟動(dòng)功能后,需要重啟系統(tǒng)才能生效。
3. 服務(wù)管理指令 systemctl(CentOS 7.0之后)
基本語法:systemctl 選項(xiàng) 服務(wù)名
- 常用選項(xiàng)與 service 相同
- systemctl list-unit-files? //查看當(dāng)前各個(gè)服務(wù)的自啟動(dòng)狀態(tài),可使用管道過濾
- systemctl enable 服務(wù)名? //設(shè)置服務(wù)開機(jī)自啟動(dòng)
- systemctl disable 服務(wù)名? //關(guān)閉服務(wù)開機(jī)自啟動(dòng)
- systemctl is-enabled 服務(wù)名? //查看某服務(wù)是否為自啟動(dòng)狀態(tài)
systemctl 指令設(shè)置的自啟動(dòng)服務(wù)默認(rèn)在運(yùn)行級(jí)別 3 和 5 。
systemctl 指令所管理的服務(wù)存儲(chǔ)于 /usr/lib/systemd/system 目錄下;
4. 打開/關(guān)閉指定端口
打開或關(guān)閉指定端口主要是針對(duì)防火墻服務(wù)。在平常的工作中,防 火墻都是打開狀態(tài),但是打開防火墻服務(wù)就會(huì)造成一個(gè)問題,那就是外部請(qǐng)求數(shù)據(jù)包無法再與服務(wù)器所監(jiān)聽的端口進(jìn)行通訊。這時(shí)候我們就需要打開某個(gè)指定的端口。打開/關(guān)閉指定端口使用指令 firewall;
- firewall-cmd --permanent --add-port=端口號(hào)/協(xié)議? //打開端口
- firewall-cmd --permanent --remove-port=端口號(hào)/協(xié)議? //關(guān)閉端口
- firewall-cmd --reload? //重新載入(必須重新載入新設(shè)置才會(huì)生效)
- firewall-cmd --query-port=端口/協(xié)議? //查詢端口是否開放
查詢端口和協(xié)議使用指令 netstat -anp;
三、軟件包管理(rpm、yum)
1. rpm?包的管理
rpm(RedHat Package Manage)是用于網(wǎng)絡(luò)下載包的打包及安裝工具,包含于某些 Linux 分發(fā)版本中,它會(huì)生成以 .rpm 為擴(kuò)展名的文件。
查詢已安裝的 rpm 包列表使用指令?rpm -qa,必要時(shí)可以使用管道進(jìn)行過濾。
- rpm -qa? //查詢所安裝的所有軟件包
- rpm -q 軟件包名? //查詢某軟件包是否安裝
- rpm -qi 軟件包名? //查詢軟件包信息
- rpm -ql 軟件包名? //查詢軟件包中的文件
- rpm -qf 文件全路徑名? //查詢文件所屬的軟件包
如下使用 rpm 指令查看系統(tǒng)是否安裝了 Firefox;
卸載 rpm 包使用指令?rpm -e 包名稱;
(??????刪除包的時(shí)候需要注意,如果有其他軟件依賴于所要?jiǎng)h除的包,卸載會(huì)產(chǎn)生錯(cuò)誤信息,如果想要強(qiáng)制刪除可以增加 --nodeps 選項(xiàng)如: rpm -e --nodeps 包名,但不建議此做法)
安裝 rpm 包使用指令 rpm -ivh 包全路徑名稱(i 安裝,v 提示信息,h 進(jìn)度條)。
2. yum 包的管理
yum 是 shell 前端軟件包管理器,基于 rpm 包管理,能夠從指定的服務(wù)器自動(dòng)下載 RPM 包并且安裝,可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。yum 基本指令如下:
- yum list? //查詢yum服務(wù)器上可以安裝的軟件和已安裝的軟件
- yum install 包名? //安裝指定的軟件包
總結(jié)
以上是生活随笔為你收集整理的Linux【实操篇】—— 进程管理、服务管理、软件包管理(rpm、yum)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载]只因写了一段爬虫,公司200多人
- 下一篇: HCIA第一天