I am Looking for some help in creating a script to kill processes, but return an error message if they are owned by root. Firstly I would like to say that I am a total beginner at this. At the moment I currently have: kill ps -aef | grep $1 | grep -v grep | awk '{print $2}' Which works ok to kill a process name taken as an argument. but I cant get it work as an if statement, to stop it from killing a process if the the owner is root.

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

The pgrep -u 0 will only search for processes owned by UID 0 (root). If the process isn't found (so its either not existing or not running as root), prgep will return a non-zero return code and the killall command will be executed. If prgrep returns a zero return code, the echo will be executed, but not the killall command.



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

the statement $1 != "root" will filter out process own by root. You might still get error on daemon process (e.g. www-data if you are running apache).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.