Pertanyaan Cara membuat layanan di Ubuntu Upstart


Saya memiliki program Java executable yang bisa saya jalankan dengan mengetik java -jar abc.jar di terminal. Bagaimana saya bisa menjalankannya sebagai layanan? Saya ingin menjalankannya sebagai layanan seperti dengan mengetik service abc start.


20
2017-09-30 14:21


asal


Jawaban yang lebih lengkap ada di sini: unix.stackexchange.com/questions/1924/… Pada dasarnya, di Ubuntu Anda dapat membuat skrip untuk /etc/init.d yang dapat memulai / menghentikan / me-restart layanan Anda. - Mr Ed


Jawaban:


Pastikan Anda ada di 14.04. Ubuntu 16.04 (dan di atas) menggunakan systemd, bukan Upstart.

Skrip Upstart adalah file skrip yang ditempatkan di /etc/init/ dan berakhir .conf.

Diperlukan 2 bagian: satu untuk menunjukkan kapan harus mulai, dan yang lain dengan perintah untuk dieksekusi.

Script paling mudah 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 membutuhkan lebih dari satu baris perintah, gunakan script bagian bukan exec garis:

# 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 dalamnya /etc/init.d map:

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 membuatnya pre-start/post-start dan pre-stop/post-stop perintah untuk dieksekusi.

Selain itu, saya membaca Anda ingin memeriksa apakah suatu proses sedang berjalan. Memeriksa pertanyaan ini dan mungkin menggunakan pre-start bagian.


37
2018-04-16 12:01



Mungkin Anda perlu membuatnya bisa dieksekusi sudo chmod +x /etc/init.d/myprogram. PERHATIAN: metode jawaban Anda tidak berfungsi di Ubuntu 16.04! - juliocesar
@juliocesar 16.04 menggunakan systemd, bukan Upstart. - Rael Gugelmin Cunha
start on bukan bait yang diperlukan. Seperti yang Anda baca sini: Pekerjaan seperti itu hanya dapat dikendalikan oleh Administrator. - SuB
@SuB yeap, tetapi kemudian pekerjaan itu tidak akan dimulai secara otomatis, dan sudah jelas bahwa penulis pertanyaan menginginkan sesuatu yang bertindak seperti layanan, yaitu, dimulai secara otomatis. - Rael Gugelmin Cunha
Ya. Aku tahu. baru saja menambahkan komentar untuk melengkapi jawaban Anda. - SuB


Anda perlu membuat pemula. http://upstart.ubuntu.com/getting-started.html

Upstart adalah (IMHO) bencana dibandingkan dengan skrip init ol yang baik. Upstart adalah upaya yang jauh lebih besar dengan sedikit peningkatan pada pekerjaan yang ditambahkan. Dengan itu, saya menduga akan ada beberapa pemain bertahan pemula di luar sana yang akan membawa saya ke tugas untuk menyatakan yang jelas ;-)


0
2017-09-30 14:35



Ini hanya file di /etc/init/yourservice.conf dengan garis yang menunjukkan kapan harus mulai, dan yang lain ke perintah exec. Fedora juga menggunakan pemula. Selain itu, bahkan Debian mengubah skema awalnya ke SystemD, yang akan menjadi skema Ubuntu di masa depan. - Rael Gugelmin Cunha