什么是进程?
已启动可以执行的程序运行的例子
也就是: 程序运行的状态 它是动态的 有生命周期
静态查看进程 ps aux
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 运行进程的 用户
PID: 进行id
%CPU: cpu的占用率
%MEM :内存的占用率
VSZ: 占用虚拟内存的大小
RSS:占用物理内存的 大小
TTY: 终端
STAT: 进程状态
START:进程的启动时间
TIME:进程占用cpu的总时间
COMMAND :进程文件名
静态查看进程 ps -ef
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
UID: 用户的id
PID: 进程id
PPID:父进程id
C:cpu的占用率‘
STIME:开始时间
TTY:终端
TIME:运行时间
CMD: 进程文件名
想要查看单个进程PID
pgrep 进程名
[root@localhost ~]# pgrep nginx
1000
1006
[root@localhost ~]# pgrep mysql
1021
1259
想要查看某个指定进程的PID
[root@localhost ~]# ps aux | grep 进程名字
也可以
[root@localhost ~]# ps -ef | grep 进程名
查看端口
首先安装软件包
[root@localhost ~]# yum -y install net-tools
查看所有端口,正在被监听的端口
netstat -nplt
知道进程名字 然后查他的 端口号
[root@localhost ~]# netstat -nplt | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 23716/mysqld
它的端口号是3306.
假设我知道端口号 怎么查它的进程名字 (:后不能有空格,否则查不到)
[root@localhost ~]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 23716 mysql 32u IPv6 681514 0t0 TCP *:mysql (LISTEN)
[root@localhost ~]# netstat -nplt | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 1259/mysqld
注意:端口号只有整数 从0-65535
记住: 特殊的端口号 mysql 端口号是3306, nginx的端口号是80,php的端口号是9000.
扩展: 想要查看已经登录到终端的进程信息 w
远程登录会有ip地址
查看zyq, vmware一个,xshell有俩个
[root@localhost ~]# w
10:13:58 up 13:16, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 四22 1:25m 0.87s 0.09s bash
root pts/0 192.168.231.1 10:12 6.00s 0.01s 0.00s w
root pts/1 192.168.231.1 10:13 6.00s 0.01s 0.01s -bash
查看练习,vmware一个,xshell一个
[root@ggbond ~]# w
12:47:38 up 14:44, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 四22 1:33m 0.03s 0.03s -bash
root pts/0 192.168.231.1 12:45 2.00s 0.01s 0.01s w
部分参数解释:
USER –登录用户名.
TTY –登录用户使用的终端名.
FROM –登录用户来源的主机名或IP地址.
LOGIN@ –用户登录时间.
WHAT –用户当前的进程及选项/参数。
动态查看进程 top
动态显示信息,每隔三秒刷新一次。
top - 19:43:32 up 19:14, 3 users, load average: 0.00, 0.04, 0.07
Tasks: 141 total, 1 running, 140 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.8 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7989856 total, 6537000 free, 647196 used, 805660 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 7024744 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
92596 root 20 0 161968 6676 4912 S 0.7 0.1 2:24.77 sshd
123 root 20 0 0 0 0 S 0.3 0.0 0:40.71 kauditd
513 root 20 0 39056 5528 5208 S 0.3 0.1 0:00.65 systemd-journal
top信息解释
第一行 top - 19:43:32 up 19:14, 3 users, load average: 0.00, 0.04, 0.07
内容 | 解释 |
19:43:32 | 当前时间 |
up 19:14 | 系统运行时间 |
3 user | 几个用户登录 |
load average | 系统平均负载,1分钟平均,5分钟平均,15分钟平均 |
第二行 Tasks: 141 total, 1 running, 140 sleeping, 0 stopped, 0 zombie
内容 | 解释 |
xxx total | 进程总数 |
xxx running | 正在运行的进程数 |
xxx sleeping | 正在睡眠的进程数 |
xxx stopping | 停止的进程数 |
xxx zombie | 僵尸进程数 |
第三行:%Cpu(s): 0.0 us, 0.8 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
内容 | 解释 |
us | 用户空间占用空间百分比 |
sy | 系统空间占用空间百分比 |
id | cpu的空闲率,id越高,使用率越低 |
wa | cpu等待磁盘写入 |
ni:nice值,nice值从-20到+19 nice值越小,优先级越高
修改进程的 优先级
renice -n -10 pid
第四行 em : 7989856 total, 6537000 free, 647196 used, 805660 buff/cache
内容 | 解释 |
x total | 物理内存总量 |
x used | 使用物理的内存总量 |
x free | 空闲内存总量 |
x buff | 复核缓冲的内存量 |
第五行 Swap 交换区: 2097148 total, 2097148 free, 0 used. 7024744 avail Mem
内容 | 解释 |
x total | 交换区总量 |
x used | 使用交换区总量 |
x free | 空闲交换区总量 |
> 往下翻页
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出
z 彩色显示
W 保存
=====================================
PR 优先级
VIRT 进程使用的虚拟内存总量,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。
SHR 共享内存大小,单位kb
在top中,按shirf+m 给内存排序. 按住shift+p,给cpu排序.
进程排序: ps aux --sort %cpu ; sory是排序,默认是升序.
降序是 ps aux --sort -%cpu -号是降序
[root@localhost ~]# ps aux --sort %cpu | tail
root 4760 0.0 0.0 115344 1584 ? Ss 13:13 0:00 bash -c export LANG="en_US";export LANGUAGE="en_US";export LC_ALL="en_US";free;echo finalshell_separator;uptime;echo finalshell_separator;cat /proc/net/dev;echo finalshell_separator;df;echo finalshell_separator;sleep 1;free;echo finalshell_separator;uptime;echo finalshell_separator;cat /proc/net/dev;echo finalshell_separator;df;echo finalshell_separator;
root 4769 0.0 0.0 108052 360 ? S 13:13 0:00 sleep 1
root 4770 0.0 0.0 155584 2024 pts/0 R+ 13:13 0:00 ps aux --sort %cpu
root 4771 0.0 0.0 108304 680 pts/0 S+ 13:13 0:00 tail
root 736 0.1 0.0 273196 4864 ? Ssl 13:10 0:00 /usr/bin/vmtoolsd
root 1019 0.1 0.1 574284 19492 ? Ssl 13:10 0:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 1647 0.1 0.0 162732 2972 pts/1 S+ 13:10 0:00 top
root 1 0.4 0.0 125448 3920 ? Ss 13:10 0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 549 0.5 0.0 45672 2124 ? Ss 13:10 0:00 /usr/lib/systemd/systemd-udevd
root 1526 0.5 0.0 161832 6652 ? Ss 13:10 0:00 sshd: root@pts/0,pts/1
降序:
[root@localhost ~]# ps aux --sort -%cpu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1526 0.5 0.0 161832 6652 ? Ss 13:10 0:01 sshd: root@pts/0,pts/1
root 1 0.3 0.0 125448 3920 ? Ss 13:10 0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 549 0.3 0.0 45672 2124 ? Ss 13:10 0:00 /usr/lib/systemd/systemd-udevd
root 736 0.1 0.0 273196 4864 ? Ssl 13:10 0:00 /usr/bin/vmtoolsd
root 1647 0.1 0.0 162732 2972 pts/1 S+ 13:10 0:00 top
root 2 0.0 0.0 0 0 ? S 13:10 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 13:10 0:00 [kworker/0:0]
root 4 0.0 0.0 0 0 ? S< 13:10 0:00 [kworker/0:0H]
查看指定进程的动态信息
top -p + 进程号
想让top以几秒(n)的速度刷新
top -d n(n是数字)
进程控制,显示进程 kill pkill
kill
语法: kill 信号 PID
# kill -l #查看所有信号
-1 HUP 重新加载进程或者重新加载配置文件,PID不变
-9 KILL 强制杀死
-15 TERM 正常杀死(这个信号可以默认不写)
举例: 开始进程vsftpd
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ps aux | grep vsftpd
root 32737 0.0 0.0 53292 572 ? Ss 14:51 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 105460 0.0 0.0 112824 980 pts/0 S+ 20:41 0:00 grep --color=auto vsftpd
查看进程PID
然后杀死 分::强制杀死和正常杀死
强制杀死
[root@localhost ~]# kill -9 32737
[root@localhost ~]# ps aux | grep vsftpd
root 108952 0.0 0.0 112824 980 pts/0 S+ 20:44 0:00 grep --color=auto vsftpd
正常杀死
[root@localhost ~]# kill -15 109644
[root@localhost ~]# ps aux | grep vsftpd
root 110236 0.0 0.0 112824 976 pts/0 S+ 20:45 0:00 grep --color=auto vsftpd
pkill
使用pkill可以指定进程的名字
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ps aux | grep vsftpd
root 112306 0.0 0.0 53292 576 ? Ss 20:47 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 112554 0.0 0.0 112824 976 pts/0 R+ 20:47 0:00 grep --color=auto vsftpd
[root@localhost ~]# pkill -9 vsftpd
[root@localhost ~]# ps aux | grep vsftpd
root 112803 0.0 0.0 112824 980 pts/0 S+ 20:48 0:00 grep --color=auto vsftpd