进程
程序
是指令和数据的有序集合,是一个静态的概念进程
代表一个正在运行的程序的实例线程
通常在一个进程中可以包含若干个线程- 在命令的末尾加上
&
符号,就可以让程序在后台运行(前台运行可以卡住整个终端,阻塞了,无法处理其他事情) - 程序正在前台运行,可以使用Ctrl+Z把程序暂停
jobs
命令 查看运行的程序bg
把暂停的程序放到后台运行fg
把一个程序调到前台运行
进程操作案例
-
创建一个test.py文件 $
vi test.py
-
编写test.py 文件内容
#! /usr/bin/python3 print('run') while True:pass # 此处做一个死循环
-
给test.py文件添加执行权限 $
chmod u+x test.py
-
运行程序
./test.py run # 至此程序卡住
-
Ctrl(Command) + Z
暂停程序 -
再次执行程序
./test.py & run # 此时没有卡住,可以做别的事情
-
我们通过
jobs
命令查看jobs [1]+ Stopped ./test.py [2]- Running ./test.py &
-
通过
bg
命令把暂停的程序放到后台运行bg 1 [1]+ Running ./test.py & # 再次通过job查看 jobs [1]- Running ./test.py [2]+ Running ./test.py &
-
通过
fg
命令把程序调到前台来运行fg 2 ./test.py # 此时控制台处于卡住状态,无法做任何操作
-
Ctrl(Command) + C
终止程序运行
查看进程
-
查看全部进程: $
ps -ef
(推荐使用)UID
程序被该UID所拥有PID
这个程序的进程IDPPID
上级父程序的进程IDC
表示CPU使用的资源百分比STIME
表示进程启动时间TTY
登入者的终端机位置TIME
使用掉的CPU时间CMD
所下达的指令为何- 选项
-ef
表示:查看全格式的全部进程
-
查看全部进程的其他方式:$
ps aux
USER
进程拥有者PID
这个程序的进程ID%CPU
占用的CPU使用率%MEM
占用的内存使用率VSZ
占用的虚拟内存大小TTY
终端的次要装置号码(minor device number of tty)STAT
该进程的状态,在linux中有5种主要状态D
不可中断 uninterruptible sleep(usually IO)R
运行 runnable (on run queue)S
中断 sleepingT
停止 traced or stoppedZ
僵死 a defunct (“zombie”) process- 注:其他状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页)
START
进程开始时间TIME
执行的时间COMMAND
所执行的指令
-
ps -ef
与ps aux
的区别- 显示风格不同,aux属于BSD的风格,-ef属于System V风格
- aux会截断Command列,而-ef显示出来的是带全路径的进程名, 当结合grep时,这种区别会影响到结果
-
通过搜索查看相关进程:$
ps -ef | grep python
- 表示
ps -ef
输出的结果作为grep
的输入参数,然后在里面搜索内容为python的进程
- 表示
-
查看CPU信息
top
命令- 举例:
top # 以下是输出信息 # 当前时间、系统运行的时间、用户数、平均负载量(当前一分钟平均量[cpu核心数]、当前五分钟平均量[cpu核心数]、当前十五分钟平均量[cpu核心数]) top - 22:57:13 up 5:53, 2 users, load average: 1.00, 0.90, 1.12 Tasks: 165 total, 2 running, 163 sleeping, 0 stopped, 0 zombie # CPU占用率 %CPU(s): 47.6 us, 0.1 sy, 0.0 ni, 52.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st # 物理内存占用情况 KiB Mem: 997652 total, 443946 free, 88128 used, 465560 buff/cache # 虚拟内存(交换分区)占用情况 KiB Swap: 998396 total, 998396 free, 0 used. 727488 avail Mem # 以下是具体的进程信息 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2812 jack 20 0 28096 8324 5328 R 99.3 0.8 2:32.21 test.py 1 root 20 0 37760 5816 4020 S 0.0 0.6 0:02.98 systemd # ... 一系列数据展示不再此处列举了
- 关键词意义如下:
load average
平均负载 1, 5, 15分钟total
物理内存总量used
使用中的内存总量free
空闲内存总量buffer/cache
缓存的内存量
- 具体进程字段意义:
PID
进程idUSER
进程所有者PR
进程优先级NI
nice值,负值表示高优先级,正值表示低优先级VIRT
进程使用的虚拟内存总量,单位kb VIRT = SWAP + RESRES
进程使用的、未被换出的物理内存大小,单位kb, RES = CODE + DATASHR
共享内存大小,单位kbS
进程状态: D(不可中断的睡眠状态)、R(运行)、S(睡眠)、T(跟踪/停止)、Z(僵尸进程)%CPU
上次更新到现在的CPU时间占用比%MEM
进程使用的物理内存百分比TIME+
进程使用的CPU时间总计, 单位1/100秒COMMAND
进程名称(命令名/命令行)
- 通过敲打命令进行查看:
M
内存排序P
CPU排序1
显示每个逻辑CPU的状况q
退出
- 举例:
-
结束一个进程
- $
kill 2812
- 强制结束进程加参数 -9 $
kill -9 2812
- 其他方式:pkill 进程名 $
pkill httpd
结束apache的这个进程 - 结束前台终端进程:
Ctrl(Command) + C
- $
查看硬盘空间
- $
df
- $
df -h
更人性化输出 - 留意输出的关键字段
Use%
使用比例,防止系统崩溃
- $
查看内存占用
- $
free -m
- 可以从输出中查看内存相关信息