Kod
#!/bin/sh
if [ -z ${1} ]
then
echo ""
echo " Usage: ${0} [PROCESS NAME]"
echo ""
else
echo ""
ps -e | grep -e "[ ][0-9][0-9]:[0-9][0-9]:[0-9][0-9][ ]${1}$" | while read pid pty timme name
do kill -3 $pid > /dev/null 2>&1;
if [ $? -eq 0 ]
then
echo " Process <${1}> (PID: $pid) has been terminated."
else
kill -9 $pid > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo " Process <${1}> (PID: $pid) has been terminated."
else
echo " You don't have a permission to terminate process <${1}> (PID: $pid)."
fi
fi
done
ps -e | grep -e "[ ][0-9][0-9]:[0-9][0-9]:[0-9][0-9][ ]${1}$" | read pid_e pty_e timme_e name_e
if [ $? -eq 1 ]
then
echo " Process <${1}> doesn't exists!"
fi
echo ""
fi
if [ -z ${1} ]
then
echo ""
echo " Usage: ${0} [PROCESS NAME]"
echo ""
else
echo ""
ps -e | grep -e "[ ][0-9][0-9]:[0-9][0-9]:[0-9][0-9][ ]${1}$" | while read pid pty timme name
do kill -3 $pid > /dev/null 2>&1;
if [ $? -eq 0 ]
then
echo " Process <${1}> (PID: $pid) has been terminated."
else
kill -9 $pid > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo " Process <${1}> (PID: $pid) has been terminated."
else
echo " You don't have a permission to terminate process <${1}> (PID: $pid)."
fi
fi
done
ps -e | grep -e "[ ][0-9][0-9]:[0-9][0-9]:[0-9][0-9][ ]${1}$" | read pid_e pty_e timme_e name_e
if [ $? -eq 1 ]
then
echo " Process <${1}> doesn't exists!"
fi
echo ""
fi
Mam taki oto kod. Działa sprawnie na kilku komputerach i jako zwykły user i jako su. Mam jednak taki problem, że nie działa on zawsze. Na niektórych komputerach uruchamiam skrypt, wypisuje mi że ubił proces a jednak go nie ubija. Dodam że Program który ubijam ma kilka PID'ów. Wiec jak zrobię ps i sobie wyświetlę liste procesów i wywołam kill -9 PID1 PID2 PID3 PID4 (kilka pidów dla tej samej aplikacji), to działa sprawnie. Może problem jest w tym że nie ubija tych procesów jednocześnie? Sam już nie wiem. Tyle że na zwykłym systemie ubija tę aplikacje z kilkoma pidami, a na systemach produkcyjnych nie. Coś w linuksie?