stdout, stderr и регистрирующий использование команды сценария

Журналирование является техникой, которая помогает с восстановлением после проблем, которые происходят, когда мультиоперации записи прерваны. Такие прерывания могут оставить файловую систему в непоследовательном состоянии между записями.

Прерывания могут произойти с "нормальными" блочными устройствами и блочными устройствами dm-склепа одинаково. Для файловой системы блочное устройство является блочным устройством. Система шифрования блочного устройства и журналирование файловой системы являются абсолютно отдельными проблемами.

1
24.12.2012, 05:38
2 ответа

Если Ваш вопрос, "как делают я подавляю вывод stderr от команды", ответ будет чем-то вроде:

command 2> /dev/null

Это перенаправит stderr (иначе дескриптор файла 2) к /dev/null, который просто отбрасывает что-либо, что это получает.

Однако rm управляйте поддерживает -f флаг, который будет препятствовать тому, чтобы он произвел сообщение об ошибке, если файл не будет существовать:

$ rm file_that_does_not_exist
rm: file_that_does_not_exist: No such file or directory
$ rm -f file_that_does_not_exist
$
2
27.01.2020, 23:29
  • 1
    Спасибо за Ваш ответ, но нет. Я не хочу подавлять stderr. Я просто хочу скрыться, это от разоблачения на терминале, но хотеть это вошло в систему мой файл журнала. флаг-f не будет работать ни один как снова, я должен видеть ошибку в файле журнала. –  Codrguy 18.02.2012, 01:35
  • 2
    В этом случае Вы хотите script -c remove.log 'your command' > /dev/null. script команда получит stdout и stderr к Вашему файлу журнала и перенаправлению подавит весь терминальный вывод от script команда. –  larsks 18.02.2012, 02:06

script излишество для этого. Да это работает, но это не то, для чего был сделан сценарий. Сценарий используется для приложений, которые получают доступ к TTY непосредственно и не используют STDOUT/STDERR.

Можно легко выполнить это с основным перенаправлением оболочки.

./remove.sh &> remove.log
1
27.01.2020, 23:29

Теги

Похожие вопросы