进程是已启动的可执行程序的运行实例,是程序运行的过程,动态的,有生命周期及运行状态。
线程是最小的执行单位,调度的基本单位
ps aux
a 只能查看系统里面运行的所有终端进程
u 查看进程的拥有者
x 显示系统内所有的进程
f 显示进程之间的父子关系
参数详解
ps aux
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 125376 3844 ? S
USER | |
PID | 进程ID |
%CPU | cpu的占用率 |
%MEM | 内存的占用率 |
VSZ | 进程占用虚拟内存的大小 |
RSS | 占用物理内存的大小 |
TTY | ?表示没有占用终端 |
STAT | R 运行 S可中断睡眠 D不可中断睡眠 T停止的进程 Z僵尸进程 X死掉的进程 |
START | 进程的启动时间 |
TIME | 进程占用cpu的总时间 |
COMMAND | 进程文件,进程名 |
ps -ef
-e 显示所有进程
-l 长格式显示
-f 完整格式
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 9月01 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 9月01 ? 00:00:00 [kthreadd]
root 4 2 0 9月01 ? 00:00:00 [kworker/0:0H]
root 5 2 0 9月01 ? 00:00:00 [kworker/u256:0]
root 6 2 0 9月01 ? 00:00:00 [ksoftirqd/0]
UID | 用户id |
PID | 进程id |
PPID | 父进程id |
c | cpu占用率 |
STIME | 进程开始时间 |
TTY | 开始此进程的TTY |
TIME | 此进程运行的总时间 |
CMD | 命令名 |
linux top命令详解(看这一篇就够了)_Steven.1的博客-CSDN博客
top - 01:14:08 up 10:31, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 96 total, 1 running, 95 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995672 total, 614560 free, 142320 used, 238792 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 706580 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 18 -2 125376 3844 2568 S 0.0 0.4 0:01.33 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 S 0.0 0.0 0:00.75 kworker/u256:0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.27 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
参数详解
第一行
内容 | 详解 |
01:14:08 | 当前时间 |
up 10:31 | 系统运行时间 |
3 users | 当前登陆的用户数 |
load average 0.00, 0.01, 0.05 |
平均负载,一分钟的平均负载,五分钟的平均负载 十五分钟的平均负载 |
第二行
内容 | 详解 |
Tasks: 96 total | 进程总数 |
1 running | 正在运行的进程数量 |
95 sleeping | 正在休眠的进程数量 |
0 stopped | 停止运行的进程总数 |
0 zombie | 僵尸进程数 |
第三行
内容 | 详解 |
0.0us | 用户占用CPU的百分比 |
0.0sy | 系统占用CPU的百分比 |
0.0ni |
改变过优先级的进程占用CPU的百分比 |
100.0 id | 空闲百分比 |
0.0 wa | 等得输入输出的CPU时间百分比 |
0.0 hi | 硬中断 |
0.0si | 软中断 |
0.0st | 虚拟机占用的cpu |
第四行
内容 | 详解 |
KiB Mem | 物理内存 |
995672 total | 物理内存总数 |
614560 free | 空闲的物理内存 |
142320 used | 已使用的物理内存 |
238792 buff/cache | 用作内核缓存的内存量 |
第五行
内容 | 详解 |
KiB Swap | 交换区 |
2097148 total | 交换区总量 |
2097148 free | 使用的交换区总量 |
0 used | 空闲的交换区总量 |
706580 avail Mem | 缓冲的交换区总量 |
进程信息
列名 | 详解 |
PID | 进程id |
USER | 使用进程的用户 |
PR | 优先级 |
NI | 优先级 负值表示优先级高,正值表示优先级低 |
VIRT | 进程使用的虚拟内存总量 kb |
RES | 进程使用的、为被换出的物理内存大小 kb |
SHR | 共享内存大小 |
S | 进程状态D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | CPU的占用百分比 |
%MEM | 物理内存百分比 |
TIME+ | 进程使用的CPU时间总计 |
COMMAND | 命令行 |
P 按cpu占用百分比排列
M按物理内存占用百分比排列
[root@localhost ~]# pgrep httpd
2297
2298
2299
2300
2301
2302
[root@localhost ~]# pidof httpd
2302 2301 2300 2299 2298 2297
[root@localhost ~]# ps aux | grep httpd
root 2297 0.1 0.5 224084 5036 ? S
[root@localhost ~]# ps -ef | grep httpd
root 2297 1 0 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2298 2297 0 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2299 2297 0 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2300 2297 0 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2301 2297 0 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2302 2297 0 03:09 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 2309 2209 0 03:17 pts/0 00:00:00 grep --color=auto httpd
[root@localhost ~]# netstat -lnpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 2297/httpd
[root@localhost ~]# ss -lntp | grep httpd
LISTEN 0 128 [::]:80 [::]:* users:(("httpd",pid=2302,fd=4),("httpd",pid=2301,fd=4),("httpd",pid=2300,fd=4),("httpd",pid=2299,fd=4),("httpd",pid=2298,fd=4),("httpd",pid=2297,fd=4))
进程状态:
+:表示在前台运行的进程
S+:休眠进程
T+:暂停,挂起进程
s:父进程
kill
-1 hup 重新加载进程或者配置文件,pid不变
-9 kill 强制杀死
-15 TERM 正常杀死
-18 CONT 激活进程
-19 STOP 挂起进程
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ps aux | grep vsftpd #查看进程pid
root 46767 0.0 0.0 53288 576 ? Ss 13:27 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@localhost ~]# kill -1 46767 #重新加载配置文件
[root@localhost ~]# ps aux |grep vsftpd #查看pid没有改变
root 46767 0.0 0.0 53288 740 ? Ss 13:27 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@localhost ~]# kill 46767 #正常杀死进程,信号为15可以默认不写
[root@localhost ~]# ps aux |grep vsftpd #查看进程已经没有了
root 50896 0.0 0.0 112824 980 pts/0 S+ 13:29 0:00 grep --color=auto vsftpd
[root@localhost ~]# systemctl start vsftpd #重启进程
[root@localhost ~]# ps aux |grep vsftpd #查看进程pid,发现pid改变
root 51610 0.0 0.0 53288 576 ? Ss 13:29 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 51978 0.0 0.0 112824 980 pts/0 S+ 13:29 0:00 grep --color=auto vsftpd
[root@localhost ~]# pkill -9 vsftpd #强制杀死,一般用于不能正常停止的情况
[root@localhost ~]# ps -aux |grep vsftpd
root 54655 0.0 0.0 112824 980 pts/0 R+ 13:31 0:00 grep --color=auto vsftpd
使用pkill时可以指定进程的名字
[root@localhost ~]# pkill -9 vsftpd
作业控制是指控制正在运行的进程的行为,比如,用户可以挂起一个进程或者放到后台去运行,等一会在执行该进程。
[root@localhost ~]# sleep 7000 & # &让命令或者程序在后台运行
[1] 17332
[root@localhost ~]# sleep 8000 # ctrl+z 把程序放到后台(程序会在后台暂停)
^Z
[2]+ 已停止 sleep 8000
[root@localhost ~]# jobs #查看后台的工作号
[1]- 运行中 sleep 7000 &
[2]+ 已停止 sleep 8000
[root@localhost ~]# bg %2 # 让暂停的程序在后台运行,%是用来修饰job number ,2就是job number
[2]+ sleep 8000 &
[root@localhost ~]# jobs
[1]- 运行中 sleep 7000 &
[2]+ 运行中 sleep 8000 &
[root@localhost ~]# fg %1 #将后台运行的程序调到前台
[root@localhost ~]# jobs
[1]+ 已停止 sleep 7000
[2]- 运行中 sleep 8000 &
[root@localhost ~]# kill -9 %1 #通过kill杀死进程
[1]+ 已停止 sleep 7000
[root@localhost ~]# jobs
[1]+ 已杀死 sleep 7000
[2]- 运行中 sleep 8000 &
[root@localhost ~]# jobs #再次查看就没有了
[2]+ 运行中 sleep 8000 &
uptime
[root@localhost ~]# uptime
13:41:50 up 17:56, 3 users, load average: 0.20, 0.24, 0.24
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 2827 2456 94 1 276 202
Swap: 2047 1296 751
-m:单位M
[root@localhost ~]# cat /etc/redhat-release #查看版本
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]# uname -a #查看正在运行的内核版本
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# uname -r #查看内核版本
3.10.0-1160.el7.x86_64