Перезапустите процесс в Linux по номеру pidn с помощью команды kill, как?
21278
Rubén Marrero
Ну, я хочу иметь возможность перезапускать процессы в Linux, и поэтому я изучил killman-страницы для этого. Очевидно kill -l, перечислил бы все сигналы, которые я мог бы послать процессу, чтобы сделать то, что мне нужно, а именно:
Я думал, что получу желаемый эффект, используя 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.
Я также попробовал с сигналом № 1: SIGHUPс почти такими же результатами я что-то упустил? Кто-нибудь знает, что мне нужно, чтобы достичь того, что я хочу?
2 ответа на вопрос
5
grawity
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.
Как мне это записать? (если я использую cp, он выдает ошибку) и что делает SIGHUP?
Rubén Marrero 9 лет назад
1
Хорошо, rsync достаточно для записи этого, но как мне его восстановить?
Rubén Marrero 9 лет назад
0
SIGHUP - это сокращение от Hang Up ... Как телефонный разговор. Обычно он используется в такой ситуации, когда работающая программа готова принять такой сигнал и перезапустить, когда она получает HUP. Это действительно не перезапускает либо. В большинстве случаев он просто сбрасывает свое внутреннее состояние, не останавливаясь. Таким образом, невозможно перезапустить программу, если она не написана для ответа на эти сигналы.
jcoppens 9 лет назад
2
@jcoppens Если у меня есть точная копия некоторого / proc / [pid], могу ли я воссоздать его, обернув в exec () или что-то еще?
Rubén Marrero 9 лет назад
0
Я подозреваю, что в / proc / pid есть некоторые параметры, которые могут вызывать тревоги. Но я не эксперт в этой части.
jcoppens 9 лет назад
0
0
user5723841
Есть сигнал «RELOAD».
Предположим, что у вас есть squidпроцесс с pid 1, запускаемый в контейнере, если вы перезапустите процесс squid, то контейнер выйдет. но вы можете «ЗАГРУЗИТЬ» это так:
kill -HUP 1
как вы перезапустите его?
Rubén Marrero 6 лет назад
0
Вы не можете перезапустить процесс с выполнением pid 1 в контейнере, потому что операция `restart` это просто` stop`, а затем `start`, контейнер сразу же выйдет, когда обнаружит, что pid 1 был убит, поэтому` start никогда не случится. `kill -HUP 1` перезагрузит конфигурацию без уничтожения процесса, что равно` restart`.
user5723841 6 лет назад
0