Linux進程的查看和管理(包含計劃任務管理)
概述:
進程的定義:“進程”是操作系統的最基本、最重要的概念之一, 進程是程序的一次執行。進程是可以並行執行的計算。
進程的特徵:動態性:是程序的一次執行;併發性:進程是可以併發執行;獨立性:是系統進行資源分配和調度的一個獨立單位;異步性:進程間的相互制約,使進程執行具有間隙;結構性:進程是具有結構的 。
一個應用程序可以包含一個或者多個進程
一個進程包含一個或者多個線程
本章基本結構:
一,查看進程
1.1,查看進程-----------ps命令(靜態查看)
常用選項:
a:顯示當前終端下的所有進程信息
u:使用以用戶爲主的格式輸出進程信息
x:顯示當前用戶在所有終端下的所有信息
-e:顯示系統內的所有進程信息
-l:使用長格式顯示進程信息
-f:使用完整的格式顯示信息
例如:使用ps aus命令能以簡單列表的形式顯示出進程信息
列表標題含義如下:
USER: 用戶
PID: 進程號
%CPU: CPU佔用比
%MEM: 內存佔用比
VSA: 虛擬內存佔用比
RSS: 物理內存佔用比
TTY: 終端
STST: 狀態
START: 啓動進程時間
TIME: 該進程佔用的CPU時間
COMMAND: 啓動該進程的命令名稱
例如:使用ps -elf命令以長格式顯示系統中的進程信息,包含PPID號(PID的父進程)
ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 32041 ep_pol 13:54 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --syst
1 S root 2 0 0 80 0 - 0 kthrea 13:54 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 13:54 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker 13:54 ? 00:00:00 [kworker/0:0H]
1 S root 6 2 0 80 0 - 0 worker 13:54 ? 00:00:00 [kworker/u256:0]
1 S root 7 2 0 -40 - - 0 smpboo 13:54 ? 00:00:00 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp 13:54 ? 00:00:00
若直接執行不帶任何選項的ps命令,將顯示當前用戶會話中打開的進程。
[root@localhost ~]# ps
PID TTY TIME CMD
3344 pts/0 00:00:00 bash
3798 pts/0 00:00:00 ps
[root@localhost ~]#
1.2,查看進程-------top命令(動態查看每3s自動刷新一次)
如上圖按C可以對%CPU從大到小進行排序
按M可以對%MEM從大到小進行排序
1.3,查看進程--------pgrep命令
常用選項:
-l:若不加只顯示PID號
-U:指定用戶
-t:指定終端
例如:pgrep -l -t pts/0 可以顯示root用戶在pts/0終端下的進程
[root@localhost ~]# pgrep -l -t pts/0
3344 bash
38869 su
38870 bash
38918 su
38926 bash
[root@localhost ~]#
1.4,查看進程-------pstree命令(以樹形結構列出進程信息)
常用格式:pstree -aup
-a:顯示完整信息
-u:列出對應用戶名
-p:列出對應PID號
[root@localhost ~]# pstree -aup
systemd,1 --switched-root --system --deserialize 21
├─ModemManager,568
│ ├─{ModemManager},585
│ └─{ModemManager},627
├─NetworkManager,657 --no-daemon
│ ├─dhclient,38513 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
│ ├─{NetworkManager},662
│ └─{NetworkManager},665
├─VGAuthService,574 -s
├─abrt-watch-log,569 -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG atlist_del co
├─abrt-watch-log,599 -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD
├─abrtd,563 -d -s
├─accounts-daemon,566
│ ├─{accounts-daemon},580
│ └─{accounts-daemon},626
..// 省略部分類容
二,管理控制進程
2.1,啓動進程
啓動進程的方式:手工啓動,調度啓動
手工啓動--------cp命令:
前臺啓動(輸入命令直接執行)
後臺啓動(在命令尾行加“&”符號,被執行文件較大時使用)
[root@localhost ~]# cp /dev/cdrom mycd.ios&
[2] 39545
調度啓動------at命令,crontab命令
at:一次性啓動,
啓動方式:設置時間(時間只能在當前時間之後)----》》輸入命令----》》ctrl+D提交任務
時間設置:at [小時:分鐘] [年月日]
date:查看當前時間
例如:
crontab命令:按照之前設置的時間週期重複執行用戶指定的命令操作
常用格式:
編輯計劃任務:crontab -e [-u 用戶名]
查看計劃任務:crontab -l [-u 用戶名 ]
刪除計劃任務:crontab -r[-u 用戶名]
時間週期設置順序:
分鐘 小時 日期 月份 星期
啓動方式: crontab -e進入編輯 ---------週期設置 所需執行命令--------wq保存
例如:
[root@localhost ~]# crontab -e -u root
時間數值的特殊表示方法:
*表示該範圍內的任意時間
, 表示間隔的多個不連續時間點
- 表示一個連續的時間範圍
/ 指定間隔的時間頻率
例如:
0 17 * * 1-5 -------------------- 週一到週五每天17:00
0 8-18/2 * * * ------------------ 8點到18點之間每2個小時
0 * */ * * ------------------------- 每3天
2.2,終止進程
atrm #序列號:
刪除序列號任務
Ctrl+c 組合鍵:
中斷正在執行的命令
kill、killall命令:
kill用於終止指定PID號的進程
killall用於終止指定名稱的所有進程
-9 用於強制終止
pkill命令:
常用選項
-U: 根據進程所屬的用戶名終止相應進程
-t: 根據進程所在的終端終止相應進程
例如:
[root@localhost ~]# pgrep -l -U zhangsan(查看zhangsan用戶進程)
6469 gnome-keyring-d
6474 gnome-session-b
6481 dbus-launch
6482 dbus-daemon
[root@localhost ~]# pkill -9 -U zhangsan(殺死zhangsan用戶的進程)
[root@localhost ~]# pgrep -l -U zhangsan(再次查看zhangsan用戶的進程)
[root@localhost ~]#