使用 kill 命令根据 pidn 号码重新启动 Linux 上的进程,如何使用?

使用 kill 命令根据 pidn 号码重新启动 Linux 上的进程,如何使用?

好吧,我希望能够在 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

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

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.

我也尝试了信号 1:SIGHUP结果几乎相同,我是不是漏掉了什么?有人知道我需要什么才能达到我想要的效果吗?

答案1

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

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

答案2

有一个“RELOAD”信号。

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

kill -HUP 1

相关内容