Linux進程、日志以及systemctl控制


本篇主要講述:
1  進程管理
2  日志管理
3  systemctl控制
 
1、進程管理
 程序:靜態沒有執行的代碼,占用磁盤空間
 進程:執行的代碼放入內存中運行,占用內存、cpu
 PID:編號,標識進程
 父進程、子進程
1.1 查看進程樹
pstree — Processes Tree
yum -y install psmisc
格式:pstree [選項] [PID或用戶名]
常用命令選項
-a:顯示完整的命令行
-p:列出對應PID編號
systemd:內核直接運行的第一個進程,PID永遠為1
[root@svr7 ~]# pstree
[root@svr7 ~]# pstree lisi
bash───vim
[root@svr7 ~]# pstree -p lisi
bash(30712)───vim(30751)
[root@svr7 ~]# pstree -ap lisi
1.2 查看進程快照
ps (processes snapshot)
ps aux 操作 顯示當前終端所有進程(a),當前用戶在所有終端下的進程(x),以用戶格式輸出(u)     #列出正在運行的所有進程
ps -elf 操作 顯示系統內所有進程(-e),以長格式輸出(-l),信息,包括最完整的進程信息(-f)    #列出正在運行的所有進程
ps aux | grep ssh
ps -elf | grep tomcat | grep -v 'grep' | awk '{print $4}' | xargs kill -9
 
1.3 進程動態排名
top 交互式工具
1.3.1常用命令
格式: top [-d 刷新秒數]
top輸出的結果保存在文本文件中
top -b -n1 >> top.log
top相關命令詳解:
-b  :Batch-mode operation
            Starts top in Batch mode, which could be useful for sending output from top to other programs or to a file.  In  this mode,  top  will not accept input and runs until the iterations limit you've set with the `-n' command-line option or until killed.
