2012-04-25 26 views
7

Tôi có hai tập lệnh trong môi trường Rails phải chạy 24/7. Tôi đang làm việc trên một máy chủ từ xa, vì vậy tôi cần phải bắt đầu các kịch bản sử dụng ssh, có nghĩa là tôi cần phải giữ cho các cửa sổ ssh mở tất cả các thời gian.Chạy tập lệnh ruby ​​ở chế độ nền mà không sử dụng màn hình

Tôi đang tìm kiếm một cách đơn giản để chạy các tập lệnh này trong nền để chúng không bị hủy ngay khi tôi đóng kết nối ssh.

Tôi không muốn sử dụng screen. Tôi nghĩ rằng phải có cách đơn giản hơn để xử lý việc này. Có phải không?

+1

Bạn đã nhìn vào vị thần và/hoặc monit? – d11wtq

Trả lời

20

Tôi nghĩ rằng giải pháp cơ bản nhất wo ULD được nohup:

nohup myscript &> /dev/null & 
+0

có điều này là hoàn hảo và chúng tôi có thể chuyển hướng đầu ra để đăng nhập tập tin qua: nohup ruby ​​myscript.rb> myscript.log & Tôi vừa thử nó với kịch bản ruby, và bạn cũng có thể kiểm tra xem nó chạy qua lệnh: ps - tên người dùng fu –

2

Kiểm tra Daemons. Nó là một bộ công cụ để chuyển đổi một kịch bản thành một daemon có thể điều khiển được.

4

Bạn có thể không thừa nhận một kịch bản:

ruby script.rb &! 

STDOUT/thiết bị lỗi chuẩn vẫn được gắn vào vỏ hiện tại, nhưng quá trình ruby không phải là một đứa trẻ của vỏ nữa, vì vậy nó sẽ không bị giết nếu bạn đóng terminal.

Các vấn đề liên quan