Bir start-up komut dosyası yapmak istiyorum; yardıma ve tavsiyeye ihtiyacım var


13

Atm, bir işi rastgele başlatmam ve durdurmam gerekiyor (aklımda daha iyi bir kelime olmaması nedeniyle). Ben yazarak başladım java -jar foo.jarve pid bulmak ve öldürmek durdurmak için. Bunu öldürmek herhangi bir veri kaybına veya bozulmasına ya da herhangi bir şeye neden olmaz, sadece FYI. Her iki adımı da uygulamak sıkıcıdır, çünkü ilk komut belirli bir dizinden yürütülmelidir, yani /usr/share/jetty(Kill herhangi bir yerden yürütülebilir).

Bu yüzden,

service foo startve service foo stophizmetleri başlatmak ve durdurmak. Bu mümkün ve daha da önemlisi doğru mu? başka bir çözüm var mı?

Teşekkürler.

Yanıtlar:


13

Evet Upstart bunun için oldukça iyi bir seçenek. Sadece yeni bir dosya oluşturun:

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

Dosya adını istediğiniz gibi değiştirebilirsiniz, ancak bunu buna yapıştırabilirsiniz:

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

Bununla ilgili bazı notlar, sugüvenlik için kimseye katılmıyorum. suBaşka bir hesaba girmeniz gerekebilir, ancak muhtemelen olarak çalıştırılması önerilmez root.


Değişikliklerin geçerli olması için yeniden başlatılması gerekli mi? update-rc.dişe yaramadı /
theTuxRacer

Yeni update-rc.dişlere ihtiyacınız yok .
Oli

inotify kullanarak saat / etc / init'i başlatın, bu nedenle genellikle alttaki dosyalarda yapılan tüm düzenlemeleri bilir. 'İskele kavanozuma başla' dışında hiçbir şey yapmanıza gerek yok. Oh, ve @Oli, kesinlikle başlamadan bir işiniz olabilir. Çalışma seviyesindeki durmanın [! 2345] gelecekte işleri durdurmak için kötü bir yol olarak işaretlenebileceğini unutmayın (çünkü dosya sistemleri bağlantısı
kesilmeden

Ne yazık ki, çözümünüz artık Jetty 8 için start.jar olarak işe yaramıyor gibi görünüyor. Bu sorunu çözmek için başka bir soru oluşturdum: stackoverflow.com/questions/10796242/…
Sebi

4
@Sebi expect fork(Başlamadan önce script) buraya bir tane yapıştırmanız gerekebilir .
Oli
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.