python - 在ubuntu VPS上后台运行python脚本并保存日志的方法

标签 python bash ubuntu cron nohup

所以,我有一个 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命令。

该工具也支持多个并行运行进程。

奇怪的东西

我尝试重定向 stdoutstderr到带有 > 的文件或 >>象征。结果是失败了。我也不是这方面的专家,也许您需要查看它的手册页。但是,我倾向于直接在 Python 脚本中写入文件,在控制台上有一些基本的输出行。

关于python - 在ubuntu VPS上后台运行python脚本并保存日志的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58619579/

相关文章:

linux - 使用 awk 命令用逗号替换双引号 csv 文件中的管道

bash - 形式 "for i in {1..171}"的循环不起作用(仅循环一次,使用 i ='{1..171}' )

ubuntu - 在谷歌云平台上连接 ssh 时出错

python - 在 SQLAlchemy 中使用连词进行查询

python - 向量化此非唯一键操作

bash - Unix 循环变量

ubuntu - 在 ubuntu pycharm 中我找不到 anaconda 包

python - 即使安装包后也无法导入

python - LAST_INSERT_ID() 减一

python - 用于检查矩阵中行/列中的 5 的更好算法