如何在/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
> }
$ 

相关内容