Jalankan Jar di Background di Linux

12

Saya memiliki toples yang berjalan selamanya (infinite loop dengan soket mendengarkan thread) dan membutuhkannya berjalan di latar belakang setiap saat. Contohnya adalah: "java -jar test.jar" Bagaimana saya melakukan ini? Terima kasih sebelumnya!

Benny
sumber

Jawaban:

8

beberapa cara:

  1. menambahkan &di belakang. Namun, menggunakan ini, program masih akan dihentikan jika Anda menutup terminal yang memulai program.

  2. Mulai screensesi, dan mulai program di dalamnya; Anda dapat melepaskan screensesi dan menutup terminal. Kemudian, Anda dapat melampirkan ke sesi lagi dan menemukan diri Anda kembali pada konsol seolah-olah Anda sudah berada di sana selama ini. Namun, Anda harus memulai sesi layar sebelum menjalankan program, dan jika Anda lupa melakukannya, Anda tidak dapat melakukan apa-apa.

  3. Gunakan disownkontrol pekerjaan dari shell Anda. Ini akan melepaskan tugas dari tty Anda dan program Anda tidak akan dihentikan ketika tty ditutup. Namun, saya tidak berpikir ada cara untuk memasang kembali pekerjaan yang tidak diakui.

Lie Ryan
sumber
13

Prompt baris perintah yang selalu saya gunakan untuk jangka waktu yang lama untuk bertahan melalui logoff adalah "nohup" jadi dalam kasus Anda adalah

nohup java -jar test.jar &

& Penting agar Anda dapat menjalankan shell lain. Saya percaya ini tidak akan bertahan melalui reboot.


sumber
7

Jika dengan "setiap saat", Anda bermaksud memulai ketika mesin melakukan boot, Anda harus memulainya sebagai bagian dari skrip boot-time. Cara kotor untuk melakukan ini adalah menambahkan

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

ke /etc/rc.local (atau ganti / dev / null dengan file log favorit Anda).

Lebih baik membuat skrip init.d yang dimulai pada runlevel yang sesuai (misalnya, Anda mungkin tidak menginginkannya di runlevel 0, 1 atau 6). Dengan begitu, Anda juga dapat mengaktifkannya kembali secara otomatis jika mati dan memiliki antarmuka yang lebih baik untuk menghentikannya sementara.

Contoh-contoh kecil di http://www.howtoforge.com/forums/archive/index.php/t-3628.html

Penjelasan besar di http://developer.novell.com/wiki/index.php/Writing_Init_Scripts


sumber
kemungkinan lain, jika Anda ingin dijalankan hanya dengan perms pengguna adalah meletakkannya di cron dan menggunakan '@reboot' sebagai waktu untuk menjalankan. Lihat 'man 5 crontab' untuk detailnya.
pjz
3
java -jar test.jar &

& Operator akan memaksa proses untuk berjalan di latar belakang, Anda dapat menjalankan perintah 'atas' setelah itu untuk melihat bahwa itu sedang berjalan.


sumber
1

Anda dapat menjalankan tugas apa pun di latar belakang di Linux dengan menambahkan simbol '&' di akhir baris perintah, misalnya

java -jar test.jar &

sumber
1

Masukan &di akhir:java -jar test.jar &

František Žiačik
sumber