深入了解Linux中的SIGCONT信号 (linux sigcont)

在Linux操作系统中,信号是一种重要的机制,它用于通知进程发生了特定的事件或错误。在信号的机制中,SIGCONT信号具有独特的作用,本文将深入介绍SIGCONT信号的相关知识。

一、什么是SIGCONT信号

SIGCONT信号是一个控制进程的信号,它用于唤醒被挂起的进程。在Linux中,当一个进程被挂起时,它会进入停止状态,直到接收到SIGCONT信号后才会恢复运行。SIGCONT信号是由内核发送给进程的,它表示可以恢复运行。

二、SIGCONT信号的使用场景

SIGCONT信号主要用于控制进程的挂起和恢复。在Linux中,当一个进程被挂起时,可能是由于如下原因:

1. 用户通过键盘输入Ctrl+Z将进程挂起;

2. 进程被发送SIGSTOP信号挂起;

3. 进程被发送SIGTSTP信号挂起。

无论是什么原因造成进程被挂起,只有当接收到SIGCONT信号时,进程才能恢复运行。

三、发送和接收SIGCONT信号

在Linux操作系统中,发送和接收信号是进程间通信的一种方式。下面分别介绍SIGCONT信号的发送和接收。

1. 发送SIGCONT信号

在Linux中,可以使用kill命令向进程发送信号。如果需要向进程发送SIGCONT信号,可以执行如下命令:

kill -CONT 进程ID

其中,进程ID是需要发送SIHCONT信号的进程的ID号。执行该命令后,进程将接收到SIGCONT信号,并从停止状态中恢复运行。

2. 接收SIGCONT信号

当一个进程接收到SIGCONT信号时,会执行与该信号相关联的处理函数。在Linux中,可以使用signal函数设置信号处理函数。如果需要为SIGCONT信号设置处理函数,可以执行如下命令:

signal(SIGCONT, my_handle)

其中,my_handle表示SIGCONT信号的处理函数。在收到该信号时,进程将调用my_handle函数进行处理。

四、SIGCONT信号的特性

除了用于控制进程的挂起和恢复外,SIGCONT信号还有一些特性,如下:

1. 优先级:SIGCONT信号的优先级比较高,当进程接收到多个信号时,会优先处理SIGCONT信号。

2. 阻塞状态:SIGCONT信号是不可阻塞的,即使使用了sigprocmask函数屏蔽了其他信号,SIGCONT信号仍然可以被接收并处理。

3. 继承性:当一个进程fork出一个新进程时,新进程可以继承原进程的信号处理函数、信号屏蔽字等属性。如果在原进程中为SIGCONT信号设置了处理函数,那么新进程也会继承这个处理函数。

五、SIGCONT信号的应用

由于SIGCONT信号的特性较多,因此SIGCONT信号在Linux操作系统中有着广泛的应用。下面列举几种常见的应用场景。

1. 进程之间的控制:在Linux中,可以通过SIGCONT信号来控制进程的启动、停止、暂停和恢复等操作。

2. 调试进程:在进行程序调试时,可以使用SIGSTOP信号挂起进程,然后使用SIGCONT信号恢复其运行,以便进行多次调试。

3. 信号处理函数的设计:为了让进程在挂起和恢复时能够及时响应SIGCONT信号,需要设计合理的信号处理函数。

六、

本文主要介绍了Linux操作系统中的SIGCONT信号,包括其概念、使用场景、发送和接收方式、特性和应用等内容。除了控制进程的挂起和恢复外,SIGCONT信号在进程之间的控制、程序调试和信号处理函数等方面也有着广泛的应用。对于Linux系统开发者和系统管理员来说,深入了解SIGCONT信号是非常必要的。

相关问题拓展阅读:

ubuntu|linux下 如何用python 模拟按键

ctrl c

ctrl d

在linux 下用的多,用于结束进程。

ubuntu下,也就是linux下,通常会用kill -事件编号实现。 你查一下LINUX下的事件就明白了。

