在启动时在屏幕上运行脚本

在启动时在屏幕上运行脚本

我有一个 Python 脚本,希望它在 Ubuntu 12.04 机器上一直运行,我通过添加一个初始化作业来实现这一点,该作业运行一个简短的脚本,检查屏幕会话,如果不存在则创建一个。

/etc/init.d/我的脚本

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
  start)
    /usr/local/bin/start.sh
    ;;
  stop|restart|force-reload)
    ;;
  *)
        ;;
esac

exit 0

/usr/local/bin/start.sh

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

SCREEN_NAME="my-script"
INVOCATION="./my-script.py"

# Make sure we are in the working directory.
cd /usr/local/bin

if ! screen -list | grep -q "${SCREEN_NAME}"; then
    screen -dmS "${SCREEN_NAME}" "${INVOCATION}"
fi

问题是当我运行 时没有创建屏幕/etc/init.d/my-script start。当我执行时它运行良好./start.sh,当我调试它时,它肯定会执行 if 语句内的 screen 语句,并且 screen 的退出代码为 0。

那么为什么它不创建屏幕?

答案1

我猜是运行脚本时出现故障my-script.py,而不是出现了问题screen。我看到您从当前目录引用它 - 从 init 和/或 cron 运行时可能不是当前目录。

您可以尝试在变量中使用脚本的完整路径吗INVOCATION

相关内容