如何在 ubuntu 中将 stderr 和 stdout 保存到文件中

如何在 ubuntu 中将 stderr 和 stdout 保存到文件中

当我跑步时

echo "invalid crt" | openssl x509 -noout -modulus | openssl md5 &>> error.log

这显示以下错误

unable to load certificate
139903857870496:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

并且 error.log 中的内容为“(stdin)= d41d8cd98f00b204e9800998ecf8427e”

我想保存带有错误的标准输入(如何将终端错误文本保存到 error.log 中)

我怎样才能做到这一点 ?

答案1

当你这样做

echo "invalid crt" | openssl x509 -noout -modulus | openssl md5 &>> error.log

只有第二个 openssl 命令的 stderr 才会写入 error.log。使用以下命令:

echo "invalid crt" | (openssl x509 -noout -modulus | openssl md5) &>> error.log

这样两个 openssl 进程都在子 shell 中运行,并且子 shell 的 stderr 与 stdout 一起重定向到 error.log。

答案2

使用cmd &> file.log

$ blahblah &> /tmp/blah.log
$ echo $?
127
$ cat /tmp/blah.log 
bash: blahblah: command not found

要附加,请使用cmd >>file.log 2>&1

$ wrongcmd >>/tmp/blah.log 2>&1
$ cat /tmp/blah.log 
bash: blahblah: command not found
bash: wrongcmd: command not found

相关内容