kill 进程号 实现上是发了一个信号给指定的进程。 在python里,也可以加载事件处理模块,处理来自其它程序发过来的信号, 当然你可以用KILL工具发信号过来。

ctrl+d也是一个信号,ctrl+c也是一个。具体信号编码我不记得了。不过以前我做多进程管理时就是使用这个方法。 好象信号还可以带参数过来。

你打开python的帮助。看看signal这个模块。我把它的例子拿过来。对你有用不

import signal, os

def handler(signum, frame):

    print ‘Signal handler called with signal’, signum

    raise IOError(“Couldn’t open device!”)

# Set the signal handler and a 5-second alarm

signal.signal(signal.SIGALRM, handler)

signal.alarm(5)

# This open() may hang indefinitely

fd = os.open(‘/dev/ttyS0’, os.O_RDWR)

signal.alarm(0)# Disable the alarm

 

下面是我找到的一些资料。也许有用。

信号的概念

信号(signal)进程之间通讯的方式,是一种软件中断。一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号。

几个常用信号:

SIGINT     终止进程  中断进程  (control+c)

SIGTERM   终止进程     软件终止信号

SIGKILL   终止进程     杀死进程

SIGALRM 闹钟信号

 

进程结束信号 SIGTERM和SIGKILL的区别

SIGTERM比较友好,进程能捕捉这个信号,根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号。

对于SIGKILL信号,进程是不能忽略的。这是一个 “我不管您在做什么,立刻停止”的信号。假如您发送SIGKILL信号给进程,Linux就将进程停止在那里。

 

发送信号一般有两种原因:

1(被动式态世)  内核检测到一个系统事件.例如子进程退出会像父进程发送SIGCHLD信号.键盘按下control+c会发送SIGINT信号

2(主动式)  通过系统调用kill来向指定进程发送信号

 

linux操作系统提供的信号

$ kill -l

 1) SIGHUP) SIGINT) SIGQUIT   银桐   4) SIGILL

 5) SIGTRAP) SIGABRT) SIGBUS) SIGFPE

 9) SIGKILL) SIGUSR) SIGSEGV) SIGUSR2

13) SIGPIPE) SIGALRM) SIGTERM) SIGSTKFLT

17) SIGCHLD) SIGCONT) SIGSTOP   锋闭坦  20) SIGTSTP

21) SIGTTIN) SIGTTOU) SIGURG) SIGXCPU

25) SIGXFSZ) SIGVTALRM   27) SIGPROF) SIGWINCH

29) SIGIO) SIGPWR) SIGSYS) SIGRTMIN

35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4

39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8

43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12

47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14

51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10

55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6

59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2

63) SIGRTMAX-1  64) SIGRTMAX

Python提供的信号

