将 stdout 和 stderr 重定向到文件在 raspbian 上不起作用
Redirection of stdout and stderr to file not working on raspbian
我正在尝试将 STDOUT
和 STDERR
重定向到 raspberry pi 上的日志文件。
我的 .sh
脚本包含这一行
sudo ./main.py &> client.log &
脚本在与我的服务器之间传输数据时运行正确,但 client.log
文件仍然为空。我试过了&>
; &>>
; >>
与 2>&1
;和 |&
。 None 将任何数据写入 client.log
。
sudo ./main.py
产生 stdout
和 stderr
输出。我做错了什么?
您要查找的语法是:
sudo ./main.py > client.log 2>&1 &
> client.log
将标准输出重定向到文件 client.log
2>&1
将 stderr 重定向到 stdout
该行末尾的 &
在后台运行它,因此您可以在命令提示符下继续工作。
注意:如果您在后台命令为运行时注销,它将被杀死。您可以通过在行首添加 nohup
来覆盖此行为。更多信息 google bash jobs
已编辑以在下方评论后添加其他信息
修改后的语法:
sudo stdbuf -o L -e L ./main.py > client.log 2>&1 &
stdbuf
修改默认linux输出缓冲
-o L
在每行末尾刷新标准输出
-e L
在每行末尾刷新 stderr
python -u test.py > output.txt &
Python 默认情况下会缓冲您的输出,简单地终止脚本不会立即将该标准输出刷新到磁盘
我正在尝试将 STDOUT
和 STDERR
重定向到 raspberry pi 上的日志文件。
我的 .sh
脚本包含这一行
sudo ./main.py &> client.log &
脚本在与我的服务器之间传输数据时运行正确,但 client.log
文件仍然为空。我试过了&>
; &>>
; >>
与 2>&1
;和 |&
。 None 将任何数据写入 client.log
。
sudo ./main.py
产生 stdout
和 stderr
输出。我做错了什么?
您要查找的语法是:
sudo ./main.py > client.log 2>&1 &
> client.log
将标准输出重定向到文件 client.log2>&1
将 stderr 重定向到 stdout
该行末尾的 &
在后台运行它,因此您可以在命令提示符下继续工作。
注意:如果您在后台命令为运行时注销,它将被杀死。您可以通过在行首添加 nohup
来覆盖此行为。更多信息 google bash jobs
已编辑以在下方评论后添加其他信息
修改后的语法:
sudo stdbuf -o L -e L ./main.py > client.log 2>&1 &
stdbuf
修改默认linux输出缓冲-o L
在每行末尾刷新标准输出-e L
在每行末尾刷新 stderr
python -u test.py > output.txt & Python 默认情况下会缓冲您的输出,简单地终止脚本不会立即将该标准输出刷新到磁盘