目录
2.1静态查看进程——ps aux(可以查看系统中所有进程)
2.5以树形结构列出进程信息,并显示进程号——pstree -p
1.进程、线程
1.1概念
进程是程序的副本,全生命周期,是操作系统分配资源的最小单位
线程是程序执行上的最小单位
1.2联系
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
1.3面试题:如何确定一个程序是多线程还是单线程
cat /proc/pid文件/status
grep -i threads /proc/进程的pid/status
prtstat #进程的pid号
2.查看进程
2.1静态查看进程——ps aux(可以查看系统中所有进程)
a | 显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息 |
u | 使用以用户为主的格式输出进程信息 |
x | 显示当前用户在所用终端下的进程信息 |
其他补充:
-le | 可以查看系统中所有进程,而且还能看到进程的父进程的pid和进程优先级 |
-l | 只能看到当前shell产生的进程 |
-e | 显示系统内的所有进程信息 |
-f | 使用完整的(full)格式显示进程信息 |
k|--sort 属性 | 对属性排序,属性前加-表示倒序 |
o 属性... | 选项显示定制的信息 |
ps aux进程信息解释
名称 | 解释 |
USER | 该进程是由哪个用户产生的 |
PID | 进程的pid号 |
%CPU | 该进程占cpu资源的百分比,占用的百分比越高,进程越耗费资源 |
%MEM | 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费进程 |
VSZ | 该进程占用虚拟内存的大小,单位为kb |
RSS | 该进程占用市集物理内存的大小,单位为kb |
TTY | 该进程是在哪个终端运行的 |
STAT | 进程状态 |
START | 该进程的启动时间 |
TIME | 该进程占用CPU的运算时间,注意不是系统时间 |
COMMAND | 产生此进程的命令名 |
补充:STAT所处状态的种类
-D | 不可被唤醒的睡眠状态,通常用于I/O情况 |
-R | 该进程正在运行 |
-S | 该进程处于睡眠状态,可被唤醒 |
-T | 停止状态,可能是在后台暂停或进程处于除错状态 |
-Z | 僵尸进程。进程已经中止,但是还是占用硬件资源 |
僵尸进程:父进程退出,子进程没有退出,那么这些子进程就没有父进程来管理,就变成僵尸进程
2.2静态查看进程——ps -elf
表头 | 解释 |
F | 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限 |
S | 进程状态。具体的状态和“psaux”命令中的 STAT 状态一致 |
UID | 运行此进程的用户ID |
PID | 进程的ID |
PPID | 父进程的ID |
C | 该进程的 CPU 使用率,单位是百分比 |
PRI | 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改 |
NI | 进程的优先级,数值越小,该进程越早被执行;可以人为修改 |
ADDR | 该进程在内存的哪个位置 |
SZ | 该进程占用多大内存 |
WCHAN | 该进程是否运行。"-"代表正在运行 |
TTY | 该进程由哪个终端产生 |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间 |
CMD | 产生此进程的命令名 |
2.3动态查看进程——top
-d秒数 | 指定top命令每隔几秒更新。默认是3s |
-b | 使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中 |
-n次数 | 指定 top 命令执行的次数。一般和"-"选项合用 |
-p进程PID | 仅查看指定ID进程 |
-s | 使 top 命令在安全模式中运行,避免在交互模式中出现错误 |
-u用户名 | 只监听某个用户的进程 |
注意:看内存 cpu 都可以用top,q退出
2.4查看指定进程——pgrep
-U | 指定用户 |
-l | 显示进程名 |
-a | 显示完整格式的进程名 |
-P pid | 显示指定进程的子进程 |
2.5以树形结构列出进程信息,并显示进程号——pstree -p
3.五大性能
内存:free top
cpu:top ps aux
磁盘:
大写:lsblk 剩余df
读写:iostat dd vmstat
网络:dmstat iftop
4.进程管理
前台启动:通过终端启动,且启动后一直占据终端
后台启动:可通过终端启动,但启动后即转入后台运行(释放终端)
4.1手动控制进程
4.1.1将前台任务放入后台运行——&
4.1.2查看后台运行的命令——jobs
4.1.3把后台命令调回前台——fg序号
4.1.4再调回后台——crtl+z调入后台并停止
4.2结束进程
kill<PID>
killall<进程名>
5.计划任务
5.1一次性的计划任务
at:任务设定
atq:查看预设的任务
atrm <序号>:删除设定的任务
5.2周期循环的任务列表
按照预先设置的时间周期(分 时 日 月 周)重复执行用户指定的命令操作(绝对路径的命令或者脚本)。
属于周期性计划任务。
主要设置文件。
crontab -e [-u 用户名] //编辑计划任务
crontab -l [-u 用户名] //显示计划任务
crontab -r [-u 用户名] //删除计划任务
5.2.1crontab -e
#进入 crontab 编辑界面。会打开Vim编辑你的任务
编辑任务的格式:* * * * * 执行的任务 绝对路径
项目 | 含义 | 范围 |
第一个* | 分 | 0-59 |
第二个* | 小时 | 0-23 |
第三个* | 日 | 1-31 |
第四个* | 月 | 1-12 |
第五个* | 周 | 0-7(0和7代表星期天) |
特殊符号:
特殊符号 | 含义 |
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思 |
,(逗号) | 代表不连续的时间 |
-(中杠) | 代表连续的时间范围 |
/(正斜线) | 代表每隔多久执行一次 |
举例:
0 8,14,20***:每天的8点0分、14点0分、20点0分都执行一次命令
0 6 **2-7:周二到周日的凌晨6点0分执行命令
0 13-19 1,7,19,23 * *:每个月 1号 ,7 号 ,19号,23号13点到19点执行任务
15-45/5 10,21 */10 3 *:每年3月每隔10天的10点和21点的15-45分内每隔5分钟执行一次