進程管理、作業管理、計劃任務 等命令展示

目的:掌握linux系統中的進程查看、控制、系統資源使用情況等。
前提:可用的centos7系統,連接物理網絡。
1、pstree命令查看進程樹
【例1】顯示進程樹並顯示進程pid
[root@centos7 ~]# pstree -p
systemd(1)─┬─ModemManager(6281)─┬─{ModemManager}(6304)
│ └─{ModemManager}(6307)
├─NetworkManager(6294)─┬─dhclient(6420)
│ ├─{NetworkManager}(6344)
│ └─{NetworkManager}(6350)
├─VGAuthService(6290)
├─abrt-watch-log(6234)
├─abrt-watch-log(6244)
├─abrtd(6232)
├─accounts-daemon(6269)─┬─{accounts-daemon}(6277)
│ └─{accounts-daemon}(6285)
├─alsactl(6289)
├─at-spi-bus-laun(7474)─┬─dbus-daemon(7479)
│ ├─{at-spi-bus-laun}(7475)
│ ├─{at-spi-bus-laun}(7476)
│ └─{at-spi-bus-laun}(7478)
├─at-spi2-registr(7481)─┬─{at-spi2-registr}(7483)
│ └─{at-spi2-registr}(7484)
├─vmtoolsd(6293)───{vmtoolsd}(6373)
├─wpa_supplicant(7639)
└─xdg-permission-(7625)─┬─{xdg-permission-}(7626)
└─{xdg-permission-}(7628)
2、pidof命令查看運行進程的pid
【例2】查看正在運行的httpd進程,有哪些pid
[root@centos7 ~]# systemctl start httpd
[root@centos7 ~]# pidof httpd
8957 8956 8955 8954 8953 8943
注意:運行的程序會在/proc目錄下,以pid爲目錄名稱自動生成目錄。
3、ps命令【例3】顯示當前終端運行的進程

