Ich > log.log
führe die folgende Datei mit dem Redirector aus, und es werden keine Fehler erfasst.
#!/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 [email protected] < 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
Die folgenden Fehler werden angezeigt, wenn ich aus der Datei im Terminalfenster starte, aber nicht in diese Datei geschrieben werde 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
Was mache ich falsch? Ich weiß, mit Windows kann man die 2>&1
Fehlerdaten erfassen. Gibt es so etwas für Linux?
linux
redirection
Treibgut N. Jetsam
quelle
quelle
command &> filename
um sowohl stdout als auch stderr in die genannte Datei umzuleitenfilename
.2>&1
, ob ich an Windows gearbeitet habe, also dachte ich, ich hätte die Frage zuerst falsch gelesen. Moral der Geschichte: Manchmal ist das Äquivalent im anderen Betriebssystem identisch.Antworten:
Dateideskriptor 1 ist stdout, 2 ist stderr. Dies gilt sowohl für Linux als auch für Windows. Mit "> logfile" leiten Sie stdout in die Datei "logfile" um, aber Sie möchten eigentlich stderr umleiten. Dies kann sowohl unter Windows als auch unter Linux mit "2> Dateiname" oder "2> & 1" (in Kombination mit "> Protokolldatei") durchgeführt werden. Beachten Sie jedoch, dass die Reihenfolge möglicherweise von Bedeutung ist und daher "Befehl> Protokolldatei 2>" lauten sollte & 1 "und nicht umgekehrt.
quelle
2>/dev/null
während Sie es mit Windows tun2>nul
- es sei denn, Sie verwendencygwin
oder andere.Sie können Standardfehler in eine Datei wie diese umleiten:
und Sie können die folgende Syntax verwenden, um sowohl die Standardausgabe als auch den Standardfehler in eine Datei umzuleiten :
oder
quelle