Bash Script, Убить процесс, вытаскивая из PID файла
Это то, что я имею прямо сейчас в bash script:
ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
Проблема заключается в том, что, если кто-то еще зарегистрировался и потянул что-то, связанное с стекловидной рыбой, он также потянет этот ПИД. Таким образом, приводит к уничтожению неправильного ПИД.
Итак, мой вопрос заключается в том, как я могу исправить то, что мне нужно, чтобы вытащить правильный PID, и как его переписать, чтобы вытащить PID из файла PID, который генерирует стеклянная рыба.
Ответы
Ответ 1
Измените script, который запустит стеклянную рыбку и поместите что-то вроде echo $$ > /path/to/PID-file
(это может содержать ~
для домашнего каталога или какого-либо другого механизма, такого как $USER
, чтобы сделать конкретным пользователем) в строке, непосредственно следующей за строкой, начинающейся с обработать. Затем вы можете убить правильный процесс, используя kill $(cat /path/to/PID-file)
.
Ответ 2
ps aux | grep ^$USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
Ниже я ошибся с переключателями ps
, поэтому над grep должно быть хорошо.
ah он не работает, ps
может использоваться как ps -ao pid,tty,comm -u $USER
, этот grep выше должен быть в порядке...
кто-то еще вошел в систему...
Если это так, добавьте переключатель -u
ps aux -u $USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
$USER - это имя пользователя, которое будет выбрано и перечислено, по умолчанию должно быть уже установлено в среде ОС. Несколько пользователей могут быть выбраны запятой ps aux -u root,$USER
Обратите внимание: Если в системе нет конкретного имени пользователя, ps выкинет ERROR: имя пользователя не существует.
Подробнее читайте man ps
.
-u userlist Выберите по действующему идентификатору пользователя (EUID) или имени. Это выбирает процессы, эффективное имя пользователя или идентификатор которых находится в списке пользователей. Эффективный идентификатор пользователя описывает пользователя, чей разрешения доступа к файлам используются процессом (см. geteuid (2)). идентичный к U и - пользователь.