Python 2.4.3 (#1, Jun, 14:09:58)

on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

>>> import signal

>>> dir(signal)

‘SIGCONT’, ‘SIGFPE’, ‘SIGHUP’, ‘SIGILL’, ‘SIGINT’, ‘SIGIO’, ‘SIGIOT’,

‘SIGKILL’, ‘SIGPIPE’, ‘SIGPOLL’, ‘SIGPROF’, ‘SIGPWR’, ‘SIGQUIT’,

‘SIGRTMAX’, ‘SIGRTMIN’, ‘SIGSEGV’, ‘SIGSTOP’, ‘SIGSYS’, ‘SIGTERM’,

‘SIGTRAP’, ‘SIGTSTP’, ‘SIGTTIN’, ‘SIGTTOU’, ‘SIGURG’, ‘SIGUSR1’,

‘SIGUSR2’, ‘SIGVTALRM’, ‘SIGWINCH’, ‘SIGXCPU’, ‘SIGXFSZ’, ‘SIG_DFL’,

‘SIG_IGN’, ‘__doc__’, ‘__name__’, ‘alarm’, ‘default_int_handler’,

‘getsignal’, ‘pause’, ‘signal’>

操作系统规定了进程收到信号以后的默认行为

但是,我们可以通过绑定信号处理函数来修改进程收到信号以后的行为

有两个信号是不可更改的SIGTOP和SIGKILL

绑定信号处理函数

import os  

import signal  

from time import sleep  

 

def onsignal_term(a,b):  

   print ‘收到SIGTERM信号’  

 

#这里是绑定信号处理函数,将SIGTERM绑定在函数onsignal_term上面  

signal.signal(signal.SIGTERM,onsignal_term)  

 

def onsignal_usr1(a,b):  

   print ‘收到SIGUSR1信号’  

#这里是绑定信号处理函数,将SIGUSR1绑定在函数onsignal_term上面  

signal.signal(signal.SIGUSR1,onsignal_usr1)  

 

while 1:  

   print ‘我的进程id是’,os.getpid()  

   sleep(10)  

 

运行该程序。然后通过另外一个进程来发送信号。

发送信号

发送信号的代码如下:

import os  

import signal  

 

#发送信号,16175是前面那个绑定信号处理函数的pid,需要自行修改  

os.kill(16175,signal.SIGTERM)  

#发送信号,16175是前面那个绑定信号处理函数的pid,需要自行修改  

如何在Linux中查看所有正在运行的进程

ps -elf 命令即可查看,另外你要学习linux的常用命令以方便使用

查看Linux中所有正在运行的进程 ,可以参考如下方法:

1、通过ps命瞎源令的-A或者-e参数来获取系统中所有的进程,这两个参数的作用一样的。

2、通过top命令来获取滑歼系统中所有的进程任务 。执行top命令后,在tasks一栏会看到总的任务数。信神冲

命令行方式登陆linux系空陪统

su – root 切换到root权限

ps -A   查看结果

ps命令有好多察戚参数,一般ps -aux 用败亏陵的比较多。可以用ps –help查看帮助。

ps 和 top都可以看系统中正在运行的进程

ps 命令提供了当前运行进程的快照。

使用带有 -ef 选项的 ps ,返回系统中所有用户的所有进山耐程的完整列表。如果您将此 ps 命令的结果传送到 grep 中,则该结果更易于查看。例如:

$ ps -ef | grep oracle

这没唯丛条命令会显示:

UID PID PPID C STIME TTY TIME CMD

oracle:58 ?00:00:00 ora_pmon_ora1

oracle:58 ?00:00:00 ora_dbw0_ora1

oracle:58 ?00:00:01 ora_lgwr_ora1

oracle:58 ?00:00:02 ora_ckpt_ora1

下面是ps的选项

-A:列出所有的进程。

-l:显示长列表。

-m:显示内存信息。

-w:显枯樱示加宽可以显示较多的信息。

-e:显示所有进程。

a:显示终端上的所有进程,包括其它用户的进程。

-au:显示较详细的信息。

-aux:显示所有包含其它使用者的进程。

要即时查看最活跃的进程,可使用 top

ps aux 或者 ps -le

名称:ps

使用权限:所有使用者

使用方式:ps

说明腔汪:显示瞬间行程 (process) 的动态

参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-A 列出所有的进程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的行程

############################################################

常用参数:

-A 显示所有进程(等价于-e)(utility)

-a 显示一个终端的所有进程,除了会话引线

-N 忽略选择。

-d 显示所有进程,但省略所有的会话引线(utility)

-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)

-p pid 进程使用cpu的时间

-u uid or username 选择有效慎圆陆的用户id或者是用户名

-g gid or groupname 显示组的所有进程。

U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)

-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.

-l 长格式(有F,wchan,C 等字段)

-j 作业格式

-o 用户自定义格式。

v 以虚拟存储器格式显示

s 以信号格式显示

-m 显示所有的线程

-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)

e 命令之后显示环境(如:ps -d e; ps -a e)(utility)

h 不显示之一行

############################################################

ps命令常用用法(方便查看系统进程)

1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。

2)ps -A 显示所有进程。

3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。

4)ps -e 此参数的效果和指定”A”参数相同。

5)ps e 列出程序时,显示每个程序所使用的环境变量。

6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。

7)ps -H 显示树状结构,表示程序间的相互关系。

8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。

9)ps s 采用程序信号的格式显示程序状况。

