SysVinit 服务的运行方式与脚本本身不同

SysVinit 服务的运行方式与脚本本身不同

我正在 Android 上使用 Linux Deploy 并尝试为 SysVinit 创建服务。我使用的发行版是 Debian buster。我写了以下脚本。问题是:当它作为脚本本身运行时,它可以完美运行,但不能作为服务运行。如果我运行service clash startor service clash stop,它会起作用,但不会service clash restart。 SysVinit 在启动时正确运行它。所以唯一的问题是案件restart。它运行stop然后退出而不触及以下内容start。我应该怎么做才能解决这个问题?

  1 #!/bin/zsh
  2 # Default-Start: 2 3 4 5
  3 # Default-Stop: 0 1 6
  4 # description: Clash service
  5
  6 Clash=/usr/local/bin/clash
  7 CfgDir=/etc/clash/
  8
  9 stop(){
 10         if [ -n "$(pgrep clash)" ]
 11         then
 12                 for pid in $(pgrep clash)
 13                 do
 14                         kill $pid
 15                 done
 16         fi
 17 }
 18
 19 start(){
 20         nohup $Clash -d $CfgDir &!
 21 }
 22
 23 test -x $Clash || exit 0
 24
 25 case $1 in
 26   start)
 27         start
 28         ;;
 29
 30   stop)
 31         stop
 32         ;;
 33
 34   restart)
 35         stop
 36         start
 37         ;;
 38
 39   *)
 40         echo "Usage: $0 {start|stop|restart}"
 41         exit 1
 42 esac
 43
 44 exit 0

相关内容