/etc/init.d에 스크립트를 어떻게 생성합니까?

/etc/init.d에 스크립트를 어떻게 생성합니까?

내 nodejs 애플리케이션을 Linux 서비스로 만들려고 합니다. stackexchange에서 아래 링크를 찾아 /etc/init.d 폴더 아래에 스크립트를 생성했습니다.

부팅 시 /etc/init.d의 스크립트를 시작하려면 어떻게 해야 합니까?

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() {
    # code to start app comes here 
    # example: daemon program_name &
    /usr/bin/node /home/myapp/index.js
}

stop() {
    # code to stop app comes here 
    # example: killproc program_name
}

case "$1" in 
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here 
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

스크립트를 실행하려고 하면 이 오류가 발생합니다.

$ service myapp start
/etc/init.d/myapp: line 17: syntax error near unexpected token `}'
/etc/init.d/myapp: line 17: `}'

nodejs 애플리케이션을 수동으로 성공적으로 실행할 수 있습니다. 내 서비스에 문제가 있습니다. systemctl을 사용할 수 없으니 추천하지 마세요.

나는 이 nodejs 애플리케이션을 httpd, ftpd처럼 제어할 수 있는 Linux 서비스로 만들고 싶습니다.

답변1

stop() 함수에 내용이 없습니다. 무언가를 추가하면 실행 중인 경우에도 /bin/true(또는 어쩌면 ?) killproc /usr/bin/node이 오류를 성공적으로 극복할 수 있습니다 .

예:

$ a() {
> echo foo
> }
$ b() {
> # comment
> }
-bash: syntax error near unexpected token `}'
$ b() {
> /bin/true
> }
$ 

관련 정보