Подтвердить что ты не робот

Bash Script, Убить процесс, вытаскивая из PID файла

Это то, что я имею прямо сейчас в bash script:

ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9

Проблема заключается в том, что, если кто-то еще зарегистрировался и потянул что-то, связанное с стекловидной рыбой, он также потянет этот ПИД. Таким образом, приводит к уничтожению неправильного ПИД.

Итак, мой вопрос заключается в том, как я могу исправить то, что мне нужно, чтобы вытащить правильный PID, и как его переписать, чтобы вытащить PID из файла PID, который генерирует стеклянная рыба.

4b9b3361

Ответ 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 и - пользователь.