我想保存我的程序通过print显示的所有消息,在这种情况下main.py
我曾尝试在我的 中执行以下操作crearlog.sh
,并且当我使用./crearlog.sh
#!/bin/bash
python main.py >> logextraccion.log
但是当我在后台运行时,./crearlog.sh &
文本并没有保存在日志中。为什么会发生这种情况,我该如何解决?
补充一点,我不想修改我的程序main.py
,但是crearlog.sh
。
我想在后台执行此操作的原因是因为我正在使用 ssh 连接到远程服务器。
你好,你应该做的是,除了重定向标准输出(stdout),重定向标准错误(stderr)。
您可以通过多种方式执行此操作。一种方法是问题评论中指出的方法。
你告诉stdout去
2>&1
stdout(对不起绕口令),最后一个&
是因为你希望它在后台运行。更清洁的方法是:
与
&>
您一起表明您正在重定向两个输出。如果你想你可以做相反的事情,发送
stdout
到stderr
(标准输出到标准错误)。你这样做(我把它作为一个例子,因为它不适用于你的情况):
在本文中,您可以看到各种形式的重定向。
在这种情况下,最好使用
nohup
,因为除其他外,即使您已断开会话,执行也会继续。这将在后台启动程序,所有输出都将存储在
nohup.out
要检查程序是否正在运行,您可以使用
有关更多信息
nohup
我建议如果您使用通过 ssh 连接到远程服务器的连接,除了提供的解决方案之外,您还需要熟悉screen程序(或byobu),它将允许您断开连接并重新连接以维护您的用户会话并能够恢复你离开的地方,尤其是持续时间很长的进程,并且连接断开会导致进程和会话一样断开。
基本用法很简单:
它将启动一个新会话,您可以在那里启动您的脚本。您按“Ctrl + a d”,断开与这些会话的连接,您可以关闭 ssh 连接,稍后重新连接,您可以通过 ssh 访问,您只需编写:
瞧。
注意:您可以根据需要打开任意数量的屏幕会话,然后 -r 会要求您指定所需的屏幕会话。