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

Я ищу некоторую помощь в создании сценария для уничтожения процессов, но возвращаю сообщение об ошибке, если они принадлежат 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).