10)ps S 列宽顷出程序时,包括已中断的子程序资料。

11)ps -t  指定终端机编号,并列出属于该终端机的程序的状况。

12)ps u  以用户为主的格式来显示程序状况。

13)ps x  显示所有程序,不以终端机来区分。

最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

############################################################

运行 ps aux 的到如下信息:

root:# ps aux

USER PID%CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

msp.0 0.? Ss 20::00 sendmail: Queue runner@01:00:00 f

root.0 0.52 ? Ss 20::00 gpm -m /dev/input/mice -t imps2

htt.0 0.96 ? Ss 20::00 /usr/in/htt -retryonerror 0

htt.0 1.? Sl 20::00 htt_server -nodaemon

root.0 0.92 ? Ss 20::00 crond

xfs.0 1.? Ss 20::00 xfs -droppriv -daemon

root.0 0.52 ? SNs 20::00 anacron -s

root.0 0.20 ? Ss 20::00 /usr/in/atd

dbus.0 0.? Ssl 20::00 dbus-daemon-1 –system

Head标头:

USER 用户名

UID 用户ID(User ID)

PID 进程ID(Process ID)

PPID 父进程的进程ID(Parent Process id)

SID 会话ID(Session id)

%CPU 进程的cpu占用率

%MEM 进程的内存占用率

VSZ 进程所使用的虚存的大小(Virtual Size)

RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。

TTY 与进程关联的终端(tty)

STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)

R 运行 Runnable (on run queue)正在运行或在运行队列中等待。

S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。

I 空闲 Idle

Z 僵死 Zombie(a defunct process)进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。

D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。

T 终止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。

P 等待交换页

W 无驻留页 has no resident pages没有足够的记忆体分页可分配。

X 死掉的进程

ps001.txt

把结果输出到ps001.txt文本中并保存。

# more ps001.txt

这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看。

4、kill 终止(杀死)进程,有十几种控制进程的方法,下面是一些常用的方法:

#kill -STOP

发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。

#kill -CONT

发送SIGCONT (19,18,25)重新开始一个停止的进程。

#kill -KILL

发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。

#kill -9 -1

终止你拥有的全部进程。

Linux里面杀掉进程命令是什么?

Linux 操作系统带有一个kill 命令来终止进程。该命令可以继续运行服务器,而无需在重大更改/更新后重新启动。

Kill命令向当前正在运行的进程发送一个信号,一个指定的信号。kill 命令可以通过多种方式直接执行或从 shell 脚本执行。

使用/usr/bin中的kill命令为你提供了一些额外的功能,可以使用pkill按进程名称杀死进程。本文惠主机www.idccoupon.com简单来介绍下。

Kill命令用法

kill 命令的常用语法是:

# kill PID(s

对于kill 命令,信号名称可汪租以是:

Signal NameSignal ValueBehaviourSIGHUPHangup

SIGKILLKill Signal

SIGTERMTerminate

从上面的行为可以清楚地看出,SIGTERM是杀死进程的默认和最安全的方法。SIGHUP是一种比SIGTERM更不安全的终止进程的方法。SIGKILL是上述三种方法中最不安全的一种,即杀死一个进程而终止一个进程而不保存。

为了杀死一个进程,我们需要知道一个进程的进程 ID。进程是程序的一个实例。每次程序启动时,都会自动为该进程生成一个唯一的PID 。

Linux中的每个进程 都有一手陵卖个pid。Linux 系统启动时启动的之一个进程是-init 进程,因此在大多数情况下,它被分配了一个值“ 1 ”。

init是主进程,不能这样被杀死,这样可以保证主进程不会被意外杀死。Init决定并允许自己被杀死,其中 kill 只是一个关闭请求。

列出所有正在运行的 Linux 进程

要了解所有进程及其分配的pid,请运行以下ps 命令。

#ps -A

样本输出如下:

PID TTYTIME CMD

1 ?:00:01 init

2 ?:00:00 kthreadd

3 ?:00:00 migration/0

4 ?:00:00 ksoftirqd/0

