스크립트가 여러 번 실행됨

스크립트가 여러 번 실행됨

여러 Java 프로그램을 시작, 종료 또는 다시 시작하는 스크립트가 있습니다. 그러나 실행하면 백그라운드에서 여러 번 실행됩니다.

이것은 내 스크립트입니다.

#!/bin/bash

export jvmArgs="-jar -Xms1024m -Xmx2048m -Djava.security.egd=file:/dev/../dev/urandom"

function killer () {
    app=$1
     kill -9 $(ps -ef | grep  ${app} | grep -v grep | awk '{print $2}');

}


function start_acolds ()
{
    basePath=/path/to/apps/
     cd ${basePath}
     cd ${basePath}app0 && nohup java ${jvmArgs} app0.jar >/dev/null 2>&1&
     cd ${basePath}app1 && nohup java ${jvmArgs} app1.jar >/dev/null 2>&1&
     cd ${basePath}app2 && nohup java ${jvmArgs} app2.jar >/dev/null 2>&1&
     cd ${basePath}app3 && nohup java ${jvmArgs} app3.jar >/dev/null 2>&1&
     cd ${basePath}app4 && nohup java ${jvmArgs} app4.jar >/dev/null 2>&1&
     cd ${basePath}app5 && nohup java ${jvmArgs} app5.jar >/dev/null 2>&1&
     cd ${basePath}app6 && nohup java ${jvmArgs} app6.jar >/dev/null 2>&1&
     cd ${basePath}app7 && nohup java ${jvmArgs} app7.jar >/dev/null 2>&1&
     cd ${basePath}app8 && nohup java ${jvmArgs} app8.jar >/dev/null 2>&1&

}
function kill_acolds(){
    killer  app0.jar
    killer  app1.jar
    killer  app2.jar
    killer  app3.jar
    killer  app4.jar
    killer  app5.jar
    killer  app6.jar
    killer  app7.jar
    killer  app8.jar
}
case "$1" in
start)
echo "Iniciando servicios... "
start_acolds
;;
stop)
echo "Deteniendo servicios..."
kill_acolds
;;
restart)
kill_acolds
start_acolds
;;
*)
echo "Modo de empleo: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0

이를 실행하면 해당 작업이 수행되고 모든 프로그램이 시작되고 종료되지만 다음 출력에서 ​​이 내용을 볼 수 있습니다 ps.

user1@UbuntuMachine:/$ ps -ef|grep -v grep|grep acoldp.sh.dc
user1 12241     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12242     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12243     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12244     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12245     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12246     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12247     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12248     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12249     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12252     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12253     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12254     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12257     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart
user1 12258     1  0 11:24 pts/1    00:00:00 /bin/bash ./acoldp.sh.dc restart

그럼 왜 그런 곤경에 처해 있습니까? 즉, 제 역할은 수행하지만 이 모든 작업을 백그라운드에서 처리하게 됩니다.

관련 정보