pskiller

Publicado por José Lopes 06/09/2006

[ Hits: 5.887 ]

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

Ping para servidores tendo um arquivo TXT com a lista dos IPs/Hostnames

Alterador de sufixo

Controle de cópia de arquivos por tamanho

Calculadora para eletrodomésticos

Menu_Funcional dialog


  

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