5 ?:00:00 migration/0

6 ?:00:00 watchdog/0

7 ?:00:01 events/0

8 ?:00:00 cgroup

9 ?:00:00 khelper

10 ?:00:00 netns

11 ?:00:00 async/mgr

12 ?:00:00 pm

13 ?:00:00 sync_supers

14 ?:00:00 bdi-default

15 ?:00:00 kintegrityd/0

16 ?:00:00 kblockd/0

17 ?:00:00 kacpid

18 ?:00:00 kacpi_notify

19 ?:00:00 kacpi_hotplug

20 ?毕逗00:00:00 ata/0

21 ?:00:00 ata_aux

22 ?:00:00 ksuspend_ud

如何使用语法自定义上述输出为 ‘ pidof process ‘。

# pidof mysqld

样本输出:

1684

当然,实现上述目标的另一种方法是遵循以下语法。

# ps aux | grep mysqld

样本输出如下:

root.0  0. ?S    09:49   0:00

/bin/sh /usr/bin/mysqld_safe –datadir=/var/lib/mysql

–socket=/var/lib/mysql/mysql.sock –pid-file=/var/run/mysqld/mysqld.pid

–basedir=/usr –user=mysql

mysql.1  0. ?Sl   09:49   1:09

/usr/libexec/mysqld –basedir=/usr –datadir=/var/lib/mysql –user=mysql

–log-error=/var/log/mysqld.log –pid-file=/var/run/mysqld/mysqld.pid

–socket=/var/lib/mysql/mysql.sock

root.0  0. pts/0    S+   21:39  

0:00 grep mysqld

如何在Linux中杀死一个进程

接下来在继续执行kill 命令之前,需要注意一些要点:

用户可以杀死他的所有进程。

一个用户不能杀死另一个用户的进程。

用户不能杀死系统正在使用的进程。

root 用户可以杀死系统级进程和任何用户的进程。

执行相同功能的另一种方法是执行“ pgrep ”命令。

# pgrep mysql

样本输出如下:

3139

要杀死上述进程PID,请使用 kill 命令,如图所示。

kill

上面的命令将杀死pid = 3139的进程,其中PID是进程的数值。

执行相同功能的另一种方法可以重写为。

# kill -SIGTERM 3139

同样,“ kill -9 PID ”类似于“ kill -SIGKILL PID ”,反之亦然。

如何在 Linux 中使用进程名称杀死一个进程

你必须知道进程名称,在杀死和输入错误的进程名称之前可能会搞砸。

# pkill mysqld

一次杀死多个进程。

# kill PID1 PID2 PID3

或者

# kill -9 PID1 PID2 PID3

或者

# kill -SIGKILL PID1 PID2 PID3

如果一个进程有太多实例和许多子进程,我们有一个命令 ‘ killall ‘ 或pkill。这两个是该系列中唯一的命令,它以进程名称作为参数代替进程号。

句法:

# killall Process Name

或者

# pkill Process Name

要杀死所有mysql 实例以及子进程,请使用以下命令。

# killall mysqld

或者

# pkill mysqld

当然,你始终可以使用以下任何命令验证进程的状态是否正在运行。

# service mysql status

或者

# systemctl status mysql

# pgrep mysql

# ps -aux | grep mysql

方法一: Terminal终端输入: gnome-system-monitor,就可以打开system monitor

如图:

然后找到相应进程,右击选择kill process就可以了

方法二: 通过kill 进程id的方式可以实现,

首先需要知道进程id, 例如,想要杀死firefox的进程,通过 ps -ef|grep firefox,可以查到firefox的进程id:

然后通过 kill 3781 就可以关闭进程了.

补充: 1. kill -9 来强制终止退出, 例如: kill

2.特殊用法:

kill -STOP

发送SIGSTOP (17,19,23)停止一个进程,而并不消段巧灭这个进程。

kill -CONT

发送SIGCONT (19,18,25)重新开始一个停止的进程。

kill -KILL

发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。

kill -9 -1

终止你拥有的全部进程。

