Intereting Posts
arch установить точку монтирования точки Оптимизация сценария оболочки с длительным циклом работы systemd – Мой пользовательский сервис выходит с кодом состояния 216 / GROUP Тайм-аут CUPS для изменения статуса на ошибку USB MIDI-клавиатура (Oxygen 61) теперь не появляется в QJackCtl Как определить количество времени, оставшегося во время «сна»? Как создать загрузочный USB-диск FreeBSD 10? Проблема с небольшим сценарием bash Почему xargs вырезает цитаты из ввода? Как получить общее количество байтов / секторов / блоков, записанных на диск с момента загрузки? Почему моя машина не нуждается в пароле при пробуждении из спящего режима? инструмент или технику, чтобы получить разницу двух разных установок linux Помогите мне восстановить мой python – я думаю, dpkg должен быть сброшен (очень сложная проблема) JMagick не удается найти Java-каталоги выйдите из ssh и все еще выполняете команду?

Сценарий оболочки для уничтожения процессов, кроме тех, которые принадлежат пользователю

Я ищу некоторую помощь в создании сценария для уничтожения процессов, но возвращаю сообщение об ошибке, если они принадлежат root. Во-первых, я хотел бы сказать, что я на этом начинаю. На данный момент у меня есть: kill ps -aef | grep $1 | grep -v grep | awk '{print $2}' ps -aef | grep $1 | grep -v grep | awk '{print $2}' ps -aef | grep $1 | grep -v grep | awk '{print $2}' который работает нормально, чтобы убить имя процесса, принятое в качестве аргумента. но я не могу заставить его работать как оператор if, чтобы остановить его от уничтожения процесса, если владелец является root.

 pgrep -u 0 "$1" && echo "Can't kill process: Owned by root" || killall "$1" 

pgrep -u 0 будет искать только процессы, принадлежащие UID 0 (root). Если процесс не найден (поэтому он либо не существует, либо не работает как root), prgep вернет ненулевой код возврата, и будет выполнена команда killall . Если prgrep возвращает нулевой код возврата, эхо будет выполнено, но не команда killall.

пытаться

 ps -aef | grep $1 | egrep -v grep | awk '$1 != "root" {print $2}' 

оператор $1 != "root" будет отфильтровывать процесс самостоятельно с помощью root. Возможно, вы все еще можете получить сообщение об ошибке в процессе демона (например, www-data если вы используете apache).