18

Well, I want to be able to restart processes on linux and so I looked into kill manpages for that. Apparently kill -l would list all the signals I could send to a process to do what I need, which are:

 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

I thought that I would get the desired effect by using SIGSTOP signal (number 19) and then SIGCONT signal (number 18) like this:

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.

I also tried with signal number 1 : SIGHUP with pretty much the same results, am I missing something? Does anyone know what I need to reach what I want?

2 Answers 2

16

There is no “restart” signal. You need to record the environment (environ, cwd, cmdline, security context…) from /proc/<pid> and manually start the process again.

SIGHUP is close, but it is only used by convention to ask the program to reload its settings.

5
  • 1
    How do i record that? (if i use cp it throws an error) and what does SIGHUP? Apr 29, 2015 at 20:59
  • Ok, rsync is enough to record that, but how do I restore it? Apr 29, 2015 at 21:36
  • 2
    SIGHUP is the 'abbreviation' of Hang Up... Like a telephone conversation. It is typically used in such situation where the running program is prepared to receive such a signal and restart when it receives the HUP. It doesn't really restart either. In most cases it just resets its internal state, without really stopping. So, there is no way to restart a program unless the program is written to respond to those signals.
    – jcoppens
    Apr 30, 2015 at 0:36
  • @jcoppens If i have the exact copy of some /proc/[pid] can I recreate it by wrapping it into exec() or something? Apr 30, 2015 at 3:20
  • I suspect that there are some parameters in the /proc/pid, which might raise alarms. But I'm not an expert on that part.
    – jcoppens
    Apr 30, 2015 at 3:32
7

There is a "RELOAD" signal.

Assume you have a squid process with pid 1 runs in container, if you restart the squid process the container will exit. but you can "RELOAD" it like this:

kill -HUP 1
3
  • how do you restart it? Oct 4, 2018 at 15:41
  • 1
    You can't restart a process with a pid 1 runs in container, cause the restart operation is just stop and then start, the container would exit immediately when it detect the pid 1 were killed , so the start will never happen. kill -HUP 1 will reload the configuration without kill the process, this equal to restart it. Oct 9, 2018 at 2:55
  • The generic command kill -HUP <processID> may more understandable
    – dubis
    Jul 13, 2023 at 8:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .