所以,我有一个 python 脚本,它不时将一些数据输出到终端。即使在关闭 SSH 连接并且仍将日志保存在某处后,我仍试图在 Ubuntu VPS 上运行。
我使用以下方法保存日志:
python3 my_script.py >>file.txt
它运行完美,但是当我尝试使用
nohup python3 my_script.py >>file.txt &
所以它在后台运行,在 ssh 连接关闭后,它似乎只保存了从 my_script.py 输出的第一个日志。我也尝试在 crontab 中运行它,但结果相似——只保存了第一个日志。
有小费吗?我究竟做错了什么?
最佳答案
我不明白你的意思是“第一个日志”。也许第一行日志?
要在 SSH 连接关闭时在后台运行某些东西,我更喜欢 Linux screen
,一个终端模拟工具,帮助你在子进程中运行你的命令。有了它,您可以选择在前台随时查看您的输出,或者让您的进程在后台运行。
用法(短)screen
不包含在大多数 Linux 发行版中。安装它(Ubuntu):
$ sudo apt-get install screen
在前台运行您的脚本:
$ screen python3 my_script.py
你会看到它在运行。现在从这个屏幕分离:按键
Ctrl-A
后跟 Ctrl-D
.您将回到您的 shell,在其中运行之前的 screen
命令。如果需要切换回正在运行的上下文,请使用 screen -r
命令。该工具也支持多个并行运行进程。
奇怪的东西
我尝试重定向
stdout
或 stderr
到带有 >
的文件或 >>
象征。结果是失败了。我也不是这方面的专家,也许您需要查看它的手册页。但是,我倾向于直接在 Python 脚本中写入文件,在控制台上有一些基本的输出行。
关于python - 在ubuntu VPS上后台运行python脚本并保存日志的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58619579/