tôi có các mục sau đây trong crontab:Chuyển hướng đầu ra của một công việc cron
0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb 2>&1 > ./log/my_log.log'
Kết quả của việc này là tôi nhận được đầu ra của ./script/my_script.rb
trong ./log/my_log.log
. Hành vi này là mong muốn. Điều gì là tò mò là tôi cũng nhận được đầu ra trong thư địa phương của tôi. Tôi tự hỏi làm thế nào đầu ra của kịch bản của tôi đang bị bắt bằng thư. Vì tôi đang chuyển hướng đầu ra tới một tệp nhật ký, tôi hy vọng rằng công việc cron của tôi sẽ không có đầu ra, và do đó tôi sẽ không nhận được thư khi công việc cron chạy. Bất cứ ai có thể tiết lộ một số ánh sáng như thế nào thư có thể để có được sản lượng của ./script/my_script.rb
?
N.B. bạn cũng có thể sử dụng '&>' để chuyển hướng cả hai cùng một lúc. Nó hoạt động trong zsh và bash. – Kevin
Tôi đã bị ấn tượng rằng cú pháp của tôi đã chuyển hướng stderr thành stdout và stdout vào tệp nhật ký của tôi, phải không? Bạn có thể giải thích thêm một chút không? Cảm ơn đã giúp đỡ. –
Bạn đã chuyển hướng stderr tới bất cứ nơi nào xuất hiện (ví dụ:/dev/stdout), và sau đó stdout vào tệp nhật ký của bạn. Stderr không thay đổi sau khi chuyển hướng thứ hai. Nó vẫn đang đi đến/dev/stdout. – dogbane