- b:批處理模式操作
以批處理模式啟動top,這對於將輸出從top發送到其他程序或文件很有用。在此模式下,top將不接受輸入,直到您使用' -n'命令行選項設置了迭代限制,或者直到終止為止。
-d  :Delay-time interval as:  -d ss.t (secs.tenths)
            Specifies  the  delay  between  screen updates, and overrides the corresponding value in one's personal configuration file or the startup default.  Later this can be changed with the `d' or `s' interactive commands.
-d:延遲時間間隔為:-d ss.t(秒)
指定屏幕更新之間的延遲,並覆蓋個人配置文件中的相應值或啟動默認值。稍后可以用' d'或' s'交互命令來更改。
 
1.3.2 top命令輸入內容詳解
[root@localhost ~]# top
top - 07:41:11 up 19 min,  2 users,  load average: 0.01, 0.02, 0.05
Tasks: 284 total,   2 running, 282 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  1.0 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1878184 total,  1486892 free,   171196 used,   220096 buff/cache
KiB Swap:   524284 total,   524284 free,        0 used.  1574156 avail Mem
 
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 
內容說明:
第一行:
當前時間、最后一次開機后的運行時間、登錄系統的用戶數
load average: 0.03, 0.04, 0.05:1分鍾,5分鍾,15分鍾系統的負載的情況
第二行 任務或進程數量
total總的、running運行中的、sleeping睡眠中的、stopped停止的、zombie僵屍進程
第三行 根據自上次刷新以來的間隔顯示CPU狀態百分比
man top對應的說明
us, user    : time running un-niced user processes
sy, system  : time running kernel processes
ni, nice    : time running niced user processes
id, idle    : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
us:用戶態使用的cpu時間比(cpu消耗在用戶空間的時候的百分比)
sy:系統態使用的cpu時間比 (cpu消耗在系統空間的時候的百分比)
ni:用做nice加權的進程分配的用戶態cpu時間比
id:空閑的cpu時間比
wa:cpu等待磁盤寫入完成時間
hi:硬中斷消耗時間
si:軟中斷消耗時間
st:虛擬機偷取時間
這些百分比加起來為100%
第4行 內存信息
第5行 swap交換分區信息
PID:進程ID,進程的唯一標識符
USER:進程所有者的實際用戶名。
PR:進程的調度優先級。這個字段的一些值是'rt'。這意味這這些進程運行在實時態。
NI:進程的nice值(優先級)。越小的值意味着越高的優先級。負值表示高優先級,正值表示低優先級
VIRT:進程使用的虛擬內存。進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES:駐留內存大小。駐留內存是任務使用的非交換物理內存大小。進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR:SHR是進程使用的共享內存。共享內存大小,單位kb
S:這個是進程的狀態。它有以下不同的值:
D - 不可中斷的睡眠態。
R – 運行態
S – 睡眠態
T – 被跟蹤或已停止
Z – 僵屍態
%CPU:自從上一次更新時到現在任務所使用的CPU時間百分比。
%MEM:進程使用的可用物理內存百分比。
TIME+:任務啟動后到現在所使用的全部CPU時間,精確到百分之一秒。
COMMAND:運行進程所使用的命令。進程名稱(命令名/命令行)
按大寫的P   cpu排序
按大寫的M   內存排序
T:根據進程消耗的TIME降序排列
k:殺死指定進程
q:退出top
 
1.3.3 系統負載如何計算得來
系統平均負載被定義為在特定時間間隔內運行隊列中(在CPU上運行或者等待運行多少進程)的平均進程樹。如果一個進程滿足以下條件則其就會位於運行隊列中:
  - 它沒有在等待I/O操作的結果
  - 它沒有主動進入等待狀態(也就是沒有調用’wait’)
  - 沒有被停止(例如:等待終止)
在Linux中,進程分為三種狀態,一種是阻塞的進程blocked process,一種是可運行的進程runnable process,另外就是正在運行的進程running process。當進程阻塞時,進程會等待I/O設備的數據或者系統調用。
進程可運行狀態時,它處在一個運行隊列run queue中,與其他可運行進程爭奪CPU時間。 系統的load是指正在運行running one和准備好運行runnable one的進程的總數
單核系統這個值小於1的時候說明正常,等於1的時候說明正好在承受范圍之內,等於2說明是當前的2倍
多核系統,這個值除以cpu的數量;正常這個值在0.7以內
 
1.4 檢索進程
pgrep — Process Grep
用途:pgrep [選項]... 查詢條件
常用命令選項
-l:輸出進程名,而不僅僅是 PID
-U:檢索指定用戶的進程
-t:檢索指定終端的進程
-x:精確匹配完整的進程名
[root@svr7 ~]# pgrep log
[root@svr7 ~]# pgrep -l log 
[root@svr7 ~]# pgrep -U lisi
[root@svr7 ~]# pgrep -lU lisi
[root@svr7 ~]# pstree -ap lisi
[root@svr7 ~]# who                    #查看正在登陸的用戶信息
[root@svr7 ~]# pgrep -lU lisi
[root@svr7 ~]# pgrep -lU lisi -t pts/2
1.5  進程的調度(前后台)
放入后台啟動
– 在命令行末尾添加“&”符號,正在運行的狀態放入后台
– Ctrl + z 組合鍵,暫停的狀態放入后台
[root@svr7 ~]# sleep 800 &       #將前台的進程,正在運行放入后台    
[root@svr7 ~]# jobs                   #查看后台進程
[root@svr7 ~]# jobs -l               #查看后台進程,並且加上PID
[root@svr7 ~]# sleep 700
^Z                                              #按Ctrl+z可以暫停放入后台
[2]+  已停止               sleep 700
[root@svr7 ~]# jobs -l
[root@svr7 ~]# bg 2                 #將后台進程編號為2的,繼續在后台運行
[2]+ sleep 700 &
[root@svr7 ~]# jobs -l
[root@svr7 ~]# fg 1                 #將后台的進程恢復到前台
sleep 800
^C                                            #按Ctrl+c結束進程
[root@svr7 ~]# fg 2
sleep 700
^C                                            #按Ctrl+c結束進程
 
1.6  殺死進程
kill 參數
kill 數字等級
kill  [-9]  PID...
killall  [-9]  進程名...
pkill 查找條件
pkill -9 -U lisi       #強制踢出用戶
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# jobs -l
[root@svr7 ~]# kill 1928
[root@svr7 ~]# jobs -l
[root@svr7 ~]# killall  sleep
[root@svr7 ~]# jobs -l
 
2 、日志管理
2.1 日志概述
系統和程序的“日記本”
– 記錄系統、程序運行中發生的各種事件
– 通過查看日志,了解及排除故障
– 信息安全控制的“依據
2.2 常見的日志文件
  /var/log/messages       記錄內核消息、各種服務的公共消息
  /var/log/dmesg            記錄系統啟動過程的各種消息
  /var/log/cron                記錄與cron計划任務相關的消息
  /var/log/maillog           記錄郵件收發相關的消息
  /var/log/secure             記錄與訪問限制相關的安全消息
tailf    實時跟蹤 新增日值消息
2.3 用戶日志
由登錄程序負責記錄/管理
日志消息采用二進制格式
記錄登錄用戶的時間,來源,執行的命令等信息
/var/log/lastlog:記錄最近的用戶登錄事件
/var/log/wtmp:記錄成功的用戶登錄/注銷事件
/var/log/btmp:記錄失敗的用戶登錄事件
/var/run/utmp:記錄當前登錄的每個用戶的相關信息
2.4 日志分析
users、who、w 命令
查看已登錄的用戶信息,詳細度不同
last、lastb 命令
查看最近登錄成功/失敗的用戶信息
[root@svr7 ~]#  users
[root@svr7 ~]#  who
[root@svr7 ~]#  w
[root@svr7 ~]#  last -2     #最近兩次登錄成功
[root@svr7 ~]#  lastb -2   #最近兩次登錄失敗
2.5 日志消息的優先級
Linux內核定義的事件緊急程度
 – 分為 0~7 共8種優先級別
 – 其數值越小,表示對應事件越緊急/重要
 0  EMERG(緊急) 會導致主機系統不可用的情況
 1  ALERT(警告) 必須馬上采取措施解決的問題
 2  CRIT(嚴重) 比較嚴重的情況
 3  ERR(錯誤) 運行出現錯誤
 4  WARNING(提醒) 可能會影響系統功能的事件
 5  NOTICE(注意) 不會影響系統但值得注意
 6  INFO(信息) 一般信息
 7  DEBUG(調試) 程序或系統調試信息等
2.6 使用journalctl工具
• 提取由 systemd-journal 服務搜集的日志
• 常見用法
– journalctl | grep 關鍵詞
– journalctl -u 服務名 [-p 優先級]
– journalctl -n 消息條數
– journalctl --since="yyyy-mm-dd HH:MM:SS" --
until="yyyy-mm-dd HH:MM:SS"
[root@svr7 ~]# yum -y install httpd
[root@svr7 ~]# systemctl restart httpd
[root@svr7 ~]# journalctl -u httpd -p 6
3 、systemctl控制
3.1 systemd介紹
一個更高效的系統&服務管理器
開機服務並行啟動,各系統服務間的精確依賴
服務目錄:/lib/systemd/system/
控制服務狀態
systemctl start|stop|restart 服務名...
查看服務的運行狀態
systemctl status|is-active  服務名...
[root@svr7 ~]# systemctl enable httpd         #設置隨機自起
[root@svr7 ~]# systemctl is-enabled httpd   #查看是否隨機自起
[root@svr7 ~]# systemctl disable httpd        #設置隨機不自起
[root@svr7 ~]# systemctl is-enabled httpd
graphical.target   圖形模式  
multi-user.target  文本模式
當前切換圖形模式  
[root@svr7 ~]# systemctl isolate graphical.target
每次開機都進入的模式,默認模式的修改
[root@svr7 ~]# systemctl get-default      #查看默認級別
[root@svr7 ~]# systemctl set-default graphical.target    #設置默認級別
[root@svr7 ~]# systemctl get-default
[root@svr7 ~]# reboot
systemcli -t service            #列出活動的系統服務
systemcli -t service  --all   #列出所有系統服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM