Làm cách nào để chạy tác vụ cào trong cron dưới một người dùng khác?


2

Tôi đang cố gắng chạy một tập lệnh sao lưu trên Ubuntu. Vấn đề của tôi là tôi đang cố gắng thực hiện điều này bằng tài khoản người dùng postgres mà tôi thiết lập trên Ubuntu. Tôi tin rằng tài khoản này chạy các công việc định kỳ là tốt nhất vì đó là tài khoản chung và tôi nên rời khỏi công ty một ngày nào đó ít nhất họ sẽ không phải lo lắng về bất kỳ công việc định kỳ nào có thể bị hủy nếu họ hủy tài khoản người dùng của tôi tuy nhiên, trên máy chủ, tôi gặp khó khăn khi hoạt động này chủ yếu vì tài khoản người dùng postgres của tôi không thể nhìn thấy cùng một môi trường ruby ​​(tôi nghĩ).

Tôi đang chạy rvm để kiểm soát môi trường ruby ​​của mình và sau khi thêm đường dẫn trực tiếp vào gói, trong cài đặt rvm, tôi vẫn gặp lỗi. Tôi đang ở một điểm mà tôi không biết phải làm gì khác.

Lỗi:

/home/my_personnel_account/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)
from /home/my_personnel_account/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /home/my_personnel_account/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /home/my_personnel_account/.rvm/gems/ruby-1.9.3-p194@global/bin/bundle:22:in `<main>'
ruby  cron  rvm  bundle 

rvm tại nhà không tốt cho những tình huống như thế này. Thay vào đó, sẽ tốt hơn nếu bạn cài đặt rvm trên toàn hệ thống để tất cả người dùng có cùng một môi trường theo mặc định.
Casper

@Casper Tôi đã nghĩ đến việc thực hiện cài đặt rvm nhiều người dùng nhưng đọc rằng chúng là vấn đề bảo mật khi thực hiện điều đó. Không phải là một chuyên gia bảo mật là đủ để tôi không đi theo con đường đó.

Câu trả lời:


3

Có hai lựa chọn:

Đầu tiên - thêm công việc định kỳ cho người dùng đó:

crontab -e -u otheruser

Thứ hai - sử dụng su / sudo để thực thi lệnh trong tài khoản khác.

sudo -u otheruser command

Đảm bảo bạn đã xác định tất cả các biến môi trường bắt buộc - như PATH, GEM_HOME, GEM_PATH.


Thêm các biến môi trường là những gì đã làm cho tôi ... cảm ơn @taro

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.