쉘 스크립트를 호출하는 다음 서비스 스크립트가 있습니다. 스크립트에서 몇 가지 사항을 변경했습니다. 쉘 스크립트를 직접 실행하면 모든 것이 잘 작동합니다. 서버를 다시 시작하면 모든 것이 잘 작동합니다. sudo service my-service stop
then 을 호출 하면 sudo service my-service start
중지되지만 다시는 시작되지 않습니다. systemctl OK가 표시되지만 프로세스가 시작되지 않으며 쉘 스크립트에 로그가 기록되지 않습니다. 전화를 걸어도 시작되지 않습니다 sudo /etc/init.d/my-service
. 다시 한번 말씀드리지만, 서버가 다시 시작되면 자동으로 정상적으로 시작됩니다. 무엇이 잘못될 수 있는지 또는 실패한 시작에서 더 나은 로깅을 얻는 방법에 대한 아이디어가 있습니까?
#!/bin/bash
#
# my-service
#
# chkconfig: 345 84 15
# description: Start up the My Service process.
# config: /etc/sysconfig/my-service
# processname: java
# Source function library.
. /etc/init.d/functions
# Loading the configuration parameters.
if [ -f /etc/sysconfig/my-service ]; then
source /etc/sysconfig/my-service
fi
RETVAL=0
case "$1" in
start)
if [ -f /opt/my-service/latest/bin/my-service-start.sh ];
then
logger -s "Starting My Service"
/bin/su -p -s /bin/sh myserviceuser /opt/my-service/latest/bin/my-service-start.sh
RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/my-service
fi
;;
stop)
if [ -f /opt/my-service/latest/bin/my-service-stop.sh ];
then
logger -s "Stopping My Service"
/bin/su -p -s /bin/sh myserviceuser /opt/my-service/latest/bin/my-service-stop.sh
RETVAL=$?
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/my-service
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
답변1
"대본에서 몇 가지를 변경했습니다."
my-service-start.sh
과 의 내용이 my-service-stop.sh
미스터리이기 때문에 이 질문에 권위 있게 답하기에는 정보가 충분하지 않습니다 .
말씀하신 모든 내용이 사실이라고 가정하면 일단 실행되고 모두 실행되면 my-service-start.sh
예상대로 실행되지 않는 상황입니다. 처음 부팅에서는 제대로 작동하지만. 이는 스크립트가 실행된 후에 뭔가 변경된다는 의미입니다. 상황은 시작 스크립트가 성공적으로 실행될 때와 다릅니다. 시작 스크립트에 필요한 포트가 아직 사용 중일 수 있습니다.my-service-start.sh
my-service-stop.sh
스크립트가 잠재적으로 스스로를 밟는 것을 방지하기 위해 PID 파일 처리를 조사하고 분석하는 것이 좋습니다.시작 멈춤변경되는 내용의 스크립트입니다. 시작 스크립트에 일부 오류 처리를 추가하고 이것이 문제를 격리하는 데 도움이 되는지 확인하십시오.