Хотите сделать выскочку сценария; нужна помощь и совет

13

Эт, мне нужно случайным образом начать и остановить (из-за отсутствия лучшего слова в моей голове) работу. Я начинаю это, печатая java -jar foo.jarи, чтобы остановить это, находит его pid и убивает это. Убийство не приводит к потере или повреждению данных или чему-либо еще, только к сведению. Выполнение обоих этих шагов утомительно, поскольку первую команду необходимо выполнить из определенного каталога, т. Е. /usr/share/jetty(Уничтожение может быть выполнено из любого места).

Так что я думал что-то вроде

service foo startи service foo stopзапускать и останавливать службы. Возможно ли это, а главное правильнее? Есть ли другое решение?

Благодарю.

theTuxRacer
источник

Ответы:

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 наблюдает за / etc / init, используя inotify, поэтому обычно знает обо всех изменениях в файлах внизу. Не нужно ничего делать, кроме как «запусти мою банку». Да, и @Oli, у тебя определенно может быть работа без начала. Обратите внимание, что остановка на уровне выполнения [! 2345] может быть помечена в будущем как плохой способ остановить вещи (так как это не гарантирует, что они остановятся до того, как файловые системы будут
отключены
К сожалению, ваше решение не работает (больше) для Jetty 8, так как start.jar порождает другие процессы, которые не будут убиты вашим подходом. Я создал еще один вопрос для решения этой проблемы: stackoverflow.com/questions/10796242/…
Sebi
4
@Sebi Возможно, вам просто нужно вставить expect forkтуда (до scriptначала).
Оли