日期:2014-05-16  浏览次数:20781 次

请问一个自启动程序的问题?
现在有一个程序(这个程序是个死循环,不会自行退出),我写了一个脚本。run.sh执行这个程序。
然后想把这个脚本加到启动项中,写了如下的脚本:
#!/bin/bash
#chkconfig:2345 80 05
#description:mystart serviece
start() {
   echo "start my process"
   cd /usr/bin
   sh ./run.sh
}

stop(){
   killall start.sh
   echo "stoped"
}
我把这个脚本加到系统服务中,然后重启linux。重启的过程中出现了starting mystart的信息。但是我的
那个run.sh的脚本好像没有执行。请问是什么原因?谢谢!(我的linux装在vmware上)

------解决方案--------------------
需要加一段吧

case "$1" in
  start)
      start()
  ;;
  stop)
      stop()
  ;;
esac

------解决方案--------------------
嗯,你之前只是定义了两个函数,但是没有执行
------解决方案--------------------
写绝对路径试下,sh /usr/bin/run.sh
------解决方案--------------------
引用:
引用:写绝对路径试下,sh /usr/bin/run.sh
我改成了绝对路径,但是还是报同样的错误。请问是怎么回事?

在脚本中加一下日志,看看,最后把日志输出到一个文件
------解决方案--------------------
引用:
execvp:No such file or directory 

这是个什么错误?没有什么文件咧。同问

将sh也设置成绝对路径 /bin/sh

还有点,你的启动run.sh,不能这样直接启动..因为后面run.sh会失去终端,得让其脱离终端,并且变为守护进程.
这个是git-daemon启动脚本中的启动方法,你参考下.
    
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test  > /dev/null \
        
------解决方案--------------------
 return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
        $DAEMON_ARGS \
        
------解决方案--------------------
 return 2


简单点的话就这样做:
nohup  /usr/bin/run.sh 2>&1 >/dev/null &


否则的话,你用/bin/sh /usr/bin/run.sh这句话永远都不会返回,会出问题的!