9.管好进程和服务
1.查看進程
1.進程分類
進程一般分為交互進程、批處理進程和守護進程三類。上述三種進程各有各
的作用,使用場合也有所不同。
? 交互進程:由一個 shell 啟動的進程。交互進程既可以在前臺運行,也可以在后臺運行。
? 批處理進程:這種進程和終端沒有聯系,是一個進程序列。
? 守護進程:Linux 系統啟動時啟動的進程,并在后臺運行(守護進程一般是由系統在開機時通過一個叫做 init 的腳本自動激活啟動或超級管理用戶 root 來啟動)
2.進程的 描述符
進程描述符(Process Descriptor),顧名思義,就是進程的描述,即用來描述進程的數據結構,可以理解為進程的屬性。比如進程的狀態、進程的標識(PID)
USER? 啟動進程用戶
PID? 進程標志號
PPID? 父進程的 ID,父子進程的關系是管理和被管理的關系,當父進程終止時,子進程也隨之而終止。但子進程終止,父進程并不一定終止。
%CPU? 運行該進程占用 CPU 的時間與該進程總的運行時間的比例
%MEM? 該進程占用內存和總內存的比例
VSZ? 占用的虛擬內存大小
RSS? 進程占用的物理內存值
TTY? 進程建立時所對應的終端,“?”表示該進程不占用終端
STAT? 進程的狀態, 狀態分為
D,不可中斷的睡眠;
R,就緒(在可運行隊列中);
S,睡眠;
T,被跟蹤或停止;
Z,終止(僵死)的進程
W,沒有足夠的內存分頁可分配;
< 高優先序的進程;
N,低優先序的進程;
L,有內存分頁分配并鎖在內存體內(實時系統或 I/O)。
+ 位于后臺的進程
s 進程的領導者(在它之下有子進程);
START? 為進程開始時間
TIME? 為執行的時間
COMMAND 是對應的命令名
3.ps [選項]
查看系統中進程的狀態
? l 長格式輸出;
? u 按用戶名和啟動時間的順序來顯示進程;
? j 用任務格式來顯示進程;
? f 用樹形格式來顯示進程;
? a/-A 顯示所有用戶的所有進程(包括其它用戶);
? x 顯示無控制終端的進程;
? r 顯示運行中的進程;
? --sort [+|-] 字段名 按指定字段對 ps 輸出進行排序,+表示升序,-表示降序, “+”字符是可選的,因為默認按升序排列
ps 命令經常與 grep 命令一起使用來查找特定的進程
4.top 是動態監視系統進程的工具,在默認情況下,top 命令每3 秒鐘刷新一次
top [選項]
動態查看系統中進程的狀態
? -d:指定更新的間隔,以秒為單位。
? -q:沒有任何延遲的更新。如果使用者有超級用戶,則 top 命令將會以最高的優先序執行
??? -c:顯示進程完整的路徑與名稱。
還可以使用快捷鍵與 top 命令進行交互,常用的快捷鍵包括:
? space 立即更新
? >? 向下翻頁,向左一個關鍵字排序
? <? 向上翻頁
? T? 按進程運行時間進行排序,降序
? M 按內存占用情況排序,降序
? N 以進程 ID 排序,降序
? P? 按 CPU 占用情況排序,降序(默認)
? R 反向排序
? k 結束指定進程
??? q退出
2.操縱進程
1.kill [-signal] pid
kill 命令終止一個進程。
???? pid:進程的 PID 號
? -signal:表示向進程發出的信號,如果沒有指定任何信號,默認發送的信號為 SIGTERM(-15),可將指定進程終止。若仍無法終止該進程,可使用更強力的 SIGKILL(-9)信號嘗試強制終止進程
??? kill -l? 列出能發送的所有信號
2.kill 命令的工作原理是,向 Linux 系統的內核發送一個系統操作信號和某個程序的進程標志號,然后系統內核就可以對進程標志號指定的進程進行操作。
當需要終止一個前臺進程的時候,通常使用 ctrl+c 組合鍵;但是對于一個后臺進程就必須使用 kill 命令。
另外應用的場合就是在服務器管理中,對于服務器主進程,最好是按其正常的程序關閉,而不是用 kill 這樣危險的動作。
3.pkill有選擇性的向一個或一批進程發出信號,可根據進程名稱,擁有者(-u)
xkill圖形界面的kill,鼠標變成十字,點擊要關閉的進程
3.查看和操控系統服務
1.Linux 下的守護進程按照服務類型可以分為兩類:
一類是系統守護進程,為系統提供某種重要的功能,如 atd、cron、lpd、syslogd、login 等。
另一類是網絡守護進程,向用戶提供某種網絡服務,如 sshd、httpd、sendmail、xinetd 等
2.按照工作模式也可以分為兩類:
(1)獨立守護進程(stand-alone daemon)所謂獨立守護進程,就是該守護進程可以獨立運行,守護進程常駐內存,響應快,無服務啟動時間。所有獨立運行守護進程的腳本在/etc/rc.d/init.d/目錄下,由 init 腳本負責管理。
(2)超級守護進程(super daemon)RHEL 使用的超級守護進程叫做 xinted(eXtended InterNET Daemon)。xinted 是一個非常特殊的守護進程,xinetd 能夠同時監聽多個指定的端口,在接受用戶請求時,他能夠根據用戶請求的端口不同,再來啟動不同的網絡服務進程來處理這些用戶請求。可以把 xinetd 看做一個管理守護進程的守護進程,它
決定把一個客戶請求交給那個程序處理,然后啟動相應的守護進程。
3.netstat 命令是一個監控本機網絡端口狀態的非常有用的工具
netstat [選項] [參數]
輸出網絡連接, 路由表, 接口統計數據, 偽連接,及多播成員相關信息
? -r? 顯示路由表
? -I? 顯示網絡接口的連接情況(可以加上 eth0、lo 等參數)
? -s 顯示 IP、ICMP、IcmpMsg、TCP、UDP、UdpLite、TcpExt、IpExt的統計信息
? -n 以數字形式顯示地址和端口號
? -p 顯示 PID/Program name
? -l? 顯示監聽端口
? -a 顯示所有連接和監聽端口
? -t? 顯示 TCP 傳輸協議的連線狀況
? -u 顯示 UDP 傳輸協議的連線狀況
? -e 顯示關于以太網的統計數據。它列出的項目包括傳送的數據報的總字節數、錯誤數、刪除數、數據報的數量和廣播的數量。這些統計數據既有發送的數據報數量,也有接收的數據報數量。這個選項可以用來統計一些基本的網絡流量)。
輸 出 主 要 分 為 兩 部 分 :
第 一 部 分 是 活 動 網 絡 連 接 (Active Internetconnections),顯示的都是 TCP/IP 網絡連接,默認有 5 個字段:
Proto? 連接使用的協議,主要就是 TCP 和 UDP 兩種。
Recv-Q? 尚未接收的字節數。
Send-Q? 尚未發送到目標的字節數。
Local Address本地或源的地址和端口,可以是 “主機 IP:端口號”(使用-n 選項時), 也可以是“完整的主機名:端口名稱”。其中如果 IP 地址為“0.0.0.0”或者主機名為“*”就表示在所有鏈接的相應端口,如“00.0.0.0:22”就表示在本機所有鏈接的 22 端口上都進行監聽。
Foreign Address? 目標地址和端口。
State? 當前 socket 連接的狀態
?? ESTABLISHED - 連接已建立;
?? SYN_SENT:正在嘗試建立連接 (發出 SYN標志) ;
?? SYN_RECV:接收到一個連接建立請求
?? FIN_WAIT1: socket 關閉,連接中斷中;
?? FIN_WAIT2:連接已中斷,但 socket 正在等待對方回應;
?? TIME_WAIT:連接已中斷,socket 仍在等待,以處理仍然存在在網絡中的包;
?? LISTEN - 已建立監聽,socket 正在監聽端口輸入,但尚未建立連接。
第二部分是活動 Unix 域套接字(Active UNIX domain sockets),顯示的都是本地進程間通信的套接字
4.Linux 系統下共定義了 65536 個可用端口 ,這些端口又分為兩部分,
分別是:
(A)只有 root 用戶才能啟用的 port,0—1023 端口,需要用 root 身份才能啟用,這些端口主要用于系統的常見(well known)通信服務(如 http 服務使用 80 端口,ftp 服務使用 21 端口等等);
(B)1024—65535 是給客戶端軟件使用的,客戶端 port 不受 root用戶限制,例如 mysql 端口為 3306,可以由 mysql 用戶啟用;例如Oracle 端口為 1521,可以由 Oracle 用戶啟用;又例如用網絡瀏覽器瀏覽網頁。瀏覽器需先從本地啟用一個大于或等于1024的隨機端口,然后去連接 web 服務端的 80 端口
5.service [服務腳本名] [動作命令]
service 命令用于對系統服務進行操縱,比如啟動(start)、停止(stop)、重啟(restart)、查看狀態(status)等,service 命令本身是一個 shell 腳本,它在/etc/init.d/目錄查找指定的服務腳本,然后調用該服務腳本來完成任務,sevice
? service 服務腳本名 打印指定服務的命令行使用幫助。
? service 服務腳本名 start? 啟動指定的系統服務
? service 服務腳本名 status 查看指定的系統服務狀態
? service 服務腳本名 stop? 停止指定的系統服務
? service 服務腳本名 restart 重新啟動指定的系統服務,即先停止然后再啟動。
6.設置防火墻端口
打開防火墻的配置文件/etc/sysconfig/iptables,在其中添加上如下所示一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
7.chkconfig --list” 命令顯示系統服務列表,以及這些服務在運行級別 0 到 6 中已被啟動(on)還是停止(off)
運行級別(runlevel)就是 Linux 當前正在運行的功能級別。這些級別定義在/ect/inittab 文件中。一般來說 Linux 都會提供從 0 到 6 共七個運行級別,其中 3 個是基本運行級別,3 個是其他運行級別,1 個保留
0? 關閉(或停止)系統
1? 單用戶模式;通常別稱為 s 或 S
2? 沒有聯網的多用戶模式
3? 聯網的多用戶模式
4? 保留暫未使用
5? 聯網并且使用圖形界面的多用戶模式
6? 重啟系統
在不同運行級別下可以定義啟動不同的系統服務
?可以使用 runlevel 命令來查看當前運行級別,也可以用 init N(N 為0-6 之間的數字)來切換運行級別
chkconfig --level? num(運行級別)? 服務名 on: 啟動服務
?
轉載于:https://www.cnblogs.com/Wang-Y/p/8459875.html
總結
- 上一篇: 交换机到路由器怎么设置 交换机接的路由器
- 下一篇: ajax标准