Linux之进程管理(2)相关命令之三

Linux之进程管理(2)相关命令之三

(IPC)进程间通信及信号控制命令 kill  killall  

kill 命令

kill - terminate a process,Inter Process Communication

进程通信工具,默认为发送终止信号

选项及用法:

kill  -l  #显示所有信号CODE及名称

kill  [-SIGNAL]  pid...#指定发送信号给对应pid的进程,不指定信号代码默认为15信号

常见的信号:(注:可以使用man 7 signal打开帮助搜索 Standard Signals关键字)

1) SIGHUP: 无须关闭进程而让其重读配置文件

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

9) SIGKILL: 杀死正在运行的进程

15) SIGTERM:终止正在运行的进程(默认信号)

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠

使用方法,指定一个信号,如:

信号号码:kill  -1  932

信号名称:kill  -SIGHUP  932

信号名称简写:kill  -HUP  932

使用案例:

1、杀死真正打开的vim进程

#查看当前打开vim的pid

[[email protected] ~]# ps -C vim -o pid= | tr -cd ‘[0-9]\n‘
3042

#对当前vim进程发送15信号

[[email protected] ~]# kill -TERM 3042

#终端另一方已经被退出了vim

Vim: Caught deadly signal TERM0,0-1         All
Vim: Finished.
Terminated

2、不重启服务下重读httpd服务配置

#查看当前httpd服务器状态,未启动

