? ??程序放在硬盘上,程序时执行特定任务的一串代码
? ? 进程放在加载到内存中运行,进程是程序的副本,进程是有生命周期。
? ? 创建进程:
? ? ? Centos6的第一个进程为init,Centos7的第一个进程为systemd。
? 面试题:进程和线程如何确定一个程序是多线程还是单线程?
? ? 要查看该进程的详细状态
? ? 命令:
? ? ? cat proc/该程序的PID号文件夹/status
? ? ? grep i threads proc/该程序的PID号文件夹/status
? ? ? prstat 进程pid号
? 面试题:1. 如何过滤见识过hi进程?
? ? ps aux | grep -v grep | grep Z
? ? ? ? ? ? ? ? ? 2. 如何结束僵尸进程
? ? 重启reboot
? ? 内存泄漏:Memory Leak
? ? 内存溢出:Memory Overflow
? ? 内存不足:Out Of Memory
? ? 内存不足的原因:
? ? ? 1. 给应用分配内存太少,例如虚拟机本身使用的内存较少
? ? ? 2. 应用给的太多,没有释放完,就会造成内存泄露或者内存溢出
? ? 常用的解决方法:
? ? 进程更多的状态:
? ? ? 运行态:running
? ? ? 就绪态:ready
? ? ? 睡眠态:分为两种状态——1.interruptable(可中断)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.uninterruptable(不可中断)
? ? ? 停止态:stopped,暂停与内存,只有手动操作
? ? ? 僵死态:zombie,杀死父进程可以关闭子进程
? ? 进程结束后,父进程会回收子进程的硬件资源
? ? 进程类型:
??进程的管理主要是指进程的关闭与重启。比如,要重启 apache 服务,一般使用命令"service httpd restart"重启 apache的程序。systemctl httpd start。
??系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询。
代号 | 名称 | 说明 |
---|---|---|
1 | SIGHUP | 让进程立即关闭,读取文件后重启 |
2 | SIGINT | 终止前台程序,相当于CTRL+C |
3 | SIGQUIT | 退出 |
8 | SIGFRE | 发生致命的运算错误时才会发出 |
9 | SIGKILL | 用来强制终止程序运行 |
14 | SIGALRM | 时钟定时信号,用来计算实际时间和时钟时间 |
15 | SIGTERM | 无法正常终止程序运行,所以要尝试SIGKILL |
18 | SIGCONT | 让暂停的进程恢复执行 |
19 | SIGSTOP | 该信号可以暂停前台进程,但不能阻断。相当于CTRL+Z |
? ? 查看静态的进程统计信息
? ? ? ps aux——可以查看系统中所有的进程
? ? ? ps -le——可以查看系统中所有的进程,还可以该进程的父进程PID和进程优先级
? ? ? ps -l——只能查看当前Shell产生的进程?
常用选项 | 功能 |
---|---|
a | 显示当前终端下的所有进程信息,包括其他用户的进程 |
u | 使用以用户为主的格式输出进程信息 |
x | 显示当前用户在所有终端下的进程信息 |
-e | 显示系统内的所有进程信息 |
-l | 使用长(Long)格式显示进程信息 |
-f | 使用完整的(Full)格式显示进程信 |
k | --sort | 对属性排序,属性前加 - 表示倒序 |
o | 选项显示定制的信息 pid、cmd、%cpu、%mem |
? ??
? ? [root@localhost ~ ] # ps -ax——终端有关或无关的进程
? ? [root@localhost ~ ] # ps-aux——和用户有关的进程?
? ? ps aux
表头 | 含义 |
---|---|
USER | 哪个用户产生 |
PID | 进程的ID |
%CPU | 占用CPU资源的百分比,占用越高消耗越大 |
%MEM | 占用物理内存的百分比,占用越高小号远大 |
VSZ | 占用虚拟内存大小,单位为KB |
RSS | 占用实际物理内存大小,单位为KB |
TTY | 在哪个终端运行的 |
STAT | -D:不可唤醒状态 -R:该进程正在运行 -S:休眠状态可被唤醒 -T:停止状态 -W:内存呼唤状态 -X:挂掉的进程 -Z:僵尸进程。进程虽终止,但还是占用硬件资源 -<:高优先级 -N:低优先级 -L:被锁入内存 -s:包含子进程 -l:多线程 -+:位于后台 |
START | 进程的启动时间 |
TIME | 占用CPU运算时间 |
COMMAND | 产生此进程的命令 |
? ? ?ps -ef? ? ? ? 命令输出信息
表头 | 含义 |
---|---|
F | 进程标志,说明进程的权限 |
S | 进程的状态 |
UID | 此进程的用户ID |
PID | 进程的ID |
PPID | 父进程的ID |
C | 该进程的CPU使用率,单位为百分比 |
PRI | 进程优先级,数值越小优先级越高,系统不可被修改 |
NI | 进程优先级,数值越小优先级越高,系统可被修改 |
ADDR | 该进程在内存的哪个位置 |
SZ | 该进程占用多大内存 |
WCHAN | 该进程是否运行,'-'表示正在运行 |
TTY | 该进程由哪个终端产生 |
TIME | 此进程占用CPU的运算时间 |
CMD | 此进程的命令名 |
? ? prtstat 18295
选项 | 功能 |
---|---|
-d | 指定top命令每隔几秒更新。默认为3秒 |
-b | 使用批处理模式输出 |
-n | 指定top命令执行的次数 |
-p | 查看指定ID的进程 |
-s | top命令在安全模式下运行 |
-u | 只监听某个用户的进程 |
? ? top命令显示窗口,还有其他按键可以交互
选项 | 功能 |
---|---|
?或h | 显示交互模式的帮助 |
c | 按照CPU的使用率排序 |
M | 按照内存的使用率排序 |
N | 按照PID排序 |
T | 按照CPU累计运算时间排序 |
k | 按照PID给于某个进程一个信号 |
r | 按照PID给某个进程重设优先级(Nice)值 |
q | 退出top命令 |
? ? 增强版的top
? ? 查看指定的进程
选项 | 功能 |
---|---|
-U | 指定用户 |
-l | 显示进程号 |
-a | 显示完整格式的进程名 |
-p | pid显示指定进程的子进程 |
? ? 以树形结构列出进程信息
选项 | 功能 |
---|---|
-a | 显示启动每个进程对应的完整指令,包括路径、参数等 |
-p | 显示PID |
-T | 不显示线程thread,显示默认线程 |
-u | 显示用户切换 |
-H | pid高亮 |
? ??列举系统中已经被打开的文件。
? ? 格式:lsof [选项]
选项 | 功能 |
---|---|
-c(字符串) | 只列出字符串开头打开的文件 |
-d(目录名) | 列出某个目录所有被进程调用的文件 |
-u(用户名) | 只列出某个用户的进程打开的文件 |
-p(pid) | 列出某个PID进程打开的文件 |
??
? ? cpu ????????????????top w
? ? 内存 ????????????????top free
? ? 硬盘分区 ????????fdisk
? ? 硬盘剩余 ????????df
? ? 硬盘读写性能 iostat
? ? 网络带宽 ????????iftop
? ??yum ?install ? dstat -y
? ? 前台运行:影响当前终端的操作
? ? 后台运行:不影响当前终端的操作
? ??让作业运行于后台。
? ? 注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的
? ? ??kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
? ? ? kill的原理:kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
? ? ? 格式:kill [信号] PID?
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
? ? 格式:killall [选项] [信号] 进程名
? ? 交互杀死:killall -i sshd
? ? 格式:pkill [信号] 进程名
? ??pkill [-t 终端号] 进程名
? ? ? -U:根据进程所属的用户名终止相应进程
? ? ? -t:根据进程所在的终端终止相应进程
? ? at 时间
? ? ctrl+d 提交
? ? atq 可以查看任务列表
? ? atrm 任务序列号 可以删除任务
? ? /etc/at.allow 默认所有用户不可以使用at只有在at.allow
? ? 文件中的用户才可以用at命令
? ? /etc/at.deny 默认所有用户可以使用at,只有在里面不可以写