Script de shell para matar processos, exceto aqueles de propriedade do usuário

0

Estou procurando alguma ajuda na criação de um script para matar processos, mas retornar uma mensagem de erro se eles forem de propriedade de root. Primeiramente, gostaria de dizer que sou um iniciante total nisso. No momento eu tenho atualmente: kill ps -aef | grep $1 | grep -v grep | awk '{print $2}' que funciona bem para matar um nome de processo tomado como um argumento. mas eu não consigo fazer funcionar como uma instrução if, para impedir que ele mate um processo se o proprietário for root.

    
por Adam 06.12.2015 / 10:56

2 respostas

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

O pgrep -u 0 procurará somente por processos pertencentes a UID 0 (root). Se o processo não for encontrado (por isso não existe ou não está sendo executado como root), o prgep retornará um código de retorno diferente de zero e o comando killall será executado. Se o prgrep retornar um código de retorno zero, o eco será executado, mas não o comando killall.

    
por 06.12.2015 / 13:32
1

tente

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

a declaração $1 != "root" filtrará o processo por raiz. Você ainda pode receber um erro no processo do daemon (por exemplo, www-data se estiver executando o apache).

    
por 06.12.2015 / 11:17