TranslateProject/published/20150326 A Peep into Process Management Commands in Linux.md

192 lines
8.1 KiB
Markdown
Raw Normal View History

12个进程管理命令介绍
2015-03-26 16:44:03 +08:00
================================================================================
执行中的程序在称作进程。当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源、内存、安全属性和与之相关的状态。可以有多个进程关联到同一个程序,并同时执行不会互相干扰。操作系统会有效地管理和追踪所有运行着的进程。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
为了管理这些进程,用户应该能够:
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
- 查看所有运行中的进程
- 查看进程消耗资源
- 定位个别进程并且对其执行指定操作
2015-04-07 17:03:03 +08:00
- 改变进程的优先级
- 杀死指定进程
- 限制进程可用的系统资源等
2015-03-26 16:44:03 +08:00
Linux提供了许多命令来让用户来高效掌控上述的操作。接下来一个一个的来讲解下。
2015-03-26 16:44:03 +08:00
### 1. ps ###
'ps'是Linux 中最基础的浏览系统中的进程的命令。能列出系统中运行的进程包括进程号、命令、CPU使用量、内存使用量等。下述选项可以得到更多有用的消息。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
ps -a - 列出所有运行中/激活进程
2015-03-26 16:44:03 +08:00
![Output of "ps -a" command](http://blog.linoxide.com/wp-content/uploads/2015/02/ps-a2.png)
2015-04-07 17:03:03 +08:00
ps -ef |grep - 列出需要进程
ps -aux - 显示进程信息包括无终端的x和针对用户u的进程如USER, PID, %CPU, %MEM等
2015-03-26 16:44:03 +08:00
### 2. pstree ###
linux中每一个进程都是由其父进程创建的。此命令以可视化方式显示进程通过显示进程的树状图来展示进程间关系。如果指定了pid了那么树的根是该pid不然将会是initpid 1
2015-03-26 16:44:03 +08:00
![pstree](http://blog.linoxide.com/wp-content/uploads/2015/02/pstree.png)
### 3. top ###
top是一个更加有用的命令可以监视系统中不同的进程所使用的资源。它提供实时的系统状态信息。显示进程的数据包括 PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。
2015-03-26 16:44:03 +08:00
![top](http://blog.linoxide.com/wp-content/uploads/2015/02/top.png)
### 4. htop ###
htop与top很类似但是htop是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程F7和F8改变优先级F9杀死进程。Htop不是系统默认安装的所以需要额外安装。
2015-03-26 16:44:03 +08:00
![htop output](http://blog.linoxide.com/wp-content/uploads/2015/03/htop1.png)
### 5. nice ###
2015-04-07 17:03:03 +08:00
通过nice命令的帮助用户可以设置和改变进程的优先级。提高一个进程的优先级内核会分配更多CPU时间片给这个进程。默认情况下进程以0的优先级启动。进程优先级可以通过top命令显示的NInice value列查看。
2015-03-26 16:44:03 +08:00
进程优先级值的范围从-20到19。值越低优先级越高。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
nice <优先值> <进程名> - 通过给定的优先值启动一个程序
2015-03-26 16:44:03 +08:00
![nice command](http://blog.linoxide.com/wp-content/uploads/2015/02/nice-cmd.png)
![changed nice value of 'top'](http://blog.linoxide.com/wp-content/uploads/2015/02/top-nice.png)
上述命令例子中可以看到top命令获得了-3的优先值。
2015-03-26 16:44:03 +08:00
### 6. renice ###
renice命令类似nice命令。使用这个命令可以改变正在运行的进程优先值。注意用户只能改变属于他们自己的进程的优先值。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
renice -n -p - 改变指定进程的优先值
2015-03-26 16:44:03 +08:00
![renice command](http://blog.linoxide.com/wp-content/uploads/2015/02/renice2.png)
初始优先值为0的3806号进程优先值已经变成了4.
2015-04-07 17:03:03 +08:00
renice -u -g - 通过指定用户和组来改变进程优先值
2015-03-26 16:44:03 +08:00
![output of renice for a user group](http://blog.linoxide.com/wp-content/uploads/2015/02/renice1.png)
2015-04-07 17:03:03 +08:00
上述例子中用户为mint的所有进程优先值变为-3
2015-03-26 16:44:03 +08:00
### 7. kill ###
这个命令用于发送信号来结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用-9参数来执行。注意使用强制杀死的时候一定要小心因为进程没有时机清理现场也许写入文件没有完成。如果我们不知道进程PID或者打算用名字杀死进程时候killall就能派上用场。
2015-03-26 16:44:03 +08:00
kill <pid>
kill -9 <pid>
2015-04-07 17:03:03 +08:00
killall -9 - 杀死所有拥有同样名字的进程
2015-03-26 16:44:03 +08:00
如果你使用kill你需要知道进程ID号。pkill是类似的命令但使用模式匹配如进程名进程拥有者等。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
pkill <进程名>
2015-03-26 16:44:03 +08:00
![kill initiated](http://blog.linoxide.com/wp-content/uploads/2015/02/kill-initiated.png)
![kill](http://blog.linoxide.com/wp-content/uploads/2015/02/kill.png)
### 8. ulimit ###
该命令用于控制系统资源在shell和进程上的分配量。对于系统管理员是最有用的可以管理重度使用和存在性能问题的系统。限制资源大小可以确保重要进程持续运行其他进程不会占用过多资源。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
ulimit -a - 显示当前用户关联的资源限制
2015-03-26 16:44:03 +08:00
![ulimit -a](http://blog.linoxide.com/wp-content/uploads/2015/02/ulimit-a.png)
-f - 最大文件尺寸大小
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
-v - 最大虚拟内存大小KB
2015-03-26 16:44:03 +08:00
-n - 增加最大文件描述符数量
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
-H : 改变和报告硬限制
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
-S : 改变和报告软限制
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
浏览ulimit man页面获取更多选项。
2015-03-26 16:44:03 +08:00
### 9. w ###
w 提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息如当前时间、系统运行时长、登录用户总数、过去的1515分钟内的负载均衡数。
2015-03-26 16:44:03 +08:00
基于这些用户信息,用户在终止不属于他们的进程时要小心。
2015-03-26 16:44:03 +08:00
!['w' command](http://blog.linoxide.com/wp-content/uploads/2015/02/w.png)
**who**是类似命令,提供当前登录用户列表、系统启动时间、运行级别等。
2015-03-26 16:44:03 +08:00
!['who' command](http://blog.linoxide.com/wp-content/uploads/2015/02/who.png)
2015-04-07 17:03:03 +08:00
**whoami** 命令输出当前用户ID
2015-03-26 16:44:03 +08:00
!['whoami' command](http://blog.linoxide.com/wp-content/uploads/2015/02/whoami.png)
### 10. pgrep ###
pgrep的意思是"进程号全局正则匹配输出"。该命令扫描当前运行进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用。
2015-03-26 16:44:03 +08:00
pgrep -u mint sh
2015-04-07 17:03:03 +08:00
这个命令将会显示用户为mint和进程名为sh的进程ID。
2015-03-26 16:44:03 +08:00
![output of pgrep](http://blog.linoxide.com/wp-content/uploads/2015/03/pgrep.png)
### 11. fg , bg ###
有时命令需要很长的时间才能执行完成。对于这种情况我们使用bg命令可以将任务放在后台执行而用fg可以调到前台来使用。
2015-03-26 16:44:03 +08:00
我们可以通过‘&’在后台启动一个程序:
2015-03-26 16:44:03 +08:00
find . -name *iso > /tmp/res.txt &
2015-04-07 17:03:03 +08:00
一个正在运行的程序也可以通过“CTRL+Z”和“bg”命令组合放到后台运行。
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
find . -name *iso > /tmp/res.txt & - 启动一个程序
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
ctrl+z - 挂起当前执行程序
2015-03-26 16:44:03 +08:00
bg - 将程序放到后台运行
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
我们可以使用jobs命令列出所有后台进程。
2015-03-26 16:44:03 +08:00
jobs
2015-04-07 17:03:03 +08:00
使用fg命令可以将后台程序调到前台执行。
2015-03-26 16:44:03 +08:00
fg %进程id
2015-03-26 16:44:03 +08:00
![output of fg, bg and jobscommands](http://blog.linoxide.com/wp-content/uploads/2015/03/fg-bg-jobs.png)
### 12. ipcs ###
2015-04-07 17:03:03 +08:00
ipcs命令报告进程间通信设施状态。共享内存信号量和消息队列
2015-03-26 16:44:03 +08:00
2015-04-07 17:03:03 +08:00
用-p参数联合-m、-s或-q使用可以获得相关的进程间通信的进程ID。
2015-03-26 16:44:03 +08:00
ipcs -p -m
下面屏幕截图列出了最近访问了共享内存段的进程的创建者的ID和进程ID。
2015-03-26 16:44:03 +08:00
![ipcs command](http://blog.linoxide.com/wp-content/uploads/2015/03/ipcs.png)
2015-04-07 17:03:03 +08:00
### 总结 ###
2015-03-26 16:44:03 +08:00
总之 ,这些命令可以帮助管理员修复问题和改善性能。同样作为一名普通用户也需要解决进程出现的问题。所以,熟悉如此繁多的命令,从能有效管理进程是行之有效。
2015-03-26 16:44:03 +08:00
--------------------------------------------------------------------------------
via: http://linoxide.com/linux-command/process-management-commands-linux/
作者:[B N Poornima][a]
2015-04-07 17:03:03 +08:00
译者:[VicYu/Vic020](http://vicyu.net)
校对:[wxy](https://github.com/wxy)
2015-03-26 16:44:03 +08:00
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://linoxide.com/author/bnpoornima/