linux进程管理
毫无疑问进程管理是很重要的,当我们的操作系统很忙碌,运行的进程很多,但是可能有好几个进程是没有用的,那么我们是不是要找出这样的进程然后结束它。如果有很多个没用的进程一直在内存中,导致内存使用量过大,后面的进程可能就会没有办法执行。
例如,当我们要定时执行某一个脚本任务,但是,如果脚本执行完进程并没有退出,而你的执行频率又很快,几分钟或者几秒钟,那可就悲剧了,走过的坑。。。
ps命令
ps命令是process status的缩写,它会列出内存中正在运行的程序的运行情况的快照。ps命令可以跟很多参数来过滤我们需要查看的某个或者某些进程。
1.列出内存中的所有程序
ps -aux
2.列出指定用户的进程
ps -u root
3.列出进程信息的指定字段
ps -o pid
4.排序
按内存占用量排序
ps auxw --sort=rss
5.取前十条
ps auxw --sort=rss|head -10
过滤
ps -aux|grep node
返回的参数含义
%MEM: 占用的物理内存百分比
VSZ: 占用的虚拟内存量
RSS: 占用的实际内存量
top命令
相对于ps选取某个时间点的进程状态,top可以持续的检测进程的运行情况。
top后面常跟的几个参数
-d后面可以跟描述,表示多长时间更新一次时间。
-n表示需要进行几次top输出。
-p查看某个PID的运行情况。
top在执行过程中可以执行一些命令。
P 以CPU的使用资源多少排序显示。
N 以PID来排序。
M 以内存的使用排序。
k 给予某个PID一个信号。
r 重置某个PID的nice值。
q 离开top。
进程的管理
我们不仅仅要查看进程,而且要对进程进行管理,那么进程之间是如何相互管理的呢,细想下来,只要涉及到管理,肯定要发出指令,对程序的管理也不例外。通过赋予某个进程一个信号告诉进程你想要做的事就可以啦。我们可以通过kill -l查看所有的指令及其代号。
图片描述
这里我们列出主要的几个:
sighup启动被终止的命令。(1)
sigint终止一个进程, 类似于键盘输入ctrl + c。(2)
sigkill强制终端一个进程,如果该进程运行到一半,也会停止。(9)
sigterm正常结束一个进程。(15)
sigstop相当于键盘输入ctrl + z来暂停一个进程的进行。(17)
下面补充一下ctrl[C, Z]的区别。
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
而命令的执行是需要有一个通知者和接受对象的
kill -signal PID kill命令会将signal这个指令发送给该PID。
free命令
free
uname命令系统资源查看
参数
-a列出系统相关信息,包括以下信息都列出来。
-s系统内核名称。
-r内核的版本。
-m系统硬件名称。
-i硬件平台。