Назад | Перейти на главную страницу

как сохранить stderr и stdout в файл в ubuntu

когда я бегу

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

и содержимое "(stdin) = d41d8cd98f00b204e9800998ecf8427e" в error.log

Я хочу сохранить stdin с ошибкой (как сохранить текст ошибки терминала в error.log тоже)

Как я могу это сделать ?

Когда ты делаешь

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

единственный stderr второй команды openssl записывается в error.log. Использовать это:

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

так что оба процесса openssl запускаются в подоболочке, а stderr подоболочки перенаправляется вместе со стандартным выводом в error.log.

Использовать 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