Ingin membuat skrip pemula; butuh bantuan dan saran

13

Atm, saya harus memulai dan menghentikan (karena tidak ada kata yang lebih baik dalam pikiran saya) secara acak. Saya memulainya dengan mengetik java -jar foo.jardan untuk menghentikannya mencari tahu pid dan membunuhnya. Membunuh itu tidak menyebabkan kehilangan data atau korupsi atau apa pun, hanya FYI. Sangat membosankan untuk melakukan kedua langkah ini karena perintah pertama harus dijalankan dari direktori tertentu, yaitu /usr/share/jetty(Pembunuhan dapat dieksekusi dari mana saja).

Jadi saya sedang memikirkan sesuatu

service foo startdan service foo stopuntuk memulai dan menghentikan layanan. Apakah itu mungkin, dan yang lebih penting benar? Apakah ada solusi lain?

Terima kasih.

theTuxRacer
sumber

Jawaban:

13

Ya Pemula adalah pilihan yang cukup bagus untuk ini. Cukup buat file baru:

sudoedit /etc/init/my-jetty-jar.conf

Anda dapat mengubah nama file menjadi apa pun yang Anda suka tetapi kemudian menempelkan ini di dalamnya:

description     "Run my jetty jar"

# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]

# if you want it to automatically restart if it crashes, leave the next line in
respawn

script
    cd /usr/share/jetty
    su -c "/usb/bin/java -jar /path/to/foo.jar" nobody
end script

Beberapa catatan tentang itu, saya tidak punya susiapa-siapa untuk keamanan. Anda mungkin memerlukannya untuk sumasuk ke akun lain, tetapi mungkin tidak disarankan untuk berjalan seperti itu root.

Oli
sumber
Apakah perlu memulai kembali agar perubahan diterapkan? update-rc.dtidak bekerja /
theTuxRacer
Anda tidak perlu update-rc.duntuk pekerjaan pemula.
Oli
pemula jam tangan / etc / init menggunakan inotify, jadi umumnya tahu tentang semua pengeditan ke file di bawahnya. Tidak perlu melakukan apa pun kecuali 'mulai guci-ku'. Oh, dan @Oli, Anda pasti dapat memiliki pekerjaan tanpa memulai. Perhatikan bahwa berhenti di runlevel [! 2345] mungkin ditandai di masa depan sebagai cara yang buruk untuk menghentikan sesuatu (karena itu tidak menjamin bahwa mereka akan berhenti sebelum sistem file dilepas)
SpamapS
Sayangnya, solusi Anda tampaknya tidak berfungsi (lagi) untuk Jetty 8 sebagai permulaan. Jar menumbuhkan proses lain, yang tidak akan terbunuh dengan pendekatan Anda. Saya membuat pertanyaan lain untuk mengatasi masalah ini: stackoverflow.com/questions/10796242/...
Sebi
4
@ Sebi Anda mungkin hanya perlu menempel expect forkdi sana (sebelum scriptmemulai).
Oli