方法三: killall 通过程序的名字,来杀死进程

例如: killall firefox

注意: 该命令可以使用 -9 参数来强制运毕杀死进程, killall -9 firefox

方法四: pkill 通过程序的名字, 直接杀死所有进程

例如: pkill firefox

方法五: 通过xkill 可以杀死图形程序应用, 例如firefox崩溃无响应,可以使用该命令.

例如: 用法xkill , 会出现一个白色的x, 然后用鼠标单击想要杀死的应用,如图

以下内容引用自:

◆编者注:

KILLALL(Section: User (1)/Updated: 1999年9月7日)

———————————————–

NAME (名称)

killall – 以名字方式来杀死进程

SYNOPSIS (总览)

killall name …

killall -l

killall -V

DESCRIPTION (描述)

killall 发送一条信号给所有运行任意指定命令的进程. 如果没有指定信号名, 则发送SIGTERM.。

信号可以以名字 (如 -HUP ) 或者数字 (如 -1 ) 的方式指定. 信号 0 (检查进程是否存在)只能以数字方式指定。

如果命令名包括

斜杠

(/), 那么执行该特定文件的进程将被杀掉, 这与进程名无关。

如果对于所列命令无进程可杀, 那么 killall 会返回非零值. 如果对于每条命令至少杀死了一个进程, killall 返回 0。Killall 进程决不会杀死自己 (但是可以杀死其它 killall 进程)。

OPTIONS (选项)

-e

对 于很长的名字, 要求准确匹配. 如果一个命令名长于 15 个字符, 则可能不能用整个名字 (溢出了). 在这种情况下, killall 会杀死所有匹配名字前 15 个字符的所有进程. 有了 -e 选项,这样的记录将忽略. 如果同时指定了 -v 选项, killall 会针对每个忽略的记录打印一条消息。

-g

杀死属于该进程组的进程. kill 信号给每个组旁燃芹只发送一次, 即使同一进程组中包含多个进程。

-i

交互方式,在杀死进程之前征求确认信息。

-l

列出所有已知的信号名。

-q

如果没有进程杀死, 不会提出抱怨。

-v

报告信号是否成功发送。

-V

显示版本信息。

-w

等待所有杀的进程死去. killall 会每秒检查一次是否任何被杀的进程仍然存在, 仅当都死光后才返回. 注意: 如果信号被忽略或没有起作用, 或者进程停留在僵尸状态, killall 可能会永久等待。

FILES(相关文件)

/proc proc

文件系统

的存在位置。

KNOWN bugS (已知 BUGS)

以文件方式杀死只对那些在执行时一直打开的

可执行文件

起作用, 也即, 混杂的可执行文件不能够通过这种方式杀死。

要警告的是输入 killall name 可能不会在非 Linux 系统上产生预期的效果, 特别是特权用户执行时要小心。

在两次扫描的间隙, 如果进程消失了而被代之以一个有同样 PID 的新进程, killall -w 侦测不到。

来源:

下面来了解相关命令:

一、查看进程的命令 有ps、pstree、pgrep等:

1、ps

显示进程信息,参数可省略

-aux 以BSD风格显示进程 常用

-efH 以System V风格显示进程

-e , -A 显示所有进程

a显示终端上所有用户的进程

x显示无终端进程

u 显示详细信息

f树状显示

w 完整显示信息

l 显示长列表

在终端中执行ps aux,

各列输出字段的含义:

USER进程所有者

PID进程ID

PPID父进程

%CPUCPU占用率

%MEM 内存占用率

NI进程

优先级

。数值越大,占用CPU时间越少

VSZ进程虚拟大小

RSS页面文件占用

TTY终端ID

STAT进程状态

+—D 不可中断 Uninterruptible sleep (usually IO)

+—R 正在运行,或在队列中的进程

+—S 处于休眠状态

+—T 停止或被追踪

+—Z 僵尸进程

+—W 进入内存交换(从内核2.6开始无效)

+—X 死掉的进程

+

显示进程的PID

-l 显示进程名和进程PID

-o 进程起始ID

