Bootstrap

进程

1.netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:

-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
nginx服务默认通过TCP 80端口监听客户端请求:
root@proxy ~]# netstat -anptu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10441/nginx

#2 案例2:查看进程信息

####查看进程的主要命令工具:

ps aux、ps –elf:查看进程静态快照
top:查看进程动态排名
pstree:查看进程与进程之间的树型关系结构
pgrep:根据指定的名称或条件检索进程

##使用pgrep命令查询指定名称的进程,选项-l显示PID号、-x精确匹配进程名:
[root@nginx ~]# pgrep -lx httpd
5544 httpd
5545 httpd
5546 httpd
5547 httpd
5548 httpd
5549 httpd

2.使用pstree命令,可以提供用户名或PID值作为参数。通过前一步已知进程gdm的PID为1584,因此以下操作可列出进程gdm的进程树结构:

[root@nginx ~]# pstree -p 5544
httpd(5544)─┬─httpd(5545)
├─httpd(5546)
├─httpd(5547)
├─httpd(5548)
└─httpd(5549)

#步骤三:找出进程 sshd 的父进程的 PID 编号/进程名称

要查看进程的父进程PID,可以使用ps –elf命令,简单grep过滤即可。找到进程sshd所在行对应到的PPID值即为其父进程的PID编号。为了方便直观查看,建议先列出ps表头行,以分号隔开再执行过滤操作。
[root@svr7 ~]# ps -elf | head -1 ; ps -elf | grep sshd
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1362 1 0 80 0 - 20636 poll_s Jan05 ? 00:00:00 /usr/sbin/sshd –D
… … //可获知进程sshd的父进程PID为1

####然后再根据pstree –p的结果过滤,可获知PID为1的进程名称为systemd:
[root@svr7 ~]# pstree -p | grep ‘(1)’
systemd(1)-±ModemManager(995)-±{ModemManager}(1018)

#步骤四:查看当前系统的CPU负载/进程总量信息

####使用top命令,直接看开头部分即可;或者 top -n 次数:

案例3:进程调度及终止

###进程调度及终止的主要命令工具:
命令行 &:将命令行在后台运行
Ctrl + z 组合键:挂起当前进程(暂停并转入后台)
jobs:列出当前用户当前终端的后台任务
bg 编号:启动指定编号的后台任务
fg 编号:将指定编号的后台任务调入前台运行
kill [-9] PID…:杀死指定PID值的进程
kill [-9] %n:杀死第n个后台任务
killall [-9] 进程名…:杀死指定名称的所有进程
pkill:根据指定的名称或条件杀死进程

###实现此案例需要按照如下步骤进行。
###步骤一:根据PID杀死进程

###1)开启sleep测试进程
[root@svr7 ~]# sleep 600
//… … 进入600秒等待状态

###2)找出进程sleep的PID
另开一个终端,ps aux并过滤进程信息(第2列为PID值):
[root@svr7 ~]# ps aux | grep sleep
root 32929 0.0 0.0 4312 360 pts/1 S+ 17:25 0:00 sleep 600

####3)杀死指定PID的进程
[root@svr7 ~]# kill -9 32929

#步骤二:根据进程名杀死多个进程

####1)在后台开启多个vim进程

[root@nginx ~]# vim a.txt&
[1] 5762
[root@nginx ~]# vim b.txt&
[2] 5763

[1]+ 已停止 vim a.txt
[root@nginx ~]# vim c.txt &
[3] 5764

[2]+ 已停止 vim b.txt

##2)确认vim进程信息
[root@nginx ~]# jobs -l
[1] 5762 停止 (tty 输出) vim a.txt
[2]- 5763 停止 (tty 输出) vim b.txt
[3]+ 5764 停止 (tty 输出) vim c.txt

##3)把vim进程给杀死
[root@nginx ~]# killall -9 vim

###4)再次确认vim的进程信息
[root@nginx ~]# jobs -l
[1] 5762 已杀死 vim a.txt
[2]- 5763 已杀死 vim b.txt
[3]+ 5764 已杀死 vim c.txt

###5)jobs的解答
jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。

在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

###语法

jobs(选项)(参数)

##选项

-l:显示进程号;
-p:仅任务对应的显示进程号;
-n:显示任务状态的变化;
-r:仅输出运行状态(running)的任务;
-s:仅输出停止状态(stoped)的任务。

#步骤三:杀死属于指定用户的所有进程

###1)登入测试用户king
[root@nginx ~]# useradd king
[root@nginx ~]# su - king

###2)另起一个终端,查找king用户的所有进程:(以root用户登陆)
[root@nginx ~]# pgrep -u king
5793
[root@nginx ~]# pstree -up 5793 //检查该用户的进程树
bash(5793,king)

