我有以下的启动脚本:
NAME="examplestartstop" PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin" LOGFILE="/var/log/$NAME/start-stop-daemon.log" APP_DIR="/usr/bin" APP_BIN="tail -250f /var/log/apache2/error.log" USER="minecraft" GROUP="minecraft" # Include functions set -e . /lib/lsb/init-functions start() { echo "Starting '$NAME'... " start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec "$APP_DIR/$APP_BIN" $LOGFILE || true echo "done" }
当我尝试运行脚本我得到以下输出:
$ ./test start Starting 'examplestartstop'... start-stop-daemon: unable to stat /usr/bin/tail -250f /var/log/apache2/error.log (No such file or directory) done
我在$APP_DIR/$APP_BIN
部分$APP_DIR/$APP_BIN
了什么?
您正在传递命令名称和命令参数作为要执行的命令。 start-stop-daemon
查找名为/usr/bin/tail -250f /var/log/apache2/error.log
的命令,当然这个命令不存在。 相反,你想调用类似(不重要的部分遗漏):
APP_DIR="/usr/bin" APP_BIN="tail" APP_ARGS="-250f /var/log/apache2/error.log" start-stop-daemon --start --exec "$APP_DIR/$APP_BIN" -- $APP_ARGS
(注意–在命令和它的参数之间)