Хочете зробити початковий сценарій; потрібна допомога та порада


13

Атм, мені потрібно випадково запустити і зупинити (через відсутність кращого слова в моїй думці) роботу. Я запускаю це, набравши текст, java -jar foo.jarі щоб зупинити його, дізнався його під і вбив. Вбивство цього не спричиняє втрати даних або пошкодження чи що-небудь, лише FYI. Смучно виконувати обидва ці кроки, тому що перша команда повинна бути виконана з певного каталогу, тобто /usr/share/jetty(The kill може бути виконаний з будь-якого місця).

Тож я щось думав на лінії

service foo startта service foo stopзапускати та зупиняти послуги. Це можливо, і що важливіше правильно? Чи є якесь інше рішення?

Спасибі.

Відповіді:


13

Так, Upstart - досить хороший варіант для цього. Просто створіть новий файл:

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

Ви можете змінити ім'я файлу на все, що завгодно, але потім вставити це в нього:

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

Деякі зауваження з цього приводу, я suнікому не заради безпеки. Можливо, вам знадобиться його suв інший обліковий запис, але, мабуть, не рекомендується його використовувати як root.


Чи потрібно перезапустити, щоб зміни набрали чинності? update-rc.dне працював /
TheTuxRacer

Вам не потрібно update-rc.dдля початкових завдань.
Олі

upstart watch / etc / init, використовуючи inotify, тому він, як правило, знає про всі редагування файлів під ним. Не потрібно нічого робити, окрім "запустити мій-мот-яр". О, і @ Олі, ти точно можеш працювати без початку роботи. Зауважте, що зупинка на runlevel [! 2345] може бути позначена в майбутньому як поганий спосіб зупинити речі (оскільки це не гарантує, що вони зупиняться до того, як файлові системи будуть відключені)
SpamapS

На жаль, ваше рішення, здається, не працює (більше) для Jetty 8, оскільки start.jar породжує інший процес, який не загине при вашому підході. Я створив ще одне питання, щоб вирішити цю проблему: stackoverflow.com/questions/10796242/…
Sebi

4
@Sebi Можливо, вам просто потрібно буде вставити expect forkтуди (до scriptпочатку).
Олі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.