Saya memiliki program Java executable yang dapat saya jalankan dengan mengetikkan java -jar abc.jar
terminal. Bagaimana saya bisa menjalankannya sebagai layanan? Saya ingin menjalankannya sebagai layanan seperti dengan mengetik service abc start
.
Saya memiliki program Java executable yang dapat saya jalankan dengan mengetikkan java -jar abc.jar
terminal. Bagaimana saya bisa menjalankannya sebagai layanan? Saya ingin menjalankannya sebagai layanan seperti dengan mengetik service abc start
.
Jawaban:
Pastikan Anda menggunakan 14,04. Ubuntu 16.04 (dan di atas) menggunakan systemd, bukan pemula.
Skrip pemula adalah file skrip yang ditempatkan di /etc/init/
dan diakhiri dengan .conf
.
Dibutuhkan 2 bagian: satu untuk menunjukkan kapan memulai, dan yang lain dengan perintah untuk mengeksekusi.
Skrip termudah untuk memulai dengan sampel Anda adalah:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Dibuat sebagai root di bawah /etc/init/myprogram.conf
.
Jika skrip Anda memerlukan lebih dari satu baris perintah, gunakan script
bagian alih-alih exec
baris:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Untuk mengaktifkan penyelesaian bash untuk layanan Anda, tambahkan symlink ke /etc/init.d
folder:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Kemudian coba mulai dan hentikan:
sudo service myprogram start
Menurut buku masak pemula , Anda dapat membuat pre-start
/ post-start
dan pre-stop
/ post-stop
perintah untuk dieksekusi.
Selain itu, saya membaca Anda ingin memeriksa apakah suatu proses sedang berjalan. Periksa pertanyaan ini dan mungkin gunakan pre-start
bagian ini.
sudo chmod +x /etc/init.d/myprogram
. PERHATIAN: metode Anda yang dijawab tidak berfungsi di Ubuntu 16.04!
Anda perlu membuat pemula. http://upstart.ubuntu.com/getting-started.html
Pemula adalah (IMHO) bencana dibandingkan dengan skrip init ol SysV yang baik. Pemula adalah JAUH lebih banyak upaya dengan sedikit terbalik ke pekerjaan yang ditambahkan. Dengan mengatakan itu, saya menduga akan ada beberapa bek pemula di luar sana yang akan membawa saya ke tugas bagi saya untuk menyatakan yang jelas ;-)