您好,登錄后才能下訂單哦!
查看進程:分為動態查看和動態查看
控制進程:以關掉進程為主,可以按條件關閉指定進程,全部關閉所有進程
at 一次性任務設置
crontab 周期性任務設置
保存在硬盤、光盤等介質中的可執行代碼和數據
在CPU及內存中運行的程序代碼
動態執行的代碼
? - 每個進程可以創建一個或多個進程
一個應用程序可以包含一個或多個應用進程
一個進程包含一個或多個線程
線程是執行操作的最小單元
例子:
應用程序=工廠
進程=車間
線程=工人
高并發處理依賴于多線程操作
直接執行不帶任何子選項的命令時,將只顯示當前用戶會話中打開的進程
[root@localhost ~]# ps
PID TTY TIME CMD
4898 pts/1 00:00:00 bash
5249 pts/1 00:00:00 ps
查看靜態的進程統計信息
[root@localhost ~]# ps aux
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128212 6836 ? Ss 10:43 0:01 /usr/lib/systemd/s
root 2 0.0 0.0 0 0 ? S 10:43 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:43 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:43 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 10:43 0:00 [kworker/u256:0]
root 7 0.0 0.0 0 0 ? S 10:43 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 10:43 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 10:43 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 10:43 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 10:43 0:00 [kdevtmpfs]
root 13 0.0 0.0 0 0 ? S< 10:43 0:00 [netns]
root 14 0.0 0.0 0 0 ? S 10:43 0:00 [khungtaskd]
a 顯示當前終端下的所有進程信息,包括其他用戶的進程。與x結合時將顯示系統中所有的進程信息 不帶-
u 使用已用戶為主的格式輸出進程信息,不帶-
x 顯示當前用戶在所有中終端下的進程信息,不帶-
-e 顯示系統中的所有進程信息
-l 使用長格式(long)顯示進程信息
-f 使用完整的(full/)格式顯示進程信息
豎著讀的一列叫做字段,也叫做屬性
字段 | 解釋 |
---|---|
USER | 啟動該進程的用戶賬號的名稱 |
PID | 該進程在系統中的數字ID進程號,在當前系統中是唯一的 |
%CPU | CPU的資源渣用率 |
%MEM | 內存的占用率 |
VSZ | 虛擬內存,在進程啟用完畢后會釋放歸0 |
RSS | 占用物理內存的大小(常駐內存) |
TTY | 顯示了該進程在哪個終端上運行,是在本地終端還是在遠程終端。“?”表示未知或者不需要終端 |
STAT | 進程狀態,S代表休眠,R代表運行,Z代表僵死,s代表父進程,<代表高優先級,N代表低優先級,+代表前臺進程,l代表多線程;對于僵死進程需要及時手動關閉終止 |
TIME | 表示啟動該進程的已運行時間 |
COMMAND | 表示啟動該進程的命令的所處位置 |
[root@localhost ~]# ps -fle
[root@localhost ~]# ps -fle
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 32053 ep_pol 10:43 ? 00:00:01 /usr/lib/systemd/sy
1 S root 2 0 0 80 0 - 0 kthrea 10:43 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 10:43 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker 10:43 ? 00:00:00 [kworker/0:0H]
1 S root 6 2 0 80 0 - 0 worker 10:43 ? 00:00:00 [kworker/u256:0]
1 S root 7 2 0 -40 - - 0 smpboo 10:43 ? 00:00:00 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp 10:43 ? 00:00:00 [rcu_bh]
1 R root 9 2 0 80 0 - 0 - 10:43 ? 00:00:00 [rcu_sched]
5 S root 10 2 0 -40 - - 0 smpboo 10:43 ? 00:00:00 [watchdog/0]
5 S root 12 2 0 80 0 - 0 devtmp 10:43 ? 00:00:00 [kdevtmpfs]
1 S root 13 2 0 60 -20 - 0 rescue 10:43 ? 00:00:00 [netns]
1 S root 14 2 0 80 0 - 0 watchd 10:43 ? 00:00:00 [khungtaskd]
1 S root 15 2 0 60 -20 - 0 rescue 10:43 ? 00:00:00 [writeback]
1 S root 16 2 0 60 -20 - 0 rescue 10:43 ? 00:00:00 [kintegrityd]
1 S root 17 2 0 60 -20 - 0 rescue 10:43 ? 00:00:00 [bioset]
額外看到PPID,可以詳細了解到該子進程的父進程是誰
PRI 用戶態的優先級,可以進行人為控制的優先級
NI 是nice值(-20~19,值越小優先級越大)
不輸入-,只輸入ps lef得到一下結果
[root@localhost ~]# ps lef
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 4898 4894 20 0 116100 2808 do_wai Ss pts/1 0:00 -bash USER=root LOGNAME=r
4 0 5436 4898 20 0 148984 1468 - R+ pts/1 0:00 \_ ps lef XDG_SESSION_ID
4 0 2386 2379 20 0 116348 2868 n_tty_ Ss+ pts/0 0:00 bash USER=root LANG=zh_CN
4 0 1371 1150 20 0 281984 26360 ep_pol Ssl+ tty1 0:01 /usr/bin/X :0 -background
由于系統中運行的進程數量較多,需要查詢某一個進程的信息時可以結合管道操作和grep命令進行過濾
舉例:
[root@localhost ~]# ps aux | grep bash
root 781 0.0 0.0 115308 948 ? S 10:43 0:00 /bin/bash /usr/sbin/ksmtuned
root 1748 0.0 0.0 51376 584 ? Ss 10:43 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root 2386 0.0 0.1 116348 2868 pts/0 Ss+ 10:43 0:00 bash
root 4898 0.0 0.1 116100 2808 pts/1 Ss 13:45 0:00 -bash
root 5360 0.0 0.0 112728 968 pts/1 R+ 14:18 0:00 grep --color=auto bash
[root@localhost ~]# ps aux | grep "bash$"
root 2386 0.0 0.1 116348 2868 pts/0 Ss+ 10:43 0:00 bash
root 4898 0.0 0.1 116100 2808 pts/1 Ss 13:45 0:00 -bash
top命令
[root@localhost ~]# top
表格是動態的
在top查看過程中,可以按c鍵根據cpu占用情況對進程列表進行排序,按M可以根據MEM內存占用情況進行排序,按h獲得幫助信息,按q退出top程序,按k就是關閉進程(kill),通常情況下k中會有當前占用內存最高的pid在其中,默認直接關閉,也可以輸入對應的pid去回車終止對應的進程
動態top查看主要看cpu占用
pgrep命令
根據特定條件查詢進程PID信息
[root@localhost ~]# pgrep -l "log"
400 xfs-log/dm-0
594 xfs-log/sda1
624 xfs-log/dm-2
688 systemd-logind
707 rsyslogd
715 abrt-watch-log
727 abrt-watch-log
[root@localhost ~]# pgrep "log"
400
594
624
688
707
715
727
[root@localhost ~]# pgrep -l -U root -t tty1
1371 X
pgrep pid進程的過濾
-l 長格式顯示,即顯示進程名
-U 指定特定用戶,檢索查詢該用戶的進程
-t 指終端(telent ) tty1 代表遠程終端
本地終端登錄時會反饋為1
-a 顯示完整信息
-u 列出對應用戶名
-p 列出對應PID號
[root@localhost ~]# pstree -aup '查看所有完整信息和所有用戶以及列出與所有對應PID的進程樹'
systemd,1 --switched-root --system --deserialize 21
├─ModemManager,689
│ ├─{ModemManager},708
│ └─{ModemManager},756
├─NetworkManager,788 --no-daemon
│ ├─dhclient,911 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
│ ├─dhclient,913 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens36.pid -lf...
│ ├─{NetworkManager},792
│ └─{NetworkManager},795
├─VGAuthService,700 -s
├─abrt-watch-log,715 -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detectedernel BUG
├─abrt-watch-log,727 -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD
├─abrtd,710 -d -s
├─accounts-daemon,694
│ ├─{accounts-daemon},706
│ └─{accounts-daemon},757
......//省略部分信息
[root@localhost ~]# pstree -ap root '只查看root用戶的所有完整命令信息和對應的PID的進程數'
systemd,1 --switched-root --system --deserialize 21
├─ModemManager,689
│ ├─{ModemManager},708
│ └─{ModemManager},756
├─NetworkManager,788 --no-daemon
│ ├─dhclient,911 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
│ ├─dhclient,913 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens36.pid -lf...
│ ├─{NetworkManager},792
│ └─{NetworkManager},795
├─VGAuthService,700 -s
├─abrt-watch-log,715 -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detectedernel BUG
├─abrt-watch-log,727 -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD
├─abrtd,710 -d -s
├─accounts-daemon,694
│ ├─{accounts-daemon},706
│ └─{accounts-daemon},757
[root@localhost dev]# cp /dev/cdrom mycd.iso&
[1] 6721 '輸出信息中包括后臺任務序號、產生對應的PID號'
因為要復制的內容容量過大,所以會卡一下
命令執行完畢就會彈出命令行
為了解決這個問題,便出現了&
[root@localhost mnt]# cp -r Packages/ /opt/pas '要執行的操作命令'
^C 'ctrl+c中止命令'
[root@localhost mnt]# cp -r Packages/ /opt/pas & '后臺運行'
[2] 6970 '顯示序號和進程PID號'
[root@localhost mnt]# jobs '查看后臺的進程'
[1]+ 已停止 cp -i /dev/cdrom mycd.iso(工作目錄:/dev)
[2]- 運行中 cp -i -r Packages/ /opt/pas &
[root@localhost mnt]# jobs -l '-l可以詳細列出pid號,以此進行管理'
[1]+ 6730 停止 (tty 輸入) cp -i /dev/cdrom mycd.iso(工作目錄:/dev)
[2]- 6970 運行中 cp -i -r Packages/ /opt/pas &
[root@localhost mnt]# cp -rf Packages/ /opt/pa
^Z 'ctrl+z把前臺運行的命令切換到后臺,被切換到后臺的命令會被停止,如果需要再次讓其運行,需要fg'
[2]+ 已停止 cp -i -rf Packages/ /opt/pa
[root@localhost mnt]# fg 2 'fg 序號'
cp -i -rf Packages/ /opt/pa '被切換到前臺繼續運行'
^Z '再次切換到后臺'
[2]+ 已停止 cp -i -rf Packages/ /opt/pa
[root@localhost mnt]# jobs '再次查看后臺程序'
[1]- 已停止 cp -i /dev/cdrom mycd.iso(工作目錄:/dev)
[2]+ 已停止 cp -i -rf Packages/ /opt/pa
[root@localhost mnt]# jobs -l
[1]- 6730 停止 (tty 輸入) cp -i /dev/cdrom mycd.iso(工作目錄:/dev)
[2]+ 7114 停止 cp -i -rf Packages/ /opt/pa
[root@localhost mnt]# kill -9 6730 '強制殺掉pid為6730的進程'
[root@localhost mnt]# jobs -l '查看'
[1]- 6730 已殺死 '被殺死' cp -i /dev/cdrom mycd.iso(工作目錄:/dev)
[2]+ 7114 停止 cp -i -rf Packages/ /opt/pa
[root@localhost mnt]# kill -9 7114 '依法炮制7114'
[root@localhost mnt]# jobs -l
[2]+ 7114 已殺死 cp -i -rf Packages/ /opt/pa
[root@localhost mnt]# fg -2 '再次把后臺序號為2的進程切換到前臺'
-bash: fg: -2: 無效選項 '反饋無效選項'
fg: 用法:fg [任務聲明]
[root@localhost mnt]# jobs -l '再次查看'
[root@localhost mnt]# '都沒了'
[root@localhost mnt]# systemctl start httpd '開啟httpd'
[root@localhost mnt]# netstat -ntap | grep 80 '查看80端口'
tcp6 0 0 :::80 :::* LISTEN 7466/httpd
[root@localhost mnt]# killall -9 httpd '終止httpd的所有進程'
[root@localhost mnt]# netstat -ntap | grep 80
[root@localhost mnt]#
[root@localhost mnt]# pgrep -l -U "lisi" '檢索用戶-u lisi的進程,并顯示-l pid對應的進程'
7954 gnome-keyring-d
7972 gnome-session-b
7979 dbus-launch
7980 dbus-daemon
8038 gvfsd
8043 gvfsd-fuse
8129 ssh-agent
8148 at-spi-bus-laun
8153 dbus-daemon
8158 at-spi2-registr
8175 gnome-shell
8183 pulseaudio
8190 ibus-daemon
[root@localhost mnt]# pkill -9 -U "lisi" '強制終止-9 用戶-U lisi的所有進程'
[root@localhost mnt]#
[root@localhost mnt]# pgrep -l -U "lisi" '再次檢索lisi,發現什么都沒有'
[root@localhost mnt]#
[root@localhost mnt]# which pkill '查看pkill的命令位置在哪'
/usr/bin/pkill '在usr下面的bin中,即所有用戶都可以使用'
pkill -9 -U 代表強行注銷用戶
普通用戶不可以踢掉pkill root
[root@localhost mnt]# at [HH:MM] [yyyy-mm-dd] 'at 小時:分鐘 年-月-日'
[root@localhost mnt]# date '查看當前時間'
2019年 11月 12日 星期二 17:30:57 CST
[root@localhost mnt]# at 17:33 2019-11-12
at> pgrep -U root | wc -l > /opt/test.txt
at> <EOT> 'ctrl+d,提交任務'
job 1 at Tue Nov 12 17:33:00 2019
[root@localhost mnt]# atq '查看配置的任務,結果沒有'
[root@localhost mnt]# date '看眼日期'
2019年 11月 12日 星期二 17:33:59 CST '過時間了'
[root@localhost mnt]# cat /opt/test.txt
180 '出現結果'
這個命令的時間必須是當前時間之后
date 獲取當前系統時間
at>后面跟在未來的這個時間要執行的命令
eot 就是按ctrl +D鍵提交任務
也可以atq查看 ,查看將要指定的執行任務的列表
案例:在當天的21:30時自動關閉當前系統
[root@localhost mnt]# at 21:30 2019-11-12
at> shutdown -h now '關閉當前系統'
at> <EOT>
job 2 at Tue Nov 12 21:30:00 2019
[root@localhost mnt]# atq
2 Tue Nov 12 21:30:00 2019 a root
[root@localhost mnt]# atrm 2 '刪除計劃任務2'
[root@localhost mnt]# atq
atrm 刪除 計劃任務
[root@localhost mnt]# crontab -e [-u 用戶名]
[root@localhost mnt]# crontab -l [-u 用戶名]
[root@localhost mnt]# crontab -r [-u 用戶名]
e edit,創建計劃任務
-l list 列表
-r 刪除
符號 | 解釋 |
---|---|
* | 表示該位置的范圍內所有時間 |
, | 表示間隔的多個不連續時間點 |
- | 表示一個連續的時間范圍 |
/n | 指定間隔的時間頻率為n |
示例 | 解釋 |
---|---|
0 17 1-5 | 周一到周五每天17點 |
30 8 1,3,5 | 每周一周三周五的8點30分 |
0 8-18/2 * | 每天8點到18點之間每隔兩小時 |
0 /3 | 每三天 |
[root@localhost mnt]# crontab -e
"/tmp/crontab.16EW6c" 1L, 37C '自動進入這個文件內配置'
'*/2 * * * * ps aux | wc -l > /ps.txt' '輸入單引號內的配置'
:wq '保存退出'
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost mnt]# crontab -l '查看計劃任務'
*/2 * * * * ps aux | wc -l > /ps.txt
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。