Chạy Jar trong nền trên Linux


11

Tôi có một cái bình chạy mãi mãi (vòng lặp vô hạn với luồng nghe socket) và cần nó chạy ở chế độ nền mọi lúc. Một ví dụ sẽ là: "java -jar test.jar" Làm thế nào để tôi làm điều này? Cảm ơn trước!

Câu trả lời:


8

một số cách:

  1. nối &ở phía sau. Tuy nhiên, bằng cách này, chương trình sẽ vẫn bị chấm dứt nếu bạn đóng thiết bị đầu cuối khởi động chương trình.

  2. Bắt đầu một screenphiên, và bắt đầu chương trình bên trong nó; bạn có thể tách screenphiên và đóng thiết bị đầu cuối. Sau đó, bạn có thể đính kèm lại phiên và thấy mình quay lại bảng điều khiển như thể bạn đã ở đó suốt. Tuy nhiên, bạn sẽ cần bắt đầu một phiên màn hình trước khi chạy chương trình và nếu bạn quên làm điều đó, bạn không thể làm gì về nó.

  3. Sử dụng disownkiểm soát công việc từ vỏ của bạn. Điều này sẽ tách nhiệm vụ khỏi tty của bạn và chương trình của bạn sẽ không bị chấm dứt khi tty bị đóng. Tuy nhiên, tôi không nghĩ có cách nào để gắn lại một công việc bị từ chối.


12

Một dấu nhắc dòng lệnh tôi đã luôn sử dụng trong thời gian dài để kéo dài qua đăng xuất là "nohup" vì vậy trong trường hợp của bạn là

nohup java -jar test.jar &

& Là quan trọng để bạn có thể chạy shell khác. Tôi tin rằng điều này sẽ không kéo dài thông qua khởi động lại.


7

Nếu bằng "mọi lúc", bạn có nghĩa là nó được khởi động khi máy khởi động, bạn sẽ cần khởi động nó như một phần của tập lệnh thời gian khởi động. Cách bẩn để làm điều này là thêm

java -jar test.jar> / dev / null 2> & 1 &

đến /etc/rc.local (hoặc thay thế / dev / null bằng tệp nhật ký yêu thích của bạn).

Tốt hơn là tạo một tập lệnh init.d được bắt đầu tại các đường chạy thích hợp (ví dụ, bạn có thể không muốn nó chạy trên runlevel 0, 1 hoặc 6). Bằng cách đó, bạn cũng có thể tự động khởi động lại nếu nó chết và có giao diện đẹp hơn để tạm thời dừng nó.

Các ví dụ nhỏ tại http://www.howtoforge.com/forums/archive/index.php/t-3628.html

Giải thích lớn tại http://developer.novell.com/wiki/index.php/Writing_Init_Scripts


một khả năng khác, nếu bạn muốn nó chạy chỉ với perm người dùng là đặt nó vào cron và sử dụng '@reboot' làm thời gian để chạy. Xem 'man 5 crontab' để biết chi tiết.
pjz

3
java -jar test.jar &

Toán tử & sẽ buộc quá trình chạy trong nền, bạn có thể chạy lệnh 'top' sau đó để thấy rằng nó đang chạy.


1

Bạn có thể chạy bất kỳ tác vụ nào trong nền trên Linux bằng cách thêm biểu tượng '&' vào cuối dòng lệnh, ví dụ:

java -jar test.jar &


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.