Редиректори Linux не записують помилок. Чи має Linux еквівалент Windows '2> & 1?


0

Я запускаю наступний файл з > log.logпереспрямувачем, і він не фіксує помилок.

#!/bin/bash

echo ************************BEGIN LOG******************************
date +"%m/%d/%Y %H:%M:%S $HOSTNAME"
cp -f /scripts/original/clamscans.log /scripts
find /public/public/clamscans/. -exec grep -n FOUND /dev/null {} \;>>clamscans.log
mail somedude@someplace.com < clamscans.log
tar cvf dailyresults.tar /public/public/clamscans/*.txt
gzip -f dailyresults.tar
mv -f /public/public/clamscans/*.txt /scripts/lastnite
echo end log entry

Наступні помилки з'являються під час запуску з файлу з вікна терміналу, але вони не записуються в log.log:

tar: /public/public/clamscans/*.txt: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
mv: cannot stat `/public/public/clamscans/*.txt': No such file or directory

Що я роблю неправильно? Я знаю, що в Windows ви можете додати дані 2>&1про помилки зйомки. Чи є таке для Linux?


command &> filenameщоб перенаправити як stdout, так і stderr на файл з назвою filename.

2
Я думаю, що саме Windows у певний момент отримала перенаправлення, подібне до наявного в оболонці UNIX, а не навпаки.
Мартін Ліверсайз

2
Найсмішніше, що я не мав ідеї, що 2>&1працював над вікнами, тому подумав, що спочатку я неправильно прочитав питання Мораль історії: іноді еквівалент в інших ОС однаковий.
Карл Білефельдт

Відповіді:


3

Дескриптор файлу 1 - stdout, 2 - stderr. Це стосується як Linux, так і Windows. За допомогою "> logfile" ви перенаправляєте stdout у файл "logfile", але те, що ви насправді хочете, - це перенаправити stderr. Це можна зробити за допомогою "2> імені файлу" або "2> & 1" (у поєднанні з "> logfile") для Windows і Linux, але зауважте, що порядок може бути важливим, тому він повинен бути "команда> logfile 2> & 1 ", а не навпаки.


Я дурно вважав, що це не може бути таким простим. Однак він працює так само, як Windows. Я здивований, що хтось не спалахнув мене за це. Сподіваюся, я просто не дав комусь ідею ... Дякую.

2
Принаймні одна різниця залишається, тобто коли потрібно відмовитися від більш жорсткого. З Unix ви працюєте в 2>/dev/nullтой час, як 2>nulви працюєте з Windows - якщо ви не використовуєте cygwinчи інші.
ott--

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.