В принципе, какой сигнал имеет значение '0', потому что здесь Я вижу цифры СИГНАЛА, начиная с 1.
Что делает `kill -0 $pid` в оболочке script делать?
Ответ 1
отправка сигнала 0
в заданный PID
просто проверяет, работает ли какой-либо процесс с данным PID
, и у вас есть разрешение на отправку ему сигнала.
Для получения дополнительной информации см. следующие справки:
убить (1)$ man 1 kill
...
If sig is 0, then no signal is sent, but error checking is still performed.
...
убить (2)
$ man 2 kill
...
If sig is 0, then no signal is sent, but error checking is still performed; this
can be used to check for the existence of a process ID or process group ID.
...
Ответ 2
Это хороший вопрос, потому что...
... может быть сложно найти документацию по этому специальному сигналу. Несмотря на то, что говорили другие, единственное упоминание этого сигнала в man 1 kill
в системах на базе Debian:
Особенно полезными сигналами являются HUP, INT, KILL, STOP, CONT и 0.
Не особенно полезно, особенно если вы еще не знаете, что делает сигнал. Он также не указан в выводе kill -l
, поэтому вы не будете знать об этом, если вы уже не знаете об этом.
Где найти его документально
В системах Debian и Ubuntu вывод man 2 kill
говорит, в частности:
Если sig равно 0, тогда никакой сигнал не отправляется, но проверка ошибок по-прежнему выполняется; это можно использовать для проверки наличия идентификатора процесса или идентификатора группы процессов.
Что это хорошо для
Вы можете использовать kill -0
, чтобы проверить, запущен ли процесс. Рассмотрим эти примеры.
# Kill the process if it exists and accepts signals from
# the current user.
sleep 60 &
pid=$!
kill -0 $pid && kill $pid
# Check if a PID exists. When missing, this should result
# in output similar to:
# bash: kill: (6228) - No such process
# Exit status: 1
kill -0 $pid; echo "Exit status: $?"
Вы также можете использовать kill -0
, чтобы определить, имеет ли текущий пользователь разрешения передавать сигнал данному процессу. Например:
# See if you have permission to signal the process. If not,
# this should result in output similar to:
# bash: kill: (15764) - Operation not permitted
# Exit status: 1
sudo sleep 60 &
kill -0 $!; echo "Exit status: $?"
Ответ 3
Эта команда проверяет, работает ли процесс с PID в $pid.
Ответ 4
http://djangstorm.com/Content/kill.html. Проверка ошибок, здесь относится к привилегиям, доступным для выполнения команды пользователем.
Ответ 5
Kill -0 $pid - проверить, существует ли процесс с pid.
Будьте внимательны при использовании 'kill -0 $pid', чтобы проверить существование процесса, потому что
-
После того, как запланированный процесс выйдет, его pid может быть выделен для другого вновь созданного процесса. (Таким образом, нельзя быть уверенным, что конкретный процесс жив или нет)
-
В случае процесса Zombie, для которого дочерний объект ожидает, чтобы родительский вызов вызывал ожидание. Здесь он удерживает $pid и дает положительный результат, пока этот процесс не работает.