[[email protected] ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

解析:这里使用centos7,dead表示未启动,centos6版本使用命令行servic httpd status,显示running表示启动,显示stopped...表示未启动。

#启动httpd服务器

[[email protected] ~]# systemctl start httpd

#查看80端口是否已经开启,grep能匹配80端口出来表示服务以及启动

[[email protected] ~]# ss -tan | grep ‘:80\>‘
LISTEN     0      128         :::80                      :::*

#查看当前默认首页配置(在httpd主配置文件中搜索DocumentRoot)

[[email protected] ~]# grep ‘^[[:space:]]*DocumentRoot‘ /etc/httpd/conf/httpd.conf 
DocumentRoot "/var/www/html"

#查看对应的服务器根访问点是否有网页

[[email protected] ~]# ls /var/www/html/
index.html

解析:默认说明是对的,那么此时通过其它工具访问是可以显示html中的首页的。也就是index.html页面。

#下面通过另外一个主机访问,直接通过http协议下载工具下载服务器的index.html页面

[[email protected] ~]# wget http://10.1.249.223/index.html
--2016-08-17 19:33:15--  http://10.1.249.223/index.html
Connecting to 10.1.249.223:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 109 [text/html]
Saving to: “index.html.1”
 
100%[============================================================================================================>] 109         --.-K/s   in 0s      
 
2016-08-17 19:33:15 (1.09 MB/s) - “index.html.1” saved [109/109]

解析:出现下面链接完成的进度条表示已经可以访问,下面查看是否下载到了web页面。

#查看当前目录是否存在刚刚下载的index.html

[[email protected] ~]# ls -l ./index.html
-rw-r--r--. 1 root root 100 Sep  7  2016 ./index.html

#查看文件内容

[[email protected] ~]# cat index.html
<html>
<head>
<title>Hello world</title>
</head/>
<body>
  <h1>This is a http.</h1>
</body>
</html>

解析:现在服务端的 httpd服务正常运行,而且配置读取成功,下面我们修改httpd主配置文件中指定的DocumentRooot目录。这里我们记住当前index.html的title为Hello world。

#修改httpd.conf文件,改变DocumentRoot指定的目录

说明:此时Httpd服务首页更目录已经改成了/var/ww/myhtml目录,下面进行配置文件重读。

#查看/var/www/myhtml有什么文件

[[email protected] ~]# ls /var/www/myhtml/
index.html

#查看myhtml目录下的index文件内容

[[email protected] ~]# cat /var/www/myhtml/index.html 
<html>
<head>
<title>server.mzf.com<title>
</head>
<body>
<h1>This is /var/www/myhtml dir</h1>
</body>
</html>

说明:这里注意到这个文件的title为server.mzf.com,下面重读配置文件。

#先查看此时httpd的主进程pid

[[email protected] ~]# pgrep  ‘^httpd\>‘ | sort -n | head -n 1
3069

#发送SIGHUP(1)信号来通知httpd服务进程重读配置

[[email protected] ~]# kill -SIGHUP 3069

#再次使用另外一台主机去通过httpd协议软件下载此时myhtml中的index.html文件

[[email protected] ~]# wget http://10.1.249.223/index.html  
--2016-08-17 19:47:41--  http://10.1.249.223/index.html
Connecting to 10.1.249.223:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 111 [text/html]
Saving to: “index.html.2”
 
100%[============================================================================================================>] 111         --.-K/s   in 0s      
 
2016-08-17 19:47:41 (1.06 MB/s) - “index.html.2” saved [111/111]
 
--2016-08-17 19:47:41--  http://./index2.html
Resolving .... failed: Temporary failure in name resolution.
wget: unable to resolve host address “.”
FINISHED --2016-08-17 19:47:41--
Downloaded: 1 files, 111 in 0s (1.06 MB/s)

解析:这里显示下载成功,而且因为检查目录有同名文件,所有会自动存到当前目录中的文件名称为index.html.2,注意蓝色字那一行。

#于是查看index2.html信息title标签是否为server.mzf.com

[[email protected] ~]# cat index.html.2
<html>
<head>
<title>server.mzf.com<title>
</head>
<body>
<h1>This is /var/www/myhtml dir</h1>
</body>
</html>

解析:这里就说了httpd服务以及成功接收了SIGHUP信号。

总结:这里除了可以去强制杀死进程(发送SIGKILL信号),那么以后对某些支持SIGHUP信号的服务类进程进行修改配置,让其生效也不需要再重启整个服务了,只需要发送SIGHUP信号来让服务进程组进行重读进程参数。

killaill 命令

killall - kill processes by name

根据指定的进程名来杀死对应所有的进程

命令格式及选项:

killall  -l :列出所有信行列表

killall  [options]...  name  ...

-r  [regx]  :使用扩展正则表达式来匹配进程名称

-s,  --signal  [SIGNAL] :发送指定信行

-I:忽略进程名大小写

-q, --quiet :静默模式

-u USERNAME:只杀死指定进程所有者的进程

-i,--interactive:交互式

案例(这里打开两个终端pts/0用于打开测试进程,pts/1用于进行进程处理):

1、杀死vim进程

#使用vim在另一个终端打开一个文件

[[email protected] ~]# vim file

#查看此当前终端vim的进程列表

[[email protected] ~]# ps -C vim -o pid,comm,ruser,tty
   PID COMMAND         RUSER    TT
   3296 vim            root     pts/0

#取出进程号

[[email protected] ~]# ps -C vim -o pid= | tr -cd ‘[0-9]\n‘
3296

#对此vim进程发送终止信行TERM

[[email protected] ~]# killall -TERM -r ‘^vim\>‘

#再次查看刚才打开vim的终端,已经vim进程已经终止了

Vim: Caught deadly signal TERM 0,0-1         All
Vim: Finished.
Terminated

注意:这里使用扩展正则表达式只是对发起进程的命令名称,而不是完整的命令名+参数,所有这里只需要针对命令命令就行了。

2、杀死管道进程tar

#再次在刚才打开vim的终端上测试,使用tar命令测试

[[email protected] ~]# tar -cvf - /* | tar -tvf -

#然后切换到处理的终端,查看刚才终端的tar进程信息

[[email protected] ~]# pgrep -f ‘tar.*-.*‘ -l -t pts/0
3319 tar
3320 tar

解析:为什么为匹配出2行,因为tar -cvf - /* | tar -tvf - 这中间虽然用管道相连,但是在终端来看,实际上开启了2个进程,及一个模拟打包,一个模拟查看列出。

#使用killall直接杀死tar的进程

[[email protected] ~]# killall -r ‘^tar\>‘ -9

3、杀死后台进程

#切换到测试开开进程的pts/0终端,运行后台查找命令

[[email protected] ~]# find / -type d -exec echo {} > /tmp/shfilelist.log \; &
[1] 83484

#查看其作业编号

[[email protected] ~]# jobs
[1]+  Running                 find / -type d -exec echo {} \; > /tmp/shfilelist.log &

#暂停后台进程

[[email protected] ~]# killall -19 find
[[email protected] ~]# jobs
[1]+  Stopped                 find / -type d -exec echo {} \; > /tmp/shfilelist.log

#继续运行

[[email protected] ~]# killall -18 find

#直接杀死

[[email protected] ~]# killall -9 -r ‘^\<find‘
[[email protected] ~]# jobs
[1]+  Killed                  find / -type d -exec echo {} \; > /tmp/shfilelist.log
时间: 2024-08-07 00:12:07

Linux之进程管理(2)相关命令之三的相关文章

Linux之进程管理(2)相关命令之四

Linux之进程管理(2)相关命令之四 设置或调整进程优先级命令: nice  rnice nice 命令 nice - run a program with modified scheduling priority 运行一个程序时修改调度其进程优先级 格式及用法: nice  [options]  [command [args]] -n  # :#表示要设置此程序nice值,-20到19,值越下,优先级越高 注:-20到19的每个nice值分别对应(Centos5中为100-139,CentO

Linux之进程管理(2)相关命令之一

Linux之进程管理(2)相关命令之一 procps工具命令对进程管理的使用:   ps   pgrep  pidof  pkill  pstree ps  命令 ps  (Process State)  :report a snapshot of the current processes. 查看当前进程的快照信息表 此命令支持3种风格: 1.SysV风格:选项前必须加-符号,如ps  -ef 2.BSD风格:选项前可以不加-符号,如ps  aux 3.GUN风格:之前两个-符号,类似长选项,

Linux之进程管理(2)相关命令之二

Linux之进程管理(2)相关命令之二 进程监控工具命令使用:uptime  top  vmstat  pmap  dstat uptime  命令 uptime - Tell how long the system has been running. 显示当前已经运行的时长及cpu核心处理状态 说明:显示系统当前时间,系统运行时长,以及当前上线人数,系统平均负载(一般按1.5.10分钟的平均负载,一般不会超过1). 选项及用法: uptime  [option] -p, --pretty  :

Linux进程管理及相关命令

一些概念 终端 也叫终端设备,早期因为计算机比较昂贵,所以一个主机会有多个终端,这些终端本身不具备计算能力,仅仅承担信息的输入与输出工作,运算和处理均由主机来完成. 现在个人计算机也可以运行终端仿真程序来模拟一个终端来工作. 随着计算机的发展,移动终端也有了广泛应用,不仅有可以进行输入输出的工作,也可以进行一定的运算,实现部分系统的功能. 进程的权限 参看Linux下进程权限分析 一般进程有3个uid,分别为ruid(真实用户ID),euid(有效用户ID),suid(保存用户ID) setui

Linux基础--进程管理相关命令介绍(2)

本文主要介绍了Linux中进程管理的相关命令,涉及到的主要命令有top,vmstat等. (1)top ①功能:用来查看CPU,内存以及进程的状态. ②用例: ③相关注释: load average表示负载,三个数值分别表示第1分钟,第5分钟,第10分钟 Cpu中us表示用户空间程序占用百分比,sy表示内核模式占用百分比,ni表示调整NICE值所占用的    CPU百分比,id表示CPU的空闲比例,wa表示等待磁盘IO完成所占用的时间比例,hi表示硬件中断占     据的百分比,si表示软中断所

Linux基础--进程管理相关命令介绍(1)

本文主要介绍了Linux中进程管理的相关命令,涉及到的主要命令有pstree,ps. (1)pstree ①功能:用来查看进程树 ②用例: (2)ps ①功能:用来显示系统当前进程状态的命令 ②用例: ③相关用法: ps a:显示所有跟终端相关的进程 ps x:显示所有跟终端无关的进程 相关注释: STAT各代码含义: S:可中断的睡眠态 D:不可中断的睡眠态 R:运行或可运行 T:停止 Z:僵死 s:session leader l:多线程进程 +:前台进程 N:低优先级进程 <:高优先级进程

Linux进程及作业管理相关命令

作为初学者,Linux永远是那么神秘,高大上的内容我也不会,所以在这里只能整理一下与管理相关的命令了,如果有不对的或不准确的地方,请指正. 可参考:Linux内核--进程管理与调度http://www.linuxidc.com/Linux/2014-08/105366.htm pstree:显示进程状态树 作用:列出当前的进程,以及它们的树状结构 用法:pstree [选项] -a: 显示执行程序的命令与完整参数 ps:查看系统中进程的状态 在/proc/目录中包含了进程和内核模拟生成的伪文件,

linux下查找进程及终止进程操作的相关命令

使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号.首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时,显示

linux系统-进程管理-基本概念和命令

linux系统-进程管理-基本概念和命令 一 基本概念 1 进程:是程序的执行过程,是动态的,有生命周期,动态产生和消亡,程序和进程不是一一对应的 2 父进程和子进程: 子进程是有一个进程产生的进程,产生这个进程的进程成为该进程的父进程 父进程是由linux系统中调用fork产生,fork复制的内容包括父进程的数据和堆栈段以及父进程的堆栈环境 3 父进程与子进程的关系 父进程终止子进程自然终止,如不终止,则为孤儿进程,父进程自动指向init进程 子进程终止父进程没有终止,这父进程成为僵死进程 4