【问题标题】:Starting new Screen on the background on reboot重新启动时在后台启动新屏幕
【发布时间】:2021-12-26 05:46:01
【问题描述】:

我有电报机器人,我想在每次重启时自动运行它。我一直在使用 Screen 手动分离这个 python 脚本并将其留在后台。之前,我使用过 Screen 的命令 Ctrl+A 和 D 来分离会话。

我尝试学习一些屏幕命令,但似乎不起作用。到目前为止,这是我所拥有的:

#!/bin/sh
echo
cd "/home/mainuser/Documents/TelegramBot";
sleep 5
python3 telegram_bot.py

我已在 Documents/LaunchCommands 中将此设置为 command.sh。然后,在我的 crontab 中,我有:

@reboot screen -S TELEGRAM -X screen /home/mainuser/Documents/LaunchCommands/command.sh

但是当我重新启动计算机时,什么都没有运行。有什么可能出错的帮助吗?我希望拥有屏幕,打开名称为“TELEGRAM”的新会话,在该会话中启动该脚本,然后将其分离到后台,以便以后可以根据需要重新连接。有任何想法吗?感谢您的帮助!

您还可以提出一些其他想法,如何让这个 python 脚本以某种方式在后台运行,我仍然可以与之交互。

【问题讨论】:

  • 我不知道你为什么用screen这个
  • 首先尝试在cronjob 脚本中运行,该脚本在文本文件中写入一些数据,看看它是否真的有效。 IE。 date >> /home/mainuser/output.txt' crontab may need to use /full/path/to/script 和 `/full/path/to/python' 中的脚本
  • 嗨!我使用了 cronjob-script,它工作正常。至于@furas,我需要使用 Screen 或类似工具让脚本在后台运行。它正在等待有人为 Telegram 机器人发送消息,然后它会响应。
  • 您不需要screen 在后台运行某些东西。当您使用ssh 连接到服务器并手动运行代码并且您希望存在ssh(关闭所有已启动的程序)时,您可能需要sreen - 然后screen 继续运行会话。但是当您使用crontab 运行它时,您不需要继续运行会话 - 它不会关闭ssh 连接。
  • @furas,是的!这是我尝试做的一点。对我来说,在重新启动时启动一些东西会很好,当我通过 SSH 登录到我的服务器时,我可以在该过程中获取战利品并将其留在那里。

标签: python shell ubuntu gnu-screen


【解决方案1】:

好的,经过长时间的调试,并从其他地方询问,我是这样工作的:

在 crontab 中,我有一行:

@reboot sleep 5; /usr/bin/screen -dmS TELEGRAM /home/mainuser/Documents/LaunchCommands/command.sh &

而我的command.sh如下:

#!/bin/sh
echo
cd "/home/mainuser/Documents/TelegramBot";
python3 telegram_bot.py

现在一切都像魅力一样!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多