java撰寫的jar包放在linux 下執行,檔案名叫channel
通過命令nohup java -jar channel.jar &執行
現在我想把這個執行的動作寫成service形式,shell檔案名為channeld
shell程式如下:
#! /bin/bash
# author:qinhan
NAME = "channel.jar"
PROCESS = "/home/firefly/channel.jar"
#start channeld
start(){
echo "starting channel..."
cd /home/firefly
sudo rm /var/lock/LCK..ttyS33333
nohup java -jar channel.jar &
echo "channel successful..."
}
#stop channeld
stop(){
pid = `ps -ef|grep "$NAME" |grep -v "grep" |awk '{print $2}'`
if [ "$pid" = "" ];then
echo "No channel pid alive..."
else
echo "now,kill pid $pid..."
sudo kill -9 $pid
echo "channel stopped successful..."
fi
}
#show the status of channeld
status(){
pid = `ps -ef|grep "channel.jar" |grep -v "grep" |awk '{print $2}'`
if [ "$pid" = "" ];then
echo "channel is stopped..."
else
echo "channel is running..."
fi
}
#restart channel
restart(){
stop
start
}
#execute by input command
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
通過呼叫service channeld start/stop/status/restart來執行channel.jar程式
問題來了:
[color=#FF0000][color=#FF0000]當我呼叫service channeld start/status的時候都沒有問題,在呼叫service channeld stop的時候,總是不能殺死行程
但是提示service的active從running變成了dead,但是行程一直在,并沒有殺死,如下圖


uj5u.com熱心網友回復:
ps 取PID的時候,有多個吧uj5u.com熱心網友回復:
只有一個,每一條指令我自己都試了,而且用grep -v grep去掉了grep本身的。我把stop里邊其他的都注釋掉,然后改成
stop(){
kill `ps -ef|grep channel.jar |grep -v grep |awk '{print $2}'`
}
就沒問題了,能殺死。
這個是if判斷那邊出現的問題?if判斷那邊是這么寫的么?然后kill $pid??????
uj5u.com熱心網友回復:
NAME = "channel.jar"PROCESS = "/home/firefly/channel.jar"
=左右沒空格
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/8338.html
標籤:應用程序開發區
上一篇:怎么進行運維工程師的面試?
