如何做网站服务器映射网站开发人员应具备什么素质
如何做网站服务器映射,网站开发人员应具备什么素质,网页制作用什么工具,公司网站建设应包含哪几个板块17.1 进程介绍
在Windows下打开任务管理器就可以查看到系统所有进程#xff0c;如图17-1所示。 图17-1 Windows下的任务管理器 这里列出了系统中所有的进程。不过也可以使用命令行工具来查看进程。每个进程都会有一个process ID#xff0c;简称为pid。
17.2 查看进程
也可…
17.1 进程介绍
在Windows下打开任务管理器就可以查看到系统所有进程如图17-1所示。 图17-1 Windows下的任务管理器 这里列出了系统中所有的进程。不过也可以使用命令行工具来查看进程。每个进程都会有一个process ID简称为pid。
17.2 查看进程
也可以使用ps命令来查看系统中的进程当执行不加任何选项的ps时显示的是当前终端的进程命令如下。
[rootserver ~]# psPID TTY TIME CMD11667 pts/1 00:00:00 bash51848 pts/1 00:00:00 ps
[rootserver ~]#使用ps查看当前终端进程如图17-2所示。 图17-2 查看当前终端的进程 有很多进程不属于任何终端这些进程都是后台进程。如上图在终端1上运行了A,B两个进程当在终端1上执行ps命令时只能看到终端1上的三个进程包括ps本身看不到其他终端及后台进程。如果想查看系统所有进程就需要加上选项了。
基本上不同版本的UNIX系统上都有自己的ps命令但是这些命令却没有一个统一的选项约定Linux中的ps命令尽可能地包括所有的这些选项以适应不同UNIX背景的人群。所以Linux中ps包括了UNIX风格和Linux风格的选项最常见的用法包括ps aux和ps -ef。
ps aux 可以列出系统中所有的进程如图17-3所示。 图17-3 通过ps aux查看进程的结果 因为ps aux显示内容太多这里通过head只截取前11行这里每列的意思如下。
1USER进程所属用户。
2PID进程ID。
3%CPU进程占用CPU百分比。
4%MEM进程占用内存百分比。
5VSZ虚拟内存占用大小 单位kb。
6RSS实际内存占用大小 单位kb。
7TTY终端类型。
8STAT进程状态。
9START进程启动时刻。
10TIME进程运行时长。
11COMMAND启动进程的命令。TTY一列如果是“”则说明是后台进程。 练习 下面练习查看进程信息先在系统中打开一个Firefox浏览器如图17-4所示。 图17-4 打开一个firefox浏览器 如果要查看某进程的pid可以结合grep一起来使用例如查看Firefox的pid命令如下。
[rootserver ~]# ps aux | grep firefox
lduan 53797 ..../usr/lib64/firefox/firefox
lduan 53878 ....childID 1 ... /usr/lib64/firefox/browser 53797 tab
lduan 53963 ...-childID 4 ... /usr/lib64/firefox/browser 53797 tab
lduan 53996 ...-childID 5 ... /usr/lib64/firefox/browser 53797 tab
lduan 54250 ...-childID 7 ... /usr/lib64/firefox/browser 53797 tab
root 55877 0.0 0.0 12348 1148 pts/1 S 18:30 0:00 grep --colorauto firefox
[rootserver ~]# 在执行此命令时grep命令中也含有firefox关键字所以也找出来了明显grep那行并不是我们想要的所以一般可以再加上grep -v grep过滤命令如下。
[rootserver ~]# ps aux | grep -v grep | grep firefox
lduan 53797 ..../usr/lib64/firefox/firefox
lduan 53878 ....childID 1 ... /usr/lib64/firefox/browser 53797 tab
lduan 53963 ...-childID 4 ... /usr/lib64/firefox/browser 53797 tab
lduan 53996 ...-childID 5 ... /usr/lib64/firefox/browser 53797 tab
lduan 54250 ...-childID 7 ... /usr/lib64/firefox/browser 53797 tab
[rootserver ~]# 这里可以看到firefox的主进程的PID是53797其他几个是对应的子进程。 找出某进程的pid除使用如上的方法外还可以使用pgrep命令用法如下。 pgrep 名称 例如现在要查看firefox的PID命令如下。
[rootserver ~]# pgrep firefox
53797
[rootserver ~]#这里只查看到了firefox主进程的PID如果要看到每个子进程的PID需要加-f选项命令如下。
[rootserver ~]# pgrep -f firefox
53797
53878
53963
53996
54250
[rootserver ~]#除了pgrep也可以使用pidof命令如下。
[rootserver ~]# pidof firefox
54250 53996 53963 53878 53797
[rootserver ~]#pidof和pgrep的区别在于pidof必须要跟上完整的名称pgrep则不需要命令如下。
[rootserver ~]# pgrep -f firefo
53797
53878
53963
53996
54250
[rootserver ~]# pidof firefo
[rootserver ~]# pgrep会把进程COMMAND中含有firefo的进程的PID全部找出来pidof找的是COMMAND是firefo的。
对于ps来说查看的是执行命令那一瞬间的情况如果想动态的查看进程则可以使用top命令。默认情况下top每隔3s更新一次可以用-d来指定更新间隔例如1秒更新一次可以用top -d 1 指定如图17-5所示。 图17-5 使用top -d 1查看进程的结果 按q退出。
17.3 发送信号
有时可能要关闭进程单击右上角的“关闭”按钮就可以关闭正在运行的程序不过有时这种方式是关闭不了如图17-6所示。 图17-6 Windows下关不掉程序的情况
此时单击“关闭程序”选项强制关闭此程序。
关闭一个正在运行的程序时本质上是系统给此程序对应的进程发送一个关闭信号。不同的关闭方式信号是不一样的查看系统有多少信号可以用kill -l进行查看如图17-7所示。 图17-7 所有能用的信号
也可以用kill命令手动给进程发送信号这里介绍3个常用的信号15号信号、9号信号和2号信号。 15号信号当单击右上角“关闭”按钮去关闭一个程序时系统发送的就是15号信号这也是默认信号在命令行用kill命令时如果不指定信号则是15号。 在后台运行sleep命令同时也显示了进程的pid如下所示。
[rootserver ~]# sleep 1000
[1] 56227
[rootserver ~]#这里可以看到sleep进程的PID是56227下面给这个进程发送一个9号信号命令如下。
[rootserver ~]# kill 56227
[rootserver ~]#
[1] 已终止 sleep 1000
[rootserver ~]#2号信号当我们按【Ctrl C】组合键时本质上就是发送了一个2号信号。运行sleep命令后面没加 就是放在前台运行命令如下。
[rootserver ~]# sleep 1000
^C
[rootserver ~]#按【CtrlC】组合键会终止正在运行的程序即对对应的进程发送了2号信号。 再次运行sleep命令并把它放在后台运行命令如下。
[rootserver ~]# sleep 1000
[1] 56230
[rootserver ~]#这里sleep进程的PID是56230给这个进程发送一个2号信号命令如下。
[rootserver ~]# kill -2 56230
[rootserver ~]#
[1] 中断 sleep 1000
[rootserver ~]#当一个程序关闭不掉时需要强制关闭此时可以对进程发送9号信号命令如下。
[rootserver ~]# sleep 1000
[1] 56241
[rootserver ~]# kill -9 56241
[rootserver ~]#
[1] 已杀死 sleep 1000
[rootserver ~]#这样就强制关闭了。 使用kill命令后面需要跟上进程的PID这里还需要查找出进程的PID如果想直接杀死某个运行的程序则可以使用killall命令。先在后台运行几个程序。
[rootserver ~]# sleep 1000
[1] 56258
[rootserver ~]# sleep 1000
[2] 56259
[rootserver ~]# sleep 1000
[3] 56260
[rootserver ~]# sleep 1000
[4] 56261
[rootserver ~]#这里要杀死所有sleep所对应的进程命令如下。
[rootserver ~]# killall -9 sleep
[1] 已杀死 sleep 1000
[2] 已杀死 sleep 1000
[3]- 已杀死 sleep 1000
[4] 已杀死 sleep 1000
[rootserver ~]# 17.4 进程优先级
系统中所有的进程都要消耗CPU的资源CPU会为每个进程分配一个时间片轮到某进程了则CPU会处理这个进程的请求时间片到期则会把进程暂停放回队列等待下一轮的时间片。在同一颗CPU上如果运行了太多的程序就会导致CPU的资源不够可以调整进程的优先级让指定进程获取更多的资源更优先地去执行。
好比在驾校学车时教练车就是CPU资源每个学员就是一个个等待的进程。每个学员上车练习10分时间片10分钟过了之后就要下车让下一个学员上车练习再次练习需要等待下一轮。如果学员太多等待的时间就会很久如果想多练习一些可以让教练设置下优先级别人练习一次10分钟我练习一次2小时即可。
进程的优先级有两个值决定优先顺序priority和优先级niceness其中优先顺序由内核对它进行动态的更改我们不需要做太多干预对用户而言只需要通过nice来修改即可。nice值的取值范围在-20~19nice的值越小进程就越优先执行。
多个进程如果运行在不同的CPU上是互不干扰的不会发生抢资源的情况进程只有运行在同一颗CPU上才会发生资源的抢占。所以做实验时要确保多个进程是运行在同一颗CPU上的首先查看一下CPU的情况命令如下。
[rootserver ~]# lscpu
架构 x86_64
CPU 运行模式 32-bit, 64-bit
字节序 Little Endian
CPU: 2
在线 CPU 列表 0,1
每个核的线程数 1
...
[rootserver ~]# 可以看到现在有两颗CPU一颗CPU两个核认为是2颗CPU编号分别是0和1现在关闭1号CPU命令如下。
[rootserver ~]# echo 0 /sys/devices/system/cpu/cpu1/online
[rootserver ~]# lscpu
架构 x86_64
CPU 运行模式 32-bit, 64-bit
字节序 Little Endian
CPU: 2
在线 CPU 列表 0
离线 CPU 列表 1
每个核的线程数 1...输出...
[rootserver ~]# 这样就可以看到1号CPU已经离线了注意/sys/devices/system/cpu/cpu1/online中的值如果是0则表示CPU离线如果是1则表示CPU在线。 下面运行两个cat进程命令如下。
[rootserver ~]# cat /dev/zero /dev/null
[1] 56550
[rootserver ~]# cat /dev/zero /dev/null
[2] 56551
[rootserver ~]#然后再打开一个终端用top 进行查看结果如图17-8所示。 图17-8 两个cat的CPU的消耗基本差不多 可以看到两个cat进程消耗的CPU是差不多的因为他们nice值相同可以平等的消耗CPU资源。下面使用renice修改进程56550的nice值改为-10命令如下。
[rootserver ~]# renice -n -10 56550
56550 (process ID) 旧优先级为 0新优先级为 -10
[rootserver ~]#这样进程56550进程会比56551占用更多的CPU资源再次到top中查看结果如图17-9所示。 图17-9 一个cat被改变了优先级 可以看到56550占用的资源比56551多了很多。 刚才讲nice越小越可得到更多CPU资源越大越不容易抢到资源这里改成最大值19命令如下。
[rootserver ~]# renice -n 19 56550
56550 (process ID) 旧优先级为 -10新优先级为 19
[rootserver ~]#然后再到top中查看结果如图17-10所示。 图17-10 一个cat被改变了优先级 可以看到56550只获取到了很少的CPU资源。
关闭cat进程命令如下。
[rootserver ~]# killall -9 cat
[rootserver ~]#
[1]- 已杀死 cat /dev/zero /dev/null
[2] 已杀死 cat /dev/zero /dev/null
[rootserver ~]刚才是在程序运行起来之后再使用renice修改的nice值也可以直接以某个特定的nice启动进程只要在运行的命令前面加上nice -n 优先级即可命令如下。
[rootserver ~]# nice -n 10 cat /dev/zero /dev/null
[1] 56613
[rootserver ~]#关闭这个cat进程命令如下。
[rootserver ~]# killall -9 cat
[rootserver ~]#
[1] 已杀死 nice -n 10 cat /dev/zero /dev/null
[rootserver ~]#开启1号CPU命令如下。
[rootserver ~]# echo 1 /sys/devices/system/cpu/cpu1/online
[rootserver ~]# 作业
下面哪个命令能查出Firefox的pid a. pgrep firefo b. pidof firefo c. ps aux | grep -v firefox d. ps aux | grep firefox
2.下面哪个命令可以把pid1000的进程杀死 a. kill b. killall
3.假设系统中存在firefox进程请用一条命令杀死firefox进程。
方法1______________________________
方法2______________________________
4.现在Firefox在系统中运行请写出三种方法查询Firefox pid的命令。
方法1____________________________
方法2____________________________
方法3____________________________
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89549.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!