Processamento de manipulação

0
$ps -fu $USER
UID        PID  PPID  C STIME TTY          TIME CMD
kanoujip 22471 21858  0 Sep16 pts/3    00:00:00 /bin/sh ./Alert_notification.sh
kanoujip 27450 27390  0 Sep16 ?        00:00:00 sshd: kanoujip@pts/9

Eu quero executar outra vez ./Alert_notification.sh novamente, então quero matar todas as execuções anteriores da minha ID de usuário

Como posso conseguir isso?

ps -fu $USER | grep Alert_notification.sh |grep -vE 'grep|"$PPID"' | awk '{print $2}' | xargs kill 'ps -o pid= -N T' ;

encerra toda a sessão MY USER

    
por kanoujiapraveen 17.09.2016 / 20:54

1 resposta

0

Se eu entendi bem o seu pedido, você não precisa fazer um grep na variável $PPID , que é usada, talvez, até mesmo pela última execução de script chamada, mas no PID do último script chamado: $$ .

Se você chamar script.sh usando o mesmo bash , $PPID será o mesmo para todas as outras execuções do script script.sh (ou Alert_notifications.sh no seu caso).

Tente alterar algo em seu comando e adicionar um pouco de controle (se quiser):

ps -fu $USER | grep  "Alert_notification.sh" | grep -v "grep\|$$" | awk '{print $2}' | xargs kill 2> /dev/null  
  • 2> /dev/null : você precisa dele para omitir mensagens de erro no caso de algum não será encontrado nenhum processo
por 17.09.2016 / 23:28

Tags