【发布时间】: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