分享
 
 
 

freebsd 信号和杀死进程

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

当您运行一个编辑器时它是很容易控制的,告诉它去加载文件它就加载。您之所以能这样做,是因为编辑器提供这样便利去这样做,和因为有编辑器去附上的终端。一些程序在运行中不需要连续的用户输入,一有机会就从终端里分离到后台去。例如,一个web系统整天都在作web请求的响应,他不需要您输入任何东西就能完成,这个类别的另一个例子就是把email的传送。我们把那些程序叫守护进程。守护神是希腊神话中的一些人物,非正非邪,他们是些守护小幽灵,大体上为人类作出贡献。许多类似web系统或mail系统的系统对于今天仍有用途,这就是为什么在那么长的时间里,BSD的吉祥物保持为一双鞋加一把钢叉的守护神模样。

守护进程的程序命名通常在最后加一个“d”。 BIND是伯克莱互联网络守护进程命名(and the actual program that executes is called named), Apacheweb系统的程序就叫httpd,在行式打印机上的打印守护进程就是lpd。这只是一种惯例,不是标准或硬性规定。 例如,为Sendmail而应用的主要mail守护进程就叫sendmail, 却不叫maild,这和您推测的一样。

有时您必须和一个守护进程的程序通信,这些通信就叫信号。您能发送一个信号给守护进程(或有关的另一些运行进程)与它进行通信,各个不同的信号各自就是一个数字编号,而您所发送的--数字编号各自有一个特殊的含义。有些人把信号解悉为'请求',并在'请求'的文档里告诉您怎样把信号理解为请求。您只能给所属于您的进程发信号,假如您给其他人的进程发信号, 进程就会用kill(1) 或 kill(2)权限进行拒绝。当然,root 用户会例外,它能把各种信号发送给每个进程。

在某些案例里,FreeBSD也会向应用软件发送信号。假如一个应用软件含有恶意写入并试图去访问内存,那是不可想象的,FreeBSD会向那个进程发送 段式违规 信号 (SIGSEGV)。假如一个应用软件使用alarm(3)系统去进行周期性调用闹钟功能,每当达到时间时, FreeBSD会向应用软件发送闹钟信号(SIGALRM)。

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

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

您可能会去使用 SIGHUP、 SIGUSR1 和 SIGUSR2信号。 这都是些通用的信号,各种应用程序都可以应用在各方面的信号发送。

假如您改变了web系统的配置文件--并想web系统去重读它的配置, 您可以停止然后再启动httpd。但这样做web系统会导致一个短暂的中断周期,那样是不受欢迎的。几乎所有的守护进程在编写时,都会指定对SIGHUP 信号进行响应从而重读配置文件。所以最好的方法就是不去杀死并重启httpd,而是发一个SIGHUP信号给他。因为在这方面没有一个标准,不同的守护进程有不同的用法,所以不了解时应读一下守护进程的文档。

发送信号可用kill(1) 命令, 请参考kill(1)所列出的例子。

发送一个信号给进程

这个例子显示了怎样去发一个信号给inetd(8)。 inetd配置文件是/etc/inetd.conf, 如果想inetd 去重读文件系统的话,可以给它发一个SIGHUP 信号。

寻找您要发送信号的进程ID,可以用ps(1) 加 grep(1)来完成。 grep(1)命令被用在搜索输出方面,搜索您指定的字符串。这命令是由普通用户来执行的,而inetd(8)是root用户运行的,所以必须给ps(1)带上ax选项。

% ps -ax | grep inetd

198 ?? IWs 0:00.00 inetd -wW

得出 inetd(8) PID号是198。 有时 grep inetd 命令也出现在输出中,这是因为在这方面 ps(1) 也是寻找列表中运行进程。

使用 kill(1) 去发送信号。 因为 inetd(8) 是由 root启动的,您必须使用 su(1) 去变为 root 用户。

% su

Password:

# /bin/kill -s HUP 198

和大多数 UNIX? 命令一样, kill(1) 完成任务之是没有内容输出的。 假如您发送信号给一个不属于您的进程, 您会看到 ``kill: PID: Operation not permitted''. 假如输错了PID号,把信号发送到其他进程,那是坏事。或者您侥幸,把信号发送到不存在的进程, 您会看见 ``kill: PID: No such process''.

为什么使用 /bin/kill?: 许多shell提供了内建kill命令, 这样, shell就能直接发送信号,而不是运行 /bin/kill。 这点非常有用,但不同shell有不同的语法来指定发送信号的名字, 与其试图把它们学完倒不如简单地直接使用 /bin/kill ...。

发送其他的信号也很相似,只要在命令行替换TERM或KILL就行了。

Important: 在系统上随意杀死进程是个坏主意,特别是init(8),它的进程ID是1,它非常特殊。 可以运行 /bin/kill -s KILL 1 命令来让系统迅速关机。 当您按下 Return 键时, 始终 必须 去详细检查您所运行的 kill(1)。

Notes

[1] 有点不正确--少数的东西是不能中断的。例如,假如进程试图从网络上另一个计算机的一个文件读取,而那个的计算机会因为某些原因拿走了这个文件,那这个进程从上术情况来看是“不能中断”。最终这个进程会超时,典型的两分钟。一出现超时进程将被杀死。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有