-n 进程终止ID

二、结束进程的命令 有kill、pkill、killall、xkill等:

kill

根据PID向进程发送信号,常用来结束进程,默认信号为 -9

信号代码,可取值如下:

-l

信号数字

> 显示、翻译信号代码

-9 , -KILL 发送 kill 信号退出

-6 , -ABRT 发送 abort 信号退出

-15 , -TERM 发送 Termination 信号

-1 , -HUP 挂起

-2 , -INT 从键盘中断,相当于 Ctrl+c

-3 , -QUIT 从键盘退出,相当于 Ctrl+d

-4 , -ILL 非法指令

-11 , -SEGV 内存错误

-13 , -PIPE 破坏管道

-14 , -ALRM

-STOP 停止进程,但不结束

-CONT 继续运行已停止的进程

-9 -1 结束当前用户的所有进程

pkill

结束进程族。如果结束单个进程,请用 kill

killall

killall和pkill 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

xkill

在图形界面中点杀进程。

当xkill运行时鼠标指针变为骷髅图案,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消。

比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。

xkill 调用方法:

# xkill

来源:

linux中pkill的简单用法

pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

必要参数

-f 显示完整程序

-l 显示源代码

-n 显示新程序

-o 显示旧程序

-v 与条件不符合的程序

-x 与条件符合的程序

选择参数

-p 列出父进程为用户指定进程的进程信息

-t 指定终端下的所有程序

-u 指定用户的程序

  应用方法:

  #pkill 正在运行的程序名

  举例:

Java代码

# pgrep -l gaim

2979 gaim

# pkill gaim

  也就是说:

  kill 对应的是 PID

  pkill 对应的是COMMAND

  例如在Ubuntu中强制结束一个已成僵尸的名称为:firefox,PID为:1603的进程,可以如下操作:

  方法一:

  (1)ctrl+alt+t,调出终端,输入 top,然后就可以看到现在系统的进程,是按占用资源从多到少排列的。

  找到要关掉的进程,记下该进程之一列的数字编号(假设是xx),然后输入q,退回终端。

  (2)输入:sudo kill xx(对应刚才的编号)。

  方法二:

  ctrl+alt+t,调出终端,输入:sudo pkill firefox

范例1: 杀死指定进程

Java代码

root@snail-hnlinux:~# ps -A //显示所有进程

PID TTY TIME CMD

1 ? 00:00:03 init

2 ? 00:00:00 kthreadd

3 ? 00:00:00 migration/0

4 ? 00:00:00 ksoftirqd/0

5 ? 00:00:00 watchdog/0

……忽略部分

28382 ? 00:00:00 gvfsd-http

28391 ? 00:07:07 software-center

30467 ? 00:00:31 designer-qt4

30487 ? 00:00:06 gnome-terminal

30488 ? 00:00:00 gnome-pty-helpe

30489 pts/0 00:00:00 bash

30670 ? 00:00:00 debconf-communi

30749 pts/0 00:00:17 gedit

31155 ? 00:00:00 dhclient

31325 ? 00:00:01 sshd

31327 ? 00:00:00 sshd

31400 pts/1 00:00:00 bash

31485 pts/2 00:00:00 bash

31653 ? 00:00:00 aptd

31658 pts/1 00:00:00 ps

root@snail-hnlinux:~# pidof sshd //查看与sshd相关进程

95

root@snail-hnlinux:~# pkill -9 sshd //杀死指定进程

范例2:杀死同义终端下的进程

Java代码

root@snail-hnlinux:~# pkill -t tty1 //杀死终端1下的所有进程

范例3: 杀死指定用户进程

Java代码

root@snail-hnlinux:~# pkill -u hnlinux

范例4:反向选择

Java代码

root@snail-hnlinux:~# pkill -vu hnlinux //杀死不属于hnlinux用户的所有进程

————————————————

版权声明:本文为CSDN博主「MrCoderr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

killall -9 进程名

或kill -9 进程纤虚pid

关于linux sigcont的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入了解Linux中的SIGCONT信号 (linux sigcont)