###3)强制杀死改用户的进程
[root@nginx ~]# pkill -9 -u king

###4)回到king用户的客户端查看
[king@nginx ~]$ 已杀死
[root@nginx ~]#
#####用户被杀死,退回root的命令行

3.查看liunx系统中,CPU使用率最高的前十条进程

[root@king ~]# ps auxw | head -1
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
[root@king ~]# ps auxw | head -1 ; ps auxw | sort -rn -k3| head -10
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       7027  0.1  0.6 320316  6700 ?        Ssl  10:10   0:02 /usr/bin/vmtoolsd
gdm        8173  0.1 13.3 2934992 133092 ?      Sl   10:10   0:04 /usr/bin/gnome-shell
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
rtkit      6996  0.0  0.1 198792  1824 ?        SNsl 10:10   0:00 /usr/libexec/rtkit-daemon
rpc        7000  0.0  0.1  69264  1196 ?        Ss   10:10   0:00 /sbin/rpcbind -w
root        934  0.0  0.0      0     0 ?        S    10:10   0:00 [irq/16-vmwgfx]
root        925  0.0  0.0      0     0 ?        S<   10:10   0:00 [ttm_swap]
root       9112  0.0  0.0 108176   680 pts/0    S+   10:51   0:00 head -10
root       9111  0.0  0.0 116500   924 pts/0    R+   10:51   0:00 sort -rn -k3
root       9110  0.0  0.1 155360  1888 pts/0    R+   10:51   0:00 ps auxw

4.查看内存使用率最高的前10个进程

[root@king ~]# ps auxw | head -1 ; ps auxw | sort -rn -k4| head -10
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
gdm        8173  0.1 13.3 2934992 133096 ?      Sl   10:10   0:04 /usr/bin/gnome-shell
root       7136  0.0  2.9 358556 29356 ?        Ssl  10:10   0:00 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
root       7741  0.0  2.3 277260 23444 tty1     Ssl+ 10:10   0:00 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-yh43mH/database -seat seat0 -nolisten tcp vt1
root       7690  0.0  1.7 573920 17260 ?        Ssl  10:10   0:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
polkitd    7013  0.0  1.6 616256 16828 ?        Ssl  10:10   0:01 /usr/lib/polkit-1/polkitd --no-debug
root       7700  0.0  1.5 1008636 15000 ?       Ssl  10:10   0:00 /usr/sbin/libvirtd
gdm        8281  0.0  1.5 1012332 15796 ?       Sl   10:10   0:00 /usr/libexec/gsd-media-keys
gdm        8265  0.0  1.5 615364 14972 ?        Sl   10:10   0:00 /usr/libexec/gsd-xsettings
gdm        8325  0.0  1.4 623292 14332 ?        Sl   10:10   0:00 /usr/libexec/gsd-wacom
gdm        8288  0.0  1.4 705740 14808 ?        Sl   10:10   0:00 /usr/libexec/gsd-power

5.虚拟内存使用最多的前10个进程

[root@king ~]# ps auxw | head -1 ; ps auxw | sort -rn -k5| head -10
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
gdm        8173  0.1 13.3 2934992 133096 ?      Sl   10:10   0:04 /usr/bin/gnome-shell
gdm        8199  0.0  0.6 1252224 6312 ?        S<l  10:10   0:00 /usr/bin/pulseaudio --start --log-target=syslog
gdm        8281  0.0  1.5 1012332 15796 ?       Sl   10:10   0:00 /usr/libexec/gsd-media-keys
root       7700  0.0  1.5 1008636 15000 ?       Ssl  10:10   0:00 /usr/sbin/libvirtd
gdm        8269  0.0  1.4 714360 14812 ?        Sl   10:10   0:00 /usr/libexec/gsd-color
gdm        8288  0.0  1.4 705740 14808 ?        Sl   10:10   0:00 /usr/libexec/gsd-power
gdm        8136  0.0  1.1 671444 11236 ?        Ssl  10:10   0:00 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart
gdm        8325  0.0  1.4 623292 14332 ?        Sl   10:10   0:00 /usr/libexec/gsd-wacom
polkitd    7013  0.0  1.6 616256 16828 ?        Ssl  10:10   0:01 /usr/lib/polkit-1/polkitd --no-debug
gdm        8265  0.0  1.5 615364 14972 ?        Sl   10:10   0:00 /usr/libexec/gsd-xsettings

查看进程还有更加简便的方法:

在这里插入图片描述

  1. ps auxw --sort=user 按照用户
  2. ps auxw --sort=pid 按照pid查看
  3. ps auxw --sort=%cpu 按照cpu查看
  4. ps auxw --sort=%mem 按照内存查看
  5. ps auxw --sort=%vsz 按照使用的虚拟内存的大少
;