一、定义
程序:硬盘上躺着。执行特定任务的一串代码
进程:加载到内存中运行。进程是程序的副本,进程是有生命周期
进程的控制:每开启一个进程会消耗相应的硬件资源,内存,CPU,磁盘io
内存不足?关闭没有用的进程,问开发
硬件资源不足?对进程进行清理
二、进程
PID:进程号,用来标记各个进程
UID、GID语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承
进程启动失败---当前用户权限问题
存在生命周期
都由其父进程创建
2.进程特征
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;硬件资源分配的最小单位
结构性:进程由程序、数据(需要调用的文件)和进程控制块(开发)三部分组成。
三、进程命令
1.查看系统资源的命令
CPU:top w vmstat
内存:top free vmstat
磁盘分区:lsblk
硬盘剩余:df
硬盘读写性能:iostat vmstat
网络宽带:iftop
2. ps:静态显示进程信息
1.进程状态
2.主要用途
查看进程有没有启动
查看进程的pid并使用kill命令杀掉
查看哪些进程占用的cpu高
查看哪些进程占用内存高
查看进程的状态
3. ps aux 查看系统中所有进程
a:显示一个终端的所有进程,除了会话引线
u:显示进程的归属用户及内存的使用情况
x:显示没有控制终端的进程
# 查看系统中所有进程
ps -le
选项: -l:长格式显示。显示更加详细的信息
-e:显示所有进程,和-a作用一致
ps -ef 和ps -aux使用
如果想跟踪cpu占用率和内存占用率, 用aux;如果想跟踪父进程和完整的启动命令,那么使用ef.
#查看指定进程pid(sshd)
ps -aux | grep sshd
ps -ef | grep 进程名/PID
3. top:动态显示进程信息
4. pgrep:查看指定的进程
5. pidof:查看进程的pid号
6. pstree:命令进程树
7. lsof:根据文件找到对应的进程信息
8. vmstat:监控系统资源
9. free:内存
10. iostat:可以提供更丰富的IO性能状态数据
11. iotop:监视磁盘I/O
12. mpstat:显示CPU相关统计
13. dstat:系统资源统计
14. webadin:根据文件找到对应的进程信息
四、进程管理
1.前台运行:影响当前终端的操作
后台操作:不影响当前终端的操作
2.inux 命令放入后台的方法有两种
1."命令 &",把命令放入后台执行
把命令放入后台的方法是在命令后面加入 `空格 &`。使用这种方法放入后台的命令,在后台处于执行状态。注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。
2. jobs 查看后台运行的命令列表
3.fg 调出后台任务
4.bg 继续任务
5.并行执行任务
6.结束进程
1.kill----kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的
2.killall
3.pkill
五、计划任务
1.at 一次性的计划任务
2. crontab 周期性的计划任务
六、面试题目
1.想知道当前系统lisi一共运行了多少个程序
pgrep -U lisi | wc -l
2.找到cpu利用率最高的进程
ps aux k -%cpu
ps aux k -%mem
3.cpu利用率高你怎么排查
top
ps aux
查找cpu利用率高的进程
4.如何确定一个程序是多线程还是单线程
grep -i threads /proc/进程PID/status
prtstat 进程PID号
5.如何过滤僵尸进程?如何结束僵尸进程?
(1)ps aux | grep Z
(2)重启最快
6.
7.可以对系统有哪些优化:
1.关闭不必要的开机自启动程序
2.禁止使用超级管理员
3.使用国内的yum源
4.内核调优
1.开启路由转发功能
2.tcp连接数
5.关闭核心防护 selinux