"Jan" == Jan Larsen <jan@snubi.dk> writes:
> Jan Larsen wrote:
>> Hej
>>
>> Hvad er forskelden på 2>&1 og /dev/null, og hvordan bruges de.
>> Er det ikke noget med at modtage mail fra et cron job hvis noget går galt
>> eller er jeg helt ved siden af :-/
>>
>> Mvh Jan
> Det jeg gerne vil er at få jobbet gjort uden at modtage mail, med mindre der
> er fejl eller jobbet ikke kan udføres.
Forudsat at der kun kommer output på stderr, hvis programmet fejler,
kan du nøjes med at stdout til /dev/null:
kommando > /dev/null
Hvis du også er interesseret i stdout fra jobbet eller er ligeglad
med stderr, hvis der ikke returneres en fejl, er du nødt til at wrappe
dit job i et script:
cat > wrap.sh << EOT;
#!/bin/sh
#
# Undertryk output fra en kommando, hvis den ikke fejler.
TMPFILE=`/bin/mktemp tmpoutXXXXXX`
${*} > ${TMPFILE} 2>&1 || cat ${TMPFILE}
rm ${TMPFILE}
EOT;
Det centrale element i ovenstående er den logiske operator "||". Hvis
kommandoen returnerer true, behøver sh ikke at udføre kommandoen efter
"||", da hele udtrykket allerede er sandt.
Gem ovenstående et sted i din path, og ret din crontab til, så du
kalder wrap.sh istedet for dit job direkte, som det ses i før og efter
eksemplet nedenfor.
00 00 * * * /usr/sbin/tmpwatch -fa 240 /tmp
00 00 * * * wrap.sh /usr/sbin/tmpwatch -fa 240 /tmp
--
/Wegge <
http://outside.bakkelygaard.dk/~wegge/>