Mam następujący wpis w crontab:Przekierowanie wyjścia crona
0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb 2>&1 > ./log/my_log.log'
Wynikiem tego jest to, że otrzymuję wyjście ./script/my_script.rb
w ./log/my_log.log
. Takie zachowanie jest pożądane. Co ciekawe, otrzymuję również dane wyjściowe w mojej lokalnej poczcie. Zastanawiam się, jak wyniki mojego skryptu są przechwytywane przez pocztę. Ponieważ przekierowuję dane wyjściowe do pliku logu, oczekiwałbym, że moje zadanie cron nie będzie miało wyjścia, a zatem nie otrzymam poczty po uruchomieniu zadania cron. Czy ktoś może rzucić trochę światła na to, jak poczta może uzyskać wyjście z ./script/my_script.rb
?
N.B. możesz również użyć '&>', aby przekierować obie naraz. Działa w zsh i bash. – Kevin
Odnosiłem wrażenie, że moja składnia przekierowała stderr na stdout i stdout do mojego pliku logu, nie? Czy możesz wyjaśnić nieco dalej? Dzięki za pomoc. –
Twój przekierowany stderr do miejsca, w którym działał stdout (tj./Dev/stdout), a następnie stdout do pliku logu. Stderr nie zmienia się po drugim przekierowaniu. Nadal będzie to/dev/stdout. – dogbane