[root@centos7 ~]# ps
PID TTY TIME CMD
6981 pts/1 00:00:00 bash
8969 pts/1 00:00:00 ps
4、顯示所有用戶在所有終端上運行的前臺進程
[root@centos7 ~]# ps a
PID TTY STAT TIME COMMAND
6981 pts/1 Ss 0:00 -bash
7368 tty1 Ssl+ 0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth
7541 pts/0 Ss+ 0:00 -bash
7797 tty2 Ss+ 0:00 -bash
8978 pts/1 R+ 0:00 ps a
5、顯示用戶名
[root@centos7 ~]# ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 6981 0.0 0.1 116360 2936 pts/1 Ss 14:13 0:00 -bash
root 7368 0.0 0.9 310072 23736 tty1 Ssl+ 14:13 0:00 /usr/bin/X :0 -background
root 7541 0.0 0.1 116228 2908 pts/0 Ss+ 14:13 0:00 -bash
root 7797 0.0 0.1 116360 2908 tty2 Ss+ 14:13 0:00 -bash
root 8992 0.0 0.0 155360 1888 pts/1 R+ 16:00 0:00 ps u
6、顯示當前用戶所運行的所有進程,包括前臺和後臺守護進程
PID TTY STAT TIME COMMAND
1 ? Ss 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize
2 ? S 0:00 [kthreadd]
3 ? S 0:00 [ksoftirqd/0]
5 ? S< 0:00 [kworker/0:0H]
7 ? S 0:00 [migration/0]
8 ? S 0:00 [rcu_bh]
9 ? S 0:01 [rcu_sched]
10 ? S< 0:00 [lru-add-drain]
11 ? S 0:00 [watchdog/0]
12 ? S 0:00 [watchdog/1]
7、ps常用組合之一:aux
[root@centos7 ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 191156 4160 ? Ss 14:13 0:02 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S 14:13 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 14:13 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 14:13 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 14:13 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 14:13 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 14:13 0:01 [rcu_sched]
8、ps常用組合之一:-eF
[root@centos7 ~]# ps -eF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 47789 4160 2 14:13 ? 00:00:02 /usr/lib/systemd/systemd
root 2 0 0 0 0 1 14:13 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 0 14:13 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 0 0 0 14:13 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 0 14:13 ? 00:00:00 [migration/0]
root 8 2 0 0 0 0 14:13 ? 00:00:00 [rcu_bh]
9、顯示進程的佔用cpu百分比、內存使用百分比、pid、執行的命令,並以cpu排序
[root@centos7 ~]# ps axo %cpu,%mem,pid,comm --sort -%cpu |head -11
%CPU %MEM PID COMMAND
0.2 0.0 8672 kworker/0:2
0.1 0.2 6293 vmtoolsd
0.1 5.6 7513 gnome-shell
0.0 0.1 1 systemd
0.0 0.0 2 kthreadd
0.0 0.0 3 ksoftirqd/0
0.0 0.0 5 kworker/0:0H
0.0 0.0 7 migration/0
0.0 0.0 8 rcu_bh
0.0 0.0 9 rcu_sched
10、nice命令在程序運行之前指定調度優先級
【例10】運行命令時,指定nice值
[root@centos7 ~]# nice -n -20 ping 172.20.0.1
PING 172.20.0.1 (172.20.0.1) 56(84) bytes of data.
64 bytes from 172.20.0.1: icmp_seq=1 ttl=64 time=1.82 ms
64 bytes from 172.20.0.1: icmp_seq=2 ttl=64 time=1.67 ms
64 bytes from 172.20.0.1: icmp_seq=3 ttl=64 time=0.807 ms
64 bytes from 172.20.0.1: icmp_seq=4 ttl=64 time=0.610 ms
11、pgrep命令搜索進程
【例12】查詢指定用戶或UID所運行的所有進程的pid和進程名
[root@centos7 ~]# pgrep -lu root / 0
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 migration/0
8 rcu_bh
9 rcu_sched
10 lru-add-drain
12、顯示指定終端上運行的進程和pid
[root@centos7 ~]# pgrep -lt pts/1
6981 bash
13、顯示進程pid的子進程pid
[root@centos7 ~]# pgrep -P 1
3065
3091
3098
6199
6232
6234
6236
6237
6240
6241
6242
6243
6244
6245
6251
6269
6274
6280
14、uptime命令顯示當前時間、系統啓動時間、當前在線人數、系統平均負載
【例15】顯示當前系統負載
[root@centos7 ~]# uptime
16:13:04 up 1:59, 3 users, load average: 0.02, 0.02, 0.05
15、top命令實現進程管理,有很多子命令
【例16】顯示當前系統的進程
[root@centos7 ~]# top ## 這下面有很多進程在活動
16、vmstat命令顯示虛擬內存統計
【例17】顯示當前系統虛擬內存統計情況
[root@centos7 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1603012 8624 387192 0 0 12 1 17 23 0 0 100 0 0
17、iostat命令顯示統計cpu和設備IO信息
【例18】顯示當前系統的cpu和io信息
[root@centos7 ~]# iostat
Linux 3.10.0-957.el7.x86_64 (centos7.localdomain) 02/02/2019 _x8664 (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.09 0.00 0.21 0.01 0.00 99.70
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.30 43.81 1.60 336764 12316
sdb 0.11 3.82 2.98 29326 22882
scd0 0.01 0.40 0.00 3094 0
18、顯示當前系統的cpu和io信息,要求每隔2秒顯示一次,一個顯示3次
[root@centos7 ~]# iostat 2 3
Linux 3.10.0-957.el7.x86_64 (centos7.localdomain) 02/02/2019 _x8664 (4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.09 0.00 0.20 0.01 0.00 99.70

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.29 43.43 1.59 336772 12349
sdb 0.11 3.78 2.95 29326 22882
scd0 0.01 0.40 0.00 3094 0

avg-cpu: %user %nice %system %iowait %steal %idle
0.13 0.00 0.50 0.00 0.00 99.37
19、pmap命令顯示一個進程pid的內存映射
【例20】顯示pid爲1471進程的內存映射情況
[root@magedu ~]# pmap -x 1471
1471: /usr/sbin/httpd -DFOREGROUND
Address Kbytes RSS Dirty Mode Mapping
000055ab4bd61000 484 20 0 r-x-- httpd
000055ab4bfda000 12 12 12 r---- httpd
000055ab4bfdd000 8 8 8 rw--- httpd
000055ab4bfdf000 12 8 8 rw--- [ anon ]
000055ab4dc03000 904 888 888 rw--- [ anon ]
00007f04aa9e3000 72 52 0 r-x-- libnss_myhostname.so.2
20、glances命令獲取遠程主機的系統信息
【例21】本地獲取遠程主機的系統信息
本地主機ip爲:172.18.118.87
遠程主機ip爲:172.18.118.89
在遠程主機上開啓glances代理:
[root@magedu ~]# glances -sB 172.18.118.89
在本地監控遠程主機的系統信息:
[root@magedu ~]# glances -c 172.18.118.89
21、kill命令向進程方式控制信號
【例22】中止ping命令的進程
[root@magedu ~]# pidof ping
10411
[root@magedu ~]# kill -2 10411
22、【例23】直接殺死ping命令的進程
[root@magedu ~]# pidof ping
10411
[root@magedu ~]# kill -15 10411
23、強制殺死ping命令的進程
[root@magedu ~]# pidof ping
10411
[root@magedu ~]# kill -9 10411
24、將ping命令的進程放入後臺休眠
[root@magedu ~]# kill -19 $(pidof ping)
【例26】將休眠的ping命令的進程放入前臺執行
[root@magedu ~]# kill -18 $(pidof ping)
二、### 作業管理
目的:掌握把作業放到後臺、把後臺作業調度到前臺運行、查看作業等。
前提:可用的centos7系統,連接物理網絡。
1、ctrl + z組合命令使前臺進程暫停到後臺
【例27】把ping命令進程暫停放到後臺
[root@centos7 ~]# ping 172.20.0.1
PING 172.20.0.1 (172.20.0.1) 56(84) bytes of data.
64 bytes from 172.20.0.1: icmp_seq=1 ttl=64 time=2.54 ms
64 bytes from 172.20.0.1: icmp_seq=2 ttl=64 time=1.55 ms
64 bytes from 172.20.0.1: icmp_seq=3 ttl=64 time=1.94 ms
2、fg命令把後臺進程調度到前臺繼續執行
【例28】將剛剛放入後臺的pin命令進程調度到前臺繼續執行
bg命令把後臺暫停的ping命令進程在後臺繼續執行
【例29】把後臺暫停ping命令進程在後臺繼續執行起來
[root@centos7 ~]#fg / bg
3、jobs命令查看 【例30】查看後臺的所有進程
4、實現關閉終端後,進程繼續執行,多種方式
【例32】關閉終端後,進程繼續執行:方式一
先在前臺運行,然後ctrl+z暫停到後臺,再用bg將後臺暫停的進程使其在後臺繼續運行。
[root@magedu ~]# vim test.sh
#!/bin/bash
n=0
while true;do
echo $n >> /tmp/magetest.txt
let n++
sleep 0.5
done
[root@magedu ~]# ./test.sh
【例33】關閉終端後,進程繼續執行:方式二
[root@magedu ~]# ./test.sh &
關閉終端,新打開終端窗口查看
【例34】關閉終端後,進程繼續執行:方式三
[root@magedu ~]# nohup ./test.sh &> /dev/null &
可以關閉終端,打開新的終端窗口驗證,注意可以使用screen命令實現此功能。
5、並行執行,多種方式
【例35】並行執行3個shell腳本:方式一
[root@magedu ~]# vim all.sh
/app/bin/test1.sh &
/app/bin/test2.sh &
/app/bin/test2.sh &
【例36】並行執行3個shell腳本:方式二
[root@magedu ~]# (./test1.sh &);(./test2.sh &);(./test3.sh &
【例37】並行執行3個shell腳本:方式三
[root@magedu ~]# { ./test1.sh & ./test2.sh & ./test3.sh & }
實驗三:計劃任務
目的:掌握at命令實現一次性計劃任務和crontab命令實現週期性計劃任務。
前提:可用的centos7系統,連接物理網絡。
1、at命令設置一次性計劃任務
【例1】設定當前時間的20:05執行wall hello
[root@magedu ~]# at 20:05
at> wall hello
at> <EOT>
job 7 at Mon Jul 9 20:05:00 2018
注意:按ctrl+d結束設置。
如果設定的時間是當前已經過去了,則表示第二天的時間。
查看一次性任務列表:
[root@magedu ~]# at -l
7 Mon Jul 9 20:05:00 2018 a root
查看時間,驗證:
[root@magedu ~]# date
Mon Jul 9 20:04:45 CST 2018
[root@magedu ~]#
Broadcast message from [email protected] (Mon Jul 9 20:05:00 2018):
hello
[root@magedu ~]# at -l 此時,一次性任務執行完畢後,列表爲空。
【例3】刪除一個一次性任務
刪除前查看任務列表:
[root@magedu ~]# at -l
10 Thu Jul 12 20:00:00 2018 a root
11 Thu Jul 12 20:10:00 2018 a root
刪除第11號任務:

​ [root@magedu ~]# at -d 11
刪除後查看任務列表:
[root@magedu ~]# at -l
10 Thu Jul 12 20:00:00 2018 a root
【例4】設置2分鐘後,執行wall hello

[root@magedu ~]# at now+2 minutes
at> wall hello
at> <EOT>
job 7 at Mon Jul 9 20:05:00 2018
注意:按ctrl+d結束設置。
【例5】設置明天8點,執行wall hello
[root@magedu ~]# at 8:00 tomorrow
at> wall hello
at> <EOT>
job 7 at Mon Jul 10 8:00:00 2018
【例6】設置後天8點,執行wall hello
[root@magedu ~]# at 8:00 +2 days
at> wall hello
at> <EOT>
job 7 at Mon Jul 11 8:00:00 2018
【例7】設置2018年7月25日,8點,執行wall hello
[root@magedu ~]# at 8:00 2018-7-25
at> wall hello
at> <EOT>
job 7 at Mon Jul 25 8:00:00 2018
【例8】禁止指定用戶magedu使用at命令進行一次性任務設置
root@magedu ~]# vim /etc/at.deny
magedu
注意:默認/etc/at.deny文件表示爲黑名單模式;還可以使用白名單/etc/at.allow,默認此文件不存在,需要手動創建;只要有白名單/etc/at.allow文件存在,黑名單文件就失效;白名單文件同理,只要把一個用戶名寫在該文件中的一行,就只允許這個用戶使用at命令執行一次性計劃任務了。


at一次性計劃任務保存在/var/spool/at/目錄下。
crontab命令設置週期性性計劃任務**
時間格式是:分 時 日 月 周
【例9】每週一、三、五早上8點,執行wall good morning
[root@magedu ~]# crontab -e
最後一行添加:
00 08 * * 1,3,5 /usr/bin/wall "good morning!"
【例10】每5分鐘向時間服務器同步一次時間
[root@magedu ~]# crontab -e
最後一行添加:
5 * * * * ntpdate ntp.api.bz >/dev/null
【例11】查看crontab計劃列表
[root@magedu ~]# crontab -l
00 08 * * 1,3,5 /usr/bin/wall "good morning!"
5 * * * * ntpdate ntp.api.bz >/dev/null
【例12】每天晚上9點半關機
[root@magedu ~]# crontab -e
最後一行添加:
​    
30 21 * * * /usr/sbin/poweroff
【例13】每月1日的15點到17點,每隔10分鐘,執行一次echo hello命令
[root@magedu ~]# crontab -e
最後一行添加:
*/10 15-17 1 * * /usr/bin/echo "hello"
注意:crontab命令創建的用戶自定義的週期性計劃任務,實際是保存在/var/spool/cron/root文件裏。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章