linux 设置shell脚本为系统服务错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 设置shell脚本为系统服务错误相关的知识,希望对你有一定的参考价值。

请教各位大仙,在service name start时 提示
“/etc/init.d/koalra: line 7: service.sh: command not found
/etc/init.d/koalra: line 10: [: missing `]'
ERROR:/usr/local/SZT0901-KOALRA/ not found ..” 错误。 如下是shell代码。在线等 感谢!

#! /bin/sh
# Provides: service.sh
# Default-Start: 2 3 4 5

EXEC_PATH=/usr/local/SZT0901-KOALRA
EXEC=sh service.sh start
PID_FILE=/usr/local/SZT0901-KOALRA/service.sh

if ! [ -x $EXEC_PATH/$EXEC]; then
echo "ERROR:$EXEC_PATH/$EXEC not found ..."
exit 1
fi

stop()
echo "Stopping $EXEC..."
killall java

sleep 1
echo "Shutting down $EXEC: [OK]"


start()
echo "Starting $EXEC..."
pidof $EXEC > $PID_FILE
sleep 1
echo "Starting $EXEC: [OK]"


restart()
stop
start


case "$1" in
start)
start

“/etc/init.d/koalra: line 7: service.sh: command not found ---试一试给出service.sh的完整路径,在这个启动脚本中,PATH变量应该没有包括service.sh的所在路径,所以shell会因为找不到service.sh而报错
/etc/init.d/koalra: line 10: [: missing `]\' ---右方括号]与前面的内容之间应该有至少一个空格,你的脚本中]与之前的内容是连贯的,所以shell没有识别出这个右方括号
ERROR:/usr/local/SZT0901-KOALRA/ not found ..” ----- 这个应该还是路径的问题,你确定路径写对了?
参考技术A

    EXEC=service.sh

    PID_FILE=/var/run/name.pid #你这里要是写成了你的 service.sh 就把它覆盖了

    EXEC与]之间缺少空格

    pidof -x $EXEC

    你的 start() 没有对 $EXEC的调用,stop() 又杀掉所有 java 进程,无论是不是 $EXEC 启动的,PID_FILE 没有任何用处

Linux设置开机启动

参考技术A

方法一:编辑rc.loacl脚本

直接在/etc/rc.local中添加启动脚本。

方法二:Linux通过chkconfig设置开机启动服务

创建脚本

编辑脚本内容如下(脚本前面三行格式固定)

说明:

第一行,告诉系统使用的shell,所有的shell脚本都是这样。

第二行,chkconfig后面有三个参数2345,100和101告诉chkconfig程序,需要在rc2.d~rc5.d目录下,创建名字为 S100bootshell的文件连接,连接到/etc/rc.d/init.d目录下的的test2脚本。第一个字符是S,系统在启动的时候,运行脚本bootshell,就会添加一个start参数,告诉脚本,现在是启动模式。同时在rc0.d和rc6.d目录下,创建名字为K90bootshell的 文件连接,第一个字符为K,系统在关闭系统的时候,会运行bootshell,添加一个stop,告诉脚本,现在是关闭模式。 注意上面的三行中,第二,第三行是必须的,否则在运行chkconfig --add bootshell时,会报错。

运行级别,越小越优先运行,优先级相同的时候按创建时间启动。

给文件设置执行权限

测试脚本

chkconfig创建服务

此时rc2.d-rc5.d文件夹下已有创建好的文件。

在CentOS中服务启动脚本放置在: /etc/rc.d/init.d 而 /etc/init.d 这个目录为公认的目录,在centos中 /etc/init.d 就是一个链接档案 /etc/sysconfig 服务初始化环境变量配置都在这个档案中。

以上是关于linux 设置shell脚本为系统服务错误的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统shell脚本之检测两台服务器指定目录下的文件一致性

使用 PHP + shell 生成 一键设置权限的脚本。

shell脚本启动语法错误syntax error near unexpected token '{

Linux系统下shell脚本实战之mariadb创建数据库和表

Linux系统shell脚本之检测系统的任意服务

Shell脚本应用