linux进程管理

640 查看

linux进程管理

毫无疑问进程管理是很重要的,当我们的操作系统很忙碌,运行的进程很多,但是可能有好几个进程是没有用的,那么我们是不是要找出这样的进程然后结束它。如果有很多个没用的进程一直在内存中,导致内存使用量过大,后面的进程可能就会没有办法执行。
例如,当我们要定时执行某一个脚本任务,但是,如果脚本执行完进程并没有退出,而你的执行频率又很快,几分钟或者几秒钟,那可就悲剧了,走过的坑。。。

进程的查看

如果想要管理进程,首先我们肯定要知道有哪些进程正在运行,以及进程所消耗的资源。这里我们可以通过两种方式来进行查询,静态的or动态的。

静态的PS

ps命令用来查询当前时刻的进程运行情况,其中几条比较常用的命令如下
-A 显示所有进程
-a 与terminal无关的所有进程
-u 有效用户相关的进程
-l 详细的将PID信息列出来

ps -l

这个命令仅将列出自己的bash程序

其中

  1. F表示进程的标志:说明进程的权限,4代表root,1表示可复制,但是无法执行。

  2. S表示进程的状态:R(running)运行中,S(sleep)睡眠状态但是可以被唤醒,Z(zombie)僵尸状态,进程已经终止但是无法从内存中删除。

  3. C代表CPU使用率。

  4. PRI/NI表示此进程被CPU执行的优先级。

  5. SZ代表此进程用掉多少内存。

ps aux

列出目前的所有进程

其中

  1. USER 代表该进程属于哪个账户的。

  2. %MAN 该进程所占用的物理内存的百分比。

  3. VSZ 该进程使用掉的虚拟内存量。

  4. RSS 该进程所占用的固定内存。

动态的top

相对于ps选取某个时间点的进程状态,top可以持续的检测进程的运行情况。

top后面常跟的几个参数

  1. -d后面可以跟描述,表示多长时间更新一次时间。

  2. -n表示需要进行几次top输出。

  3. -p查看某个PID的运行情况。

top在执行过程中可以执行一些命令。

  1. P 以CPU的使用资源多少排序显示。

  2. N 以PID来排序。

  3. M 以内存的使用排序。

  4. k 给予某个PID一个信号。

  5. r 重置某个PID的nice值。

  6. q 离开top。

进程的管理

我们不仅仅要查看进程,而且要对进程进行管理,那么进程之间是如何相互管理的呢,细想下来,只要涉及到管理,肯定要发出指令,对程序的管理也不例外。通过赋予某个进程一个信号告诉进程你想要做的事就可以啦。我们可以通过kill -l查看所有的指令及其代号。

这里我们列出主要的几个:

  1. sighup启动被终止的命令。(1)

  2. sigint终止一个进程, 类似于键盘输入ctrl + c。(2)

  3. sigkill强制终端一个进程,如果该进程运行到一半,也会停止。(9)

  4. sigterm正常结束一个进程。(15)

  5. sigstop相当于键盘输入ctrl + z来暂停一个进程的进行。(17)
    下面补充一下ctrl[C, Z]的区别。

ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。

而命令的执行是需要有一个通知者和接受对象的
kill -signal PID kill命令会将signal这个指令发送给该PID。

系统资源查看

1.free查看内存的使用情况。
2.uname查看系统于内核的相关信息。

  1. -a列出系统相关信息,包括以下信息都列出来。

  2. -s系统内核名称。

  3. -r内核的版本。

  4. -m系统硬件名称。

  5. -i硬件平台。

3.uptime:查看系统启动时间与工作负载。