pskiller

Publicado por José Lopes 06/09/2006

[ Hits: 6.011 ]

Homepage: https://lopes.id

Download pskiller




Este script recebe o nome de um processo e, opcionalmente, um sinal do sistema e mata todos os processos em execução que obedecerem ao nome passado. Além disso ele pode receber uma lista de processos para matar, também com sinal de término. Ex: ./pskiller nets #Mata tudo com NETS, como NETScape; ./pskiller -9 emacs #Mata tudo com EMACS com sinal -9; ./pskiller net ema #Mata tudo com NET e EMA; ./pskiller -9 konque firefox #Mata tudo com KONQUE e FIREFOX com sinal -9

  



Esconder código-fonte

#!/bin/bash
# NAME ........: pskiller
# AUTHOR ......: José Lopes de Oliveira Júnior
# DESCRIPTION .:
# Kills a process by a name. But it accepts non complete names, like
#    netsc for NETSCape, or mac for eMACs. It also accepts the signal to kill
#    the processes. A list of process can be eigther passed to the script, even
#    combined with a process signal for all processes, like in the examples:
#       $ pskiller ema fire soffice kick
#       $ pskiller -9 xmm
# WARNING : Be sure to put on the processes' list, not ambigous names, like
#   kde, for example, because it'll kill all processes that have this pattern on
#   their names (all process that have in their names, the kde pattern, for
#   example).
# OBSERVATION .: Give it 700 permition for a single user, or 755 for more users.

SIG="-SIGTERM" # Default signal

# Verifying the parameters
if [ "$#" -lt 1 ]; then
   echo "Usage: pskiller [-SIGNAL] pattern"
   return
fi

# The signal was defined by the user?
if [ "$#" -gt 1 ]; then
   # If the 1st parameter begins with '-', then it's a signal.
   case "$1" in
      # Redefine the signal and remove it from the parameters' vector
      -* )
         SIG=$1
         shift
      ;;
   esac
fi

# Processes PID & NAME and a control variable
PID="" PNAME="" CONTROL="NO"

# Evaluates all parameters
for PNAME in "$@"; do
   for PID in `ps x --format pid,comm | \
      sed -n "s/^ *\([0-9][0-9]*\) [^ ]*$PNAME.*/\1/p"`; do
      CONTROL="YES" # The informed process exists
      
      echo -e "Trying to kill process $PNAME ($PID) with signal $SIG... \c"
      
      kill $SIG $PID > /dev/null # Kill and don't show any messages
      
      echo "done."
   done
   
   # The informed process does not exists
   if [ $CONTROL = "NO" ]; then
      echo "Process $PNAME not found."
   fi
   
   # Restarting the control variable
   CONTROL="NO"
done

# EOF

Scripts recomendados

wget com progressbar no kde

Cryporange - criptografador de mensagens

Script de backup que envia por FTP, gera log e envia por e-mail

Script que automatiza o treinamento do SpamAssassin

Gerenciador Servidor de Arquivos


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts