进程管理、作业管理、计划任务 等命令展示

目的:掌握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文件里。

猜你喜欢

转载自blog.51cto.com/14128387/2348594