2011-12-01 4 views
45

Tôi muốn chạy một số chương trình Java trong nền khi hệ thống khởi động trong Ubuntu. Tôi đã cố gắng để thêm một kịch bản trong thư mục /etc/init.d nhưng không thành công để bắt đầu một chương trình. tức là các chương trình không được bắt đầu. Tôi nên làm gì cho điều đó?Làm thế nào để chạy một kịch bản khi khởi động Ubuntu?

+1

Nên được chuyển đến http://askubuntu.com/ –

+1

hoặc chuyển sang superuser –

Trả lời

69

Trước hết, cách dễ nhất để chạy mọi thứ khi khởi động là thêm chúng vào tệp /etc/rc.local.

Một cách đơn giản khác là sử dụng @reboot trong crontab của bạn. Đọc manpage cron để biết chi tiết.

Tuy nhiên, nếu bạn muốn làm mọi thứ đúng cách, ngoài việc thêm tập lệnh vào /etc/init.d, bạn cần phải thông báo cho ubuntu khi tập lệnh được chạy và với thông số nào. Điều này được thực hiện với lệnh update-rc.d tạo liên kết tượng trưng từ một số thư mục /etc/rc* đến tập lệnh của bạn. Vì vậy, bạn cần phải làm điều gì đó như:

update-rc.d yourscriptname start 2 

Tuy nhiên, init script thực có thể xử lý nhiều tùy chọn dòng lệnh và tích hợp với quá trình khởi động. Các tập tin /etc/init.d/README có một số chi tiết và con trỏ xa hơn.

+0

Nhưng tệp java của tôi nên được đặt ở đâu? Tôi đã tạo ra chương trình java đơn giản với vòng lặp vô hạn. sau đó lệnh javac và java được đặt trong /etc/rc.local sau đó tôi đã khởi động lại hệ thống của mình nhưng chương trình không chạy. phải làm gì? –

+0

Cảm ơn bạn đã hoàn thành. Tôi đã tạo ra một dịch vụ trong /etc/init.d và sau đó bắt đầu dịch vụ trong rc.local. –

+0

'rc-update' không tồn tại trong Ubuntu. Sử dụng 'update-rc.d start 'stop NN runlevel [runlevel]' thay thế. Thay thế ' 'bằng tên tập lệnh của bạn,' NN' với thứ tự mà tập lệnh chạy (trong runlevel được chỉ định). Xem http://en.wikipedia.org/wiki/Runlevel#Debian_Linux để biết thêm thông tin về các mức chạy trong Ubuntu/Debian –