使用kill命令通过其pidn号重新启动linux上的进程,如何?

Rub*_*ero 10 linux kill process signal pid

好吧,我希望能够在 linux 上重新启动进程,因此我查看了kill联机帮助页。显然kill -l会列出我可以发送给进程以执行我需要的所有信号,它们是:

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) 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
Run Code Online (Sandbox Code Playgroud)

我认为我会通过使用SIGSTOP信号(编号 19)然后使用SIGCONT信号(编号 18)来获得所需的效果,如下所示:

kill -19 $PID_NUMBER # It stops! nice, we are reaching just what we wanted.
kill -18 $PID_NUMBER # Ok... it continues to death... that isn't funny though.
Run Code Online (Sandbox Code Playgroud)

我也试过信号号 1 :SIGHUP结果几乎相同,我错过了什么吗?有谁知道我需要什么才能达到我想要的?

use*_*686 8

没有“重启”信号。您需要记录环境(环境、cwd、cmdline、安全上下文……)/proc/<pid>并再次手动启动该过程。

SIGHUP 很接近,但它只是按照惯例用于要求程序重新加载其设置。

  • SIGHUP 是 Hang Up 的“缩写”……就像电话交谈一样。它通常用于正在运行的程序准备接收此类信号并在接收到 HUP 时重新启动的情况。它也没有真正重新启动。在大多数情况下,它只是重置其内部状态,而不会真正停止。因此,除非编写程序来响应这些信号,否则无法重新启动程序。 (2认同)

use*_*841 5

有一个“RELOAD”信号。

假设您squid在容器中运行了一个pid 为 1的进程,如果您重新启动 squid 进程,容器将退出。但你可以像这样“重新加载”它:

kill -HUP 1
Run Code Online (Sandbox Code Playgroud)