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 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脚本之检测两台服务器指定目录下的文件一致性
shell脚本启动语法错误syntax error near unexpected token '{