有一个Chandler安装工作好几个月,但最近当我去连接到服务器,我注意到它没有运行。
SSHing,确认它没有运行,所以我去通过我的钱德勒启动脚本( /etc/init.d/chandler )手动重新启动,通过各种重新启动等几个月和几个月完美工作,我得到以下错误:
/chandler/bin/osafsrvctl: 24: Syntax error: "(" unexpected
现在,如果我直接进入/chandler/bin/osafsrvctl以root /chandler/bin/osafsrvctl start运行以下/chandler/bin/osafsrvctl start ,则启动时不会出现错误。
一些在线search让我相信这是Chandler需要/ bin / bash才能正常启动,因为启动脚本是Bash。 精细。 检查/chandler/bin/osafsrvctl文件,确实使用/bin/bash 。 更改init.d启动脚本也使用/ bin / bash什么也没做,得到相同的错误。 这是生成错误的/etc/init.d/chandler脚本:
#!/bin/sh -e ### BEGIN INIT INFO # Provides: chandler # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop chandler server ### END INIT INFO # # chandler This init.d script is used to start chandler. # It basically just calls osafsrvctl. # set environment variables . /etc/default/chandler # set local variables RETVAL=$? CHANDLER_HOME="/chandler" # check input case "$1" in start) if [ -f $CHANDLER_HOME/bin/osafsrvctl ]; then /bin/su chandler $CHANDLER_HOME/bin/osafsrvctl start fi ;; stop) if [ -f $CHANDLER_HOME/bin/osafsrvctl ]; then /bin/su chandler $CHANDLER_HOME/bin/osafsrvctl stop fi ;; *) echo "Usage: /etc/init.d/osafsrvctl {start|stop}" exit 1 ;; esac exit $RETVAL
请记住,上述工作良好,直到他们没有 – 不知道什么改变,为什么这是现在。
有任何想法吗?
如果这个脚本使用/bin/bash运行,请检查符号链接/bin/sh是否在/bin/bash而不是另一个shell(例如/bin/dash )。 我有一个类似的问题,从旧的Debian系统转移到更新的一个bash脚本。
尝试通过#!/bin/bash -e更改第一行。