Tôi có một tập lệnh ruby kết nối với một thùng S3 của Amazon và tải xuống bản sao lưu sản xuất mới nhất. Tôi đã thử nghiệm kịch bản (rất đơn giản) và nó hoạt động tốt.Công việc Cron không thể tải đá quý
Tuy nhiên, khi tôi lên lịch tập lệnh này để chạy dưới dạng công việc cron có vẻ như nó không thành công khi nó tải đá quý Amazon (aws-s3).
Một vài dòng đầu tiên của kịch bản của tôi trông như thế này:
#!/usr/bin/env ruby
require 'aws/s3'
Như tôi đã nói, khi tôi chạy kịch bản này bằng tay, nó hoạt động tốt. Khi tôi chạy nó thông qua một công việc định kỳ theo lịch trình, nó không thành công khi nó cố gắng để tải đá quý:
'đòi hỏi': không có tập tin để tải - AWS/s3 (LoadError)
Các crontab cho kịch bản này trông như thế này:
0 3 * * * ~/Downloader/download.rb > ~/Downloader/output.log 2>&1
tôi ban đầu nghĩ rằng nó có thể là do cron đang chạy như một người dùng khác nhau, nhưng khi tôi làm một 'whoami' vào lúc bắt đầu của kịch bản ruby của tôi nó nói với tôi nó chạy là cùng một người dùng mà tôi luôn sử dụng.
Tôi cũng đã thực hiện một gói init và thêm đá quý vào gemfile của tôi, nhưng điều này dường như không có bất kỳ ảnh hưởng nào.
Tại sao cron không tải đá quý? Tôi đang chạy Ubuntu.
Hóa ra tôi cần cài đặt rubygem trong vỏ đó. Điều này đã giúp tôi theo dõi nó. –