与killall一起使用时,-HUP有什么作用?


16

有时,当我killall从终端运行命令时,同事会建议或编辑我的脚本以显示killall -HUP

-HUP零件做什么?


这是killall的Apple手册页:developer.apple.com/library/mac/documentation/Darwin/Reference / ... 看起来像h =帮助,u =用户,p =进程。但是这些都是小写的。我在手册页上没有看到大写字母的参数,但是大写字母可能具有完全不同的含义-否则它们可能不存在..
David DelMonte 2013年

Answers:


21

-HUP选项是由killall命令发送到进程的信号。可能很难讲,但是killall手册中的相关条目是:

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

发送的默认TERM信号killallHUP信号之间的差异在很大程度上取决于您要向其发送信号的程序。在程序结束时,它们接收到不同的中断信号值。因此,程序可以捕获中断,并根据该值决定是否应该做一件事或另一件事。

通常将TERM信号(历史上称为“终止信号”)发送到程序以请求终止(这是强制KILL信号终止的一种形式)。该程序可以自由捕获和忽略TERM信号。如果它不需要,则不必终止,并且可以完全忽略此信号。

HUP信号(在历史上,“挂起信号”)通常被发送到一个程序来请求它重新启动并重新读取过程中的所有其配置。程序的实际行为取决于程序特定的实现。并非所有程序都可以捕获,HUP并且惯例或教条也不要求它们。例如,Apache Web服务器将捕获HUP信号并重新读取其所有配置文件,但不会重新启动任何进程。

如果您想真正终止进程,而不用担心它们是否会捕获并服从信号,请使用KILL信号。无法捕获或忽略它,并导致过程终止。

要对可用的POSIX信号进行很好的评估,请参阅此Wikipedia文章


2
在killall的手册页底部的“另请参阅”部分是指向kill手册页的链接,其中列出了一些信号及其作用。
伊恩·C

我是#FAIL从未读过这些开关的人之一。谢谢!
Danijel-James W

作为“挂断信号”,HUP通常在用户注销或终止启动程序的外壳程序时发送给程序。如果捕获信号不是由程序实现的,则该程序通常将终止。如上所述,作为信号捕获的结果,接收信号的程序可以实现任何所需的活动,如Apache示例所示。
nachbar

2

-HUP是,可能会触发一个应用程序停止,读它的配置文件,然后重新启动“挂机”信号。它不一定比不使用它更好。

killall Finder

killall -HUP Finder

尊敬地一样。在OS X中,Finder会重新启动,但会重新读取它的配置文件。如果正在运行的应用程序没有-HUP内置功能,则情况可能并非如此。如先前的海报所述,Apache。它读取它的配置文件,但无法再次启动。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.