前言
面试说自己平时在 Linux 系统进行开发,了解一些 Linux 常用命令,然后就开始问,但是不会问常用的一些简单命令,都是结合应用场景来进行提问。而且基本上是和进程管理结合的。抽时间进行一个全面的总结
应用场景
主要就是如果你使用 Linux 操作系统,那么服务器如果是个很忙碌的系统,你肯定要知道如何定位最耗资源的那个进程,然后能够将其杀死;此外,如果某个程序产生了一个有问题的进程在内存中,你又该如何找出并将其删除;如果有五六项工作在系统中运行,但其中有一项工作才是最重要的,你怎么定位并使其优先执行?
- 查看所有运行中的进程
- 查看进程消耗资源
- 定位个别进程并且对其执行指定操作
- 改变进程优先级
- 杀死指定进程
- 限制进程可用的系统资源等
命令介绍
1. ps
指将某个时间点的进程运行情况选取下来
ps -ef |grep ^ 列出需要进程
ps -aux 显示进程信息,包括无终端的(x)和针对用户(u)的进程
-e 显示所有进程。
-f 全格式。
-a 显示终端上的所有进程,包括其他用户的进程。
-r 只显示正在运行的进程。
-u 以用户为主的格式来显示程序状况。
-h 不显示标题。
-l 长格式。
-w 宽输出。
复制代码
- ps -l 仅查看自己的 bash 相关进程
- ps aux 查看系统所有进程
实例:找出与 cron 与 syslog 这两个服务相关的 PID 号码
leader@leader:~$ ps aux | egrep '(cron|syslog)'
复制代码
2. pstree
- 用于寻找进程之间的相关性
- 查询 PID 与所属用户,加上 -p 和 -u 两个参数即可
范例一: 列出目前系统上所有进程树的相关性
leader@leader:/tmp$ pstree -A
复制代码
范例二:同时显示 PID 和 users
leader@leader:/tmp$ pstree -Aup
复制代码
3. top
动态查看进程的变化
范例一:每两秒更新依次 top,查看整体信息
leader@leader:~$ top -d 2
复制代码
范例二:将 top 的信息进行 2 次,然后将结果写入到 /tmp/top.txt
leader@leader:~$ top -b -n 2 > /tmp/top.txt
复制代码
4. htop
htop 与 top 类似,但是 htop 是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的 CPU 和内存使用量、swap 使用量。 使用上下光标键选择进程,F7 和 F8 改变优先级,F9 杀死进程
5. nice
用于设置和改变进程的优先级。(提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。) 默认情况下,进程以 0 的优先级启动。进程优先级可以通过top命令显示的 NI(nice value)列查看。
进程优先级值的范围从-20到19。值越低,优先级越高。 (sudo)nice <优先值> <进程名> 通过给定的优先值启动一个程序
6. renice
renice命令可以改变正在运行的进程优先值,用户只能改变属于他们自己的进程的优先值。
renice -n 4 -p 3806 改变指定进程的优先值
//初始优先值为0的3806号进程优先值已经变成了 4 .
sudo renice -3 -u/-g mint 通过指定用户和组来改变进程优先值
//用户为 mint 的所有进程优先值变为 -3。
复制代码
7. kill
强制杀死进程,使用-9参数。
如果不知道进程PID(进程 ID 号)或者打算用名字杀死进程时候,使用 killall。
kill <pid>
kill -9 <pid>
killall -9    杀死所有拥有同样名字的进程
如果你使用kill,你需要知道进程ID号。pkill是类似的命令,但使用模式匹配,如进程名,进程拥有者等。
复制代码
8.fg,bg
使用‘bg’命令可以将任务放在后台执行,而用‘fg’可以调到前台来使用。
我们可以通过‘&’在后台启动一个程序:
find .-name *iso >/tmp/res.txt &
正在运行的程序,可以通过“CTRL+Z”和“bg”命令组合放到后台运行。
可以使用‘jobs’命令列出所有后台进程。
使用‘fg’命令可以将后台程序调到前台执行。
fg %进程id
复制代码