查看進程進程ps
支持三種選項:
UNIX選項 如-A -e
BSD選項 如a
GNU選項 如--help
a 選項包括全部終端中的進程
• x 選項包括不連接終端的進程
• u 選項顯示進程全部者的信息
• f 選項顯示進程樹,至關於 --forest
• k|--sort 屬性 對屬性排序,屬性前加- 表示倒序
• o 屬性… 選項顯示定製的信息 pid、cmd、%cpu、%mem
• L 顯示支持的屬性列表
STAT:進程狀態
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前臺進程
l: 多線程進程
L:內存分頁並帶鎖
N:低優先級進程
<: 高優先級進程
s: 查詢你擁有的全部進程
session leader,會話(子進程)發起者
ps -x
顯示指定用戶名(RUID)或用戶ID的進程
ps -fU apache
ps -fU 48
顯示指定用戶名(EUID)或用戶ID的進程
ps -fu wang
ps -fu 1000
查看以root用戶權限(實際和有效ID)運行的每一個進程
ps -U root -u root
PS -e = ps aux 以進程樹顯示系統中的進程如何相互連接
使用其PID查找進程名稱:
ps -p 1244 -o comm=
要以其名稱選擇特定進程,顯示其全部子進程
ps -C sshd,bash
查找指定進程名全部的所屬PID,在編寫須要從std輸出或文件讀取PID的腳本時
這個參數頗有用
ps -C httpd,sshd -o pid=
檢查一個進程的執行時間
ps -eo comm,etime,user | grep nginx
查找佔用最多內存和CPU的進程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
顯示安全信息
ps -eM
ps --context
使用如下命令以用戶定義的格式顯示安全信息
ps -eo euser,ruser,suser,fuser,f,comm,label
使用watch實用程序執行重複的輸出以實現對就程進行實時的監視,以下面的命
令顯示每秒鐘的監視
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
進程管理工具
top:有許多內置命令
排序:
P:以佔據的CPU百分比,%CPU
M:佔據內存百分比,%MEM
T:累積佔據CPU時長,TIME+
首部信息顯示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分別顯示:1 (數字)
memory信息:m命令
退出命令:q
修改刷新時間間隔:s
終止指定進程:k
保存文件:W
htop命令:EPEL源
選項:
-d #: 指定延遲時間;
-u UserName: 僅顯示指定用戶的進程
-s COLUME: 以指定字段進行排序
子命令:
s:跟蹤選定進程的系統調用
l:顯示選定進程打開的文件列表
a:將選定的進程綁定至某指定CPU核心
t:顯示進程樹
內存空間使用狀態:
free [OPTION]
-b 以字節爲單位
-m 以MB爲單位
-g 以GB爲單位
-h 易讀格式
-o 不顯示-/+buffers/cache行
-t 顯示RAM + swap的總和
-s n 刷新間隔爲n秒
-c n 刷新n次後即退出
vmstat命令:虛擬內存信息
vmstat [options] [delay [count]]
vmstat 2 5
系統監控工具
iostat:統計CPU和設備IO信息
示例:iostat 1 10
iftop:顯示帶寬使用狀況,EPEL源
示例:iftop -n -i eth1
pmap命令:進程對應的內存映射
pmap [options] pid [...]
-x: 顯示詳細格式的信息
示例:pmap 1
另一種實現
cat /proc/PID/maps
glances命令:EPEL源
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--
password] [-t refresh] [-f file] [-o outp
經常使用選項:
-b: 以Byte爲單位顯示網卡數據速率
-d: 關閉磁盤I/O模塊
-f /path/to/somefile: 設定輸入文件位置
-o {HTML|CSV}:輸出格式
-m: 禁用mount模塊
-n: 禁用網絡模塊
-t #: 延遲時間間隔
-1:每一個CPU的相關數據單獨顯示
服務器模式:
glances -s -B IPADDR
IPADDR: 指明監聽的本機哪一個地址
客戶端模式:
glances -c IPADDR
IPADDR:要連入的服務器端地址
dstat命令:系統資源統計,代替vmstat,iostat
dstat [-afv] [options..] [delay [count]]
-c 顯示cpu相關信息
-C #,#,...,total
-d 顯示disk相關信息
-D total,sda,sdb,...
-g 顯示page相關統計數據
-m 顯示memory相關統計數據
-n 顯示network相關統計數據
-p 顯示process相關統計數據
-r 顯示io請求相關的統計數據
-s 顯示swapped相關的統計數據
iotop經常使用參數
-o, --only只顯示正在產生I/O的進程或線程,除了傳參,能夠在運行過程當中按o
生效
-b, --batch非交互模式,通常用來記錄日誌
-n NUM, --iter=NUM設置監測的次數,默認無限。在非交互模式下頗有用
-d SEC, --delay=SEC設置每次監測的間隔,默認1秒,接受非×××數據例如1.1
-p PID, --pid=PID指定監測的進程/線程
-u USER, --user=USER指定監測某個用戶產生的I/O
-P, --processes僅顯示進程,默認iotop顯示全部線程
-a, --accumulated顯示累積的I/O,而不是帶寬
-k, --kilobytes使用kB單位,而不是對人友好的單位。在非交互模式下,腳本編程有用
Lsof -a:列出打開文件存在的進程
-c<進程名>:列出指定進程所打開的文件
-g:列出GID號進程詳情
-d<文件號>:列出佔用該文件號的進程
+d<目錄>:列出目錄下被打開的文件命令參數
進程管理
查看由登錄用戶啓動而非系統啓動的進程
lsof /dev/pts1
指定進程號,能夠查看該進程打開的文件
lsof -p 9527
文件管理
查看指定程序打開的文件
lsof -c httpd
查看指定用戶打開的文件
lsof -u root | more
查看指定目錄下被打開的文件
lsof +D /var/log/
lsof +d /var/log/
查看端口鏈接狀況
lsof -i :80 -n
經過參數-i:端口能夠查看端口的佔用狀況,-i參數還有查看協議,ip的鏈接狀況等
查看指定進程打開的網絡鏈接
lsof -i –n -a -p 9527
參數-i、-a、-p等,-i查看網絡鏈接狀況,-a查看存在的進程,-p指定進程
查看指定狀態的網絡鏈接
lsof -n -P -i TCP -s TCP:ESTABLISHED
lsof示例
恢復刪除文件
lsof |grep /var/log/messages
rm -f /var/log/messages
lsof |grep /var/log/messages
cat /proc/653/fd/6
cat /proc/653/fd/6 > /var/log/messages
kill命令:向進程發送控制信號,以實現對進程管理,每一個信號對應一個數字,信號名稱以SIG開
頭(可省略),不區分大小寫
顯示當前系統可用信號: kill –l 或者 trap -l
經常使用信號:man 7 signal
1) SIGHUP 無須關閉進程而讓其重讀配置文件
2) SIGINT 停止正在運行的進程;至關於Ctrl+c
3) SIGQUIT 至關於ctrl+\
9) SIGKILL 強制殺死正在運行的進程
15) SIGTERM 終止正在運行的進程
18) SIGCONT 繼續運行
19) SIGSTOP 後臺休眠
指定信號的方法 : (1) 信號的數字標識:1, 2, 9
(2) 信號完整名稱:SIGHUP
(3) 信號的簡寫名稱:HUP
進程管理工具
按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid
kill –s SIGNAL pid
做業管理
查看當前終端全部做業:jobs
做業控制:
fg [[%]JOB_NUM]:把指定的後臺做業調回前臺
bg [[%]JOB_NUM]:讓送日後臺的做業在後臺繼續運行
kill [%JOB_NUM]: 終止指定的做業
方法1
vi all.sh
f1.sh&
f2.sh&
f3.sh&
方法2
(f1.sh&);(f2.sh&);(f3.sh&)
方法3
{ f1.sh& f2.sh& f3.sh& }
執行方式:
1)交互式 2)輸入重定向 3)at –f 文件
依賴與atd服務,須要啓動才能實現at任務
at隊列存放在/var/spool/at目錄中
/etc/at.{allow,deny}控制用戶是否能執行at任務
白名單:/etc/at.allow 默認不存在,只有該文件中的用戶才能執行任務計劃
at命令
黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在
at.deny 文件中的使用者則可執行
若是兩個文件都不存在,只有 root 能夠執行 at 命令
週期性任務計劃cron
確保crond守護處於運行狀態:
CentOS 7:
systemctl status crond
CentOS 6:
service crond status
計劃週期性執行的任務提交給crond,到指定時間會自動運行
系統cron任務:系統維護做業
/etc/crontab
用戶cron任務:
crontab命令
日誌:/var/log/cron
示例:每3小時echo和wall命令
0 /3 centos /bin/echo 「howdy」; wall 「welcome to Magedu!」
:晚上9點10分運行echo命令
10 21 * wang /bin/echo "Howdy!"
crontab命令定義
每一個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME
crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-l 列出全部任務
-e 編輯任務
-r 移除全部任務
-i 同-r一同使用,以交互式模式移除指定任務
-u user 僅root可運行,指定用戶管理cron任務
控制用戶執行計劃任務:
/etc/cron.{allow,deny}
一次性做業使用 at
重複性做業使用crontabios
練習
一、每週的工做日1:30,將/etc備份至/backup目錄中,保存的文件名稱格式爲「etcbak-yyyy-mm-dd-HH.tar.xz」,其中日期是前一天的時間
30 1 1-5 cp -a /etc /backup/etcbak-date 「+\%F-\%H」
&&tar -Jcf /backup/etcbak-date 「+\%F-\%H」
.tar.xz /etc
二、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中
0 /2 egrep -i ^[sm] /proc/meminfo > /tmp/meminfo.txt
三、工做日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高於80%,就執行wall警報
/10 1-5 /bin/bash /root/check_disk.shnginx