如何解决为什么当我关闭 ssh bash 窗口时,我使用 selenoid 的 bot.py 代码没有在 ubuntu 服务器上运行?
我在本地机器上设置了一个 ubuntu 服务器,我在该服务器上使用 ssh bash 终端运行 bot.py 代码。我的 bot.py 从我的联系人中获取 url,并使用 docker 和 selenoid 访问网页。我已经设置了 docker 和 selenoid,它们运行良好。当我跑步时:
$result = User::select(
'id',// must include keys required for relationships
'name AS full_name','email AS user_email',DB::raw("'Student' as profile")
)
->where('age','>',10)
->with('phone')
->get();
[在 myscript_ro_run_bot.sh 中]:
$ sudo ./myscript_ro_run_bot.sh
(我有 5 个 bot.py 文件)
我可以在 Telegram 的本地机器消息上看到 (myscript_ro_run_bot.sh) 做得很好,网站已被访问,我得到了奖励。即使在本地机器上 (myscript_ro_run_bot.sh) 也可以 24/7 小时(无限期)运行。但我想 24/7 小时在服务器上运行。问题是当我关闭 ssh bash 窗口管理器时,我在本地机器 Telegram 上看到什么也没发生,我没有收到消息。当我在 5 或一个小时后再次使用 ssh 连接到我的服务器时,这是一个技巧,只有在重新连接后我才开始接收电报消息。我可以使用命令看到在服务器中运行的作业:
#!/bin/bash
while true
do
echo "running bot.py"
nohup sudo python3 bot.py # nohup to run at background
wait
echo "bot.py finished"
echo "running bot1.py"
nohup sudo python3 bot1.py
wait
echo "bot1.py finished"
.....
echo "runnning bot5.py"
nohup sudo python3 bot5.py
sleep 10m
done
我的命令 $ htop
正在运行
当我使用:
sudo python3 bot.py
$ sudo crontab -e
重启后我用 ssh 连接到服务器并从 myscrit_to_run_bot.log 得到结果:
@reboot /home/user/myscript_ro_run_bot.sh >> /home/user/myscrit_to_run_bot.log
但是我在重新连接后没有收到任何电报消息。 虽然我手动运行脚本并重新连接到服务器,但我会收到电报消息。
谁能帮我解决这个问题?即使我关闭了 ssh bash 终端,我也希望 running bot.py
bot.py finished
running bot1.py
bot1.py finished
running bot3.py
运行。
如果您希望我提供更多详细信息,请同时写下 sudo ./myscript_ro_run_bot.sh
(详细说明),因为我是编码和 linux 方面的新手。
感谢您的帮助
解决方法
尝试使用 screen
或 tmux
来启动您的进程 https://wiki.archlinux.org/title/Tmux
- 运行
tmux
- 运行
./your_program
- 输入
ctrl+b
,然后输入d
此后,您的进程将在后台运行,您可以关闭 ssh-connection。
当你需要回来时,你可以运行 tmux attach
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。