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


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.