|
藍森林 http://www.lslnet.com 2006年8月08日 13:08
如何殺進程?問題解決,謝謝sdccf及大家
縣局的維護員,基本上每天都要在主機上殺N多回進程
root
ps -t tty***
kill -9 ** * * * ***
exit
大家有沒有簡單一點的方法
比如說自己編的一個小程序或一句命令
帶個端口號的參數就能把此端口的進程殺了
先謝謝了 |
如何殺進程?問題解決,謝謝sdccf及大家
kill -9 `ps -t tty1`
這樣輸入一次就OK了.
或寫一個腳本. |
如何殺進程?問題解決,謝謝sdccf及大家
我們是這樣處理的,編兩個文件,
文件1
trap "" 1 2 3
error_mesg="\n錯誤:序號選擇不正確."
while
clear
echo "\n\t\t\t 儲蓄網點激活服務 - "`tty|cut -c 9,10`
echo "\n\t\t 序號 所名 終端號"
echo "\t\t---------------------------------------"
echo "\t\t 1 1支 ttyp21"
echo "\t\t 2 2支 ttyp23"
echo "\t\t 3 3支 ttyp25"
echo "\t\t 4 4支 ttyp26"
echo "\t\t 5 5支 ttyp27"
echo "\t\t 6 6支 ttyp28"
echo "\t\t 7 7支 ttyp33"
echo "\t\t 8 8支 ttyp22"
echo "\t\t 9 9支 ttyp35"
echo "\t\t 10 10支 ttyp29"
echo "\t\t---------------------------------------"
echo "\t 輸入要激活的序號(打0退出):\c"
read post
do
if [ `echo $post|wc -c` -ge 2 ]
then
if [ $post -ge 0 -a $post -le 10 ]
then
case $post in
1) hm="ttyp21" ;;
2) hm="ttyp23" ;;
3) hm="ttyp25" ;;
4) hm="ttyp26" ;;
5) hm="ttyp27" ;;
6) hm="ttyp28" ;;
7) hm="ttyp33" ;;
8) hm="ttyp22" ;;
9) hm="ttyp35" ;;
10) hm="ttyp29" ;;
0) exit ;;
*) echo $error_mesg
read pause
continue ;;
esac
echo "\n\t\t\t 確定(Y/N):\c"
read qdok
if [ `echo $qdok|wc -c` -ge 2 ]
then
if [ $qdok = "y" -o $qdok = "Y" ]
then
/bin/killok `ps -t $hm |grep $hm`
echo "\n信息:已經激活$hm"
read pasue
fi
fi
else
echo $error_mesg
read pasue
fi
else
echo $error_mesg
read pasue
fi
done
文件2
#/bin/sh
kill_id=""
kill_space=" "
until [ $# = 0 ]
do
kill_id=$kill_id$kill_space$1
shift
shift
shift
shift
done
kill $kill_id
echo "\n\n$kill_id"
exit 0
賦予執行權限,放到/bin 下,執行文件1,選擇序號,即可殺其進程 |
如何殺進程?問題解決,謝謝sdccf及大家
多謝二位朋友,我去試試 |
如何殺進程?問題解決,謝謝sdccf及大家
遇見一個問題,別見笑,照二位朋友的方法都提示:
kill:pid 'tty21a' is not numeric
是什麼意思,應如何解決?
另外 二月二 朋友的程序中的這一句
/bin/killok `ps -t $hm |grep $hm`
執行時提示 killok 這裡出錯,也不太懂,請大家指點,謝謝! |
如何殺進程?問題解決,謝謝sdccf及大家
文件2的名字就是killok! |
如何殺進程?問題解決,謝謝sdccf及大家
文件2的名字就是killok! |
如何殺進程?問題解決,謝謝sdccf及大家
原來是這樣
不過第一個問題還沒解決,再請大家講解一下,謝謝了
kill:pid 'tty21a' is not numeric 這個提示是什麼意思啊? |
如何殺進程?問題解決,謝謝sdccf及大家
哪位大俠給個答覆嘛,謝謝了 |
如何殺進程?問題解決,謝謝sdccf及大家
他給的的那個命令沒有過濾掉非數字的字符。
kill 的參數必須數字,也就是進程號。
不過這個錯誤不會有什麼影響。 |
如何殺進程?問題解決,謝謝sdccf及大家
看來我只是浮於水面之上,沒窺得UNIX箇中奧秘!! |
如何殺進程?問題解決,謝謝sdccf及大家
echo -n "輸入終端號:"
read ttyNO
ps -t $ttyNO|awk '{print "kill -9 " $1}'>;kill_pid
TMP=/tmp/tmpfile_$$
sed -e 's/kill -9 PID/ /g' < kill_pid >; $TMP
mv $TMP kill_pid
sort -d -r kill_pid>;killpid
sh killpid
rm kill_pid
rm killpid
echo "完成!" |
如何殺進程?問題解決,謝謝sdccf及大家
clear
while true
clear
do
echo " "
echo " "
echo " "
echo " "
echo " "
echo " "
echo " 輸入終端設備名稱:\c"
read ttyname
ps -ef|grep $ttyname|awk '{if ($0 !~ "grep") print $2}'>;tty_tmp
if [ -s tty_tmp ]
then
#awk '{print $2}' tty_tmp>;tty_tmp1
#ps -ef|grep $ttyname|awk -v value=$ttyname '{if ($0 !~ "grep") print "ps -ef|grep " value}'>;tty_tmp
echo "ps -ef|grep " $ttyname>;tty_tmp
break
else
case $ttyname in
tty*)
awk -F: -v var=$ttyname '{if($4 ~ var) print "ps -ef|grep tty" $1}' /etc/inittab>;tty_tmp
break
;;
*)
echo " 無效終端設備名稱,回車繼續或者按delete鍵退出."
read test
clear
;;
esac
fi
done
if [ -s tty_tmp ]
echo "系統為您執行如下命令:\c"
then
cat tty_tmp
echo "如下進程正在運行中."
chmod 777 tty_tmp
./tty_tmp
while true
do
echo "殺死上敘述進程嗎(y/n)?\c"
read yorn
case $yorn in
y|Y)
./tty_tmp|awk '{print "kill -9 " $2}' >;tty_tmp1
sort -d -r tty_tmp1>;tty_tmp2
chmod 777 tty_tmp2
./tty_tmp2
exit
;;
n|N)
break
;;
*)
echo "無效選擇,退出!"
exit
;;
esac
done
else
echo "此終端無進程存在."
fi |
| |