ps
a 關於當前shell運行的所有進程
x | -A 所有進程,x顯示狀態-A不會。這是兩個命令
f 顯示進程從屬關係
e 顯示進程調用環境工具的詳細信息
l 長列表顯示進程的詳細信息
u 顯示進程的用戶信息
-a 顯示shell前臺運行命令的進程,但不包括shell本身
下圖ps a等命令由於進程過多就不展示結果了,命令的格式如下:
ps的相關命令操作:
[[email protected] Desktop]# whatis ps 查看ps命令的含義
ps (1) - report a snapshot of the current processes.
ps (1p) - report process status
[[email protected] Desktop]# ps
PID TTY TIME CMD
886 pts/1 00:00:00 ps
2791 pts/1 00:00:00 bash
[[email protected] Desktop]# ps a 關於當前shell運行的所有進程
PID TTY STAT TIME COMMAND
[[email protected] Desktop]# ps ae 關於當前shell運行的所有進程運行環境的詳細信息
PID TTY STAT TIME COMMAND
[[email protected] Desktop]# ps aef 關於當前shell運行的所有進程運行環境以及進程附屬關係(簡略顯示幾行,不然看起來太多太複雜)
PID TTY STAT TIME COMMAND
[[email protected] Desktop]# ps -A | head -n 2 顯示所有進程
PID TTY TIME CMD
1 ? 00:00:01 systemd
[[email protected] Desktop]# ps x | head -n 2 顯示所有進程,還有狀態顯示(與ps -A的區別)
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 19
[[email protected] Desktop]# ps -a 顯示shell前臺運行命令的進程,但不包括shell本身
PID TTY TIME CMD
904 pts/1 00:00:00 ps
3067 pts/0 00:00:00 su
3068 pts/0 00:00:00 bash
[[email protected] Desktop]# bash 重新打開shell
[[email protected] Desktop]# ps -a 顯示shell前臺運行命令的進程,但不包括shell本身
PID TTY TIME CMD
905 pts/1 00:00:00 bash
938 pts/1 00:00:00 ps
3067 pts/0 00:00:00 su
3068 pts/0 00:00:00 bash
ps -o %cpu,%mem,user,group,comm,nice,pid,stat
指定顯示進程的某些信息
[[email protected] Desktop]# ps -o comm 指定顯示進程名稱。
COMMAND
bash
ps
bash
%cpu 顯示進程cpu負載
%mem 顯示進程內存負載
user 進程用戶
group 進程組
comm 進程名稱
nice 進程優先級
pid 進程的id
stat 進程狀態
stat中顯示的信息
S 進程狀態
l 內存中有鎖定空間
N 優先級低
< 優先級高
+ 前臺運行
s 頂級進程
ps ax -o %cpu,comm --sort <+|-%cpu > <+|-%mem> 按照進程信息排序
+ 正序
- 倒序
%cpu cpu負載排序
%mem 內存負載
具體操作演示:
[[email protected] Desktop]# ps ax --sort=%mem 按照內存負載排序
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:00 [ksoftirqd/0]
[[email protected] Desktop]# ps ax --sort=-%mem -o %mem 按照內存負載進行倒序排序
%MEM
20.9
4.1
[[email protected] ~]# ps ax --sort=-%mem -o %mem,comm 按照內存負載進行倒序排序同時顯示進程名稱。
%MEM COMMAND
20.9 gnome-shell
4.1 Xorg
[[email protected] ~]# ps ax --sort=-%cpu -o pid | head -n 6 | tail -n 5 ax所有程序 --sort=-%cpu按照cpu逆序排序 按照pid順序,方法一。
1865
595
1
2
3
[[email protected] ~]# ps ax --sort=-%cpu -o pid,%cpu|awk 'NR<=6&&NR>=2{print}' 方法二。
1865 0.7
595 0.1
1 0.0
2 0.0
3 0.0
1.進程的優先級範圍
-20~19
2.優先級查看
ps ax -o pid,nice,comm
3.指定某個優先級開啓進程
nice -n 優先級數字 進程名稱
nice -n -5 vim & 開啓vim並且指定程序優先級爲-5
4.改變進程優先級
reince -n 優先級數字 進程pid
renice -n -5 1806 改變1806進程的優先級爲-5
相關具體操作:
[[email protected] ~]# renice -n 0 1128 改變1128的優先級爲0
1128 (process ID) old priority 0, new priority 0
[[email protected] ~]# renice -n -1 905 改變905的優先級爲-1
905 (process ID) old priority 0, new priority -1
下圖展示我們使用renice更改bash優先級之後,優先級從0變成了-6
[[email protected] ~]# nice -n -5 vim & 指定優先級建立文件
[1] 1148
[[email protected] ~]# renice -n -5 1159 改變1159的優先級爲-5
1159 (process ID) old priority -1, new priority -5
[[email protected] ~]# ps -o nice,comm,pid,stat 查看1159的優先級
NI COMMAND PID STAT
-1 bash 905 S<
-5 vim 1159 T<
-1 ps 1163 R<
0 bash 2791 Ss
[[email protected] ~]# nice -n 5 vim & 以-5的優先級建立文件
[1] 1164
[[email protected] Desktop]# jobs 查看被打入環境後臺的進程
[[email protected] Desktop]# fg 2 把序號2後臺進程調回前臺
bash: fg: 2: no such job
jobs 查看被打入環境後臺的進程
ctrl+z 把佔用終端的進程打入後臺
fg jobsnum 把後臺進程調回前臺
bg jobsnum 把後臺暫停的進程運行
comm & 讓命令直接在後臺運行
相關具體命令操作:
[[email protected] ~]# gedit 佔用後臺打開一個文件
** (gedit:1339): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-Py9xsAJdi1: Connection refused
^Z
[1]+ Stopped gedit
[[email protected] ~]# jobs 查看被打入環境後臺的進程
[1]+ Stopped gedit
[[email protected] ~]# vim & 在後臺打開文件
[2] 1344
[[email protected] ~]# jobs 查看被打入環境後臺的進程
[1]- Stopped gedit
[2]+ Stopped vim
[[email protected] ~]# bg 1 把後臺暫停的進程1運行
[1]- gedit &
[[email protected] ~]# fg 2 把後臺進程2調回前臺
vim
[[email protected] ~]# fg 1 把後臺進程1調回前臺
gedit
^Z
[1]+ Stopped gedit
[[email protected] ~]# jobs
[1]+ Stopped gedit
[[email protected] ~]# fg
gedit
^Z
[1]+ Stopped gedit
1.常用信號等級
1 進程不結束僅僅重新加載配置
2 刪除進程在內存中的數據
3 刪除鼠標在內存中的數據
9 強行結束單個進程(不能被阻塞)
15 正常關閉進程 (可能會被阻塞)
18 運行暫停的進程
19 暫停某個進程 (不能被阻塞)
20 把進程打入後臺 (可以被阻塞)
man 7 signal 查看信號詳細信息
第二張圖爲信號的詳細信息:
kill -信號 進程pid 結束單一進程
killall -信號 進程名字 結束同一名字的進程
pkill -u student -信號 切換到普通用戶關閉vim同時關閉student的shell