Когда я запускаю свою среду разработки, есть множество процессов, которые мне нужно запустить в фоновом режиме. Это боль, чтобы начать их все индивидуально, поэтому я хочу написать сценарий, который запускает каждый из них. Я могу сделать это просто отлично, но проблема возникает, когда мне нужно перезапустить их (что-то, что мне нужно будет делать регулярно).
Что является самым простым способом захвата процесса при его запуске и сохранения этой информации что при повторном запуске скрипта он проверяет, была ли сохранена эта информация и затем закрыть эти процессы, прежде чем перезапускать их.
Я также хочу, чтобы скрипт был достаточно гибким, чтобы при закрытии процесс вручную, он будет а) не выдавать ошибку, если он не может найти этот процесс, и b) не случайно отключить какой-либо другой процесс, который с тех пор делил любую идентификационную информацию, которую я сохранил.
В частности, я хочу, по крайней мере, сделать следующее на данный момент:
1) Введите короткую команду типа «start-dev»
2) Выполните следующее (обратите внимание, что я хочу, чтобы вторая и третья команды выполнялись в фоновом режиме, и я использую & amp; для этого, но не последнюю команду, поскольку я хочу видеть вывод из passe nger, когда он запускается):
Переход в мой рабочий каталог Начало faye в качестве фонового процесса Start watchr как фоновый процесс Начать пассажирПока у меня есть это
#!/bin/bash
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
Это работает отлично, но проблема возникает, когда мне нужно перезапустить все эти процессы. Сначала я должен отслеживать все их идентификаторы процессов, а затем убивать их перед запуском start-dev. Поэтому я хотел бы:
4) Введите короткую команду, такую как «restart-dev», которая отслеживает процессы, которые я ранее выполнял в фоновом режиме, а затем убивал их перед запуском «start-dev». Он должен быть в состоянии не бросать ошибку, если я отключил любой из них вручную и не случайно выключил неправильный процесс.
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#!/bin/bash
startme() {
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
}
stopme() {
pkill -f "rackup faye.ru"
pkill -f "watch refresh.watchr"
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
Я решил бы что-то вроде этого.
#! / bin / bash startme () {cd ~ / path / to / my / work-directory rackup faye.ru -s тонкий -E-производство & amp; watch refresh.watchr & amp; начало пассажира} stopme () {pkill -f "rackup faye.ru" pkill -f "watch refresh.watchr"} случай «$ 1» в начале) startme ;; stop); перезапуск) stopme; startme ;; *) echo "use: $ 0 start | stop | restart" & gt; & amp; 2 exit 1 ;; esac
Я решил бы что-то вроде этого.
#! / bin / bash startme () {cd ~ / path / to / my / work-directory rackup faye.ru -s тонкий -E-производство & amp; watch refresh.watchr & amp; начало пассажира} stopme () {pkill -f "rackup faye.ru" pkill -f "watch refresh.watchr"} случай «$ 1» в начале) startme ;; stop); перезапуск) stopme; startme ;; *) echo "use: $ 0 start | stop | restart" & gt; & amp; 2 exit 1 ;; esac
Я решил бы что-то вроде этого.
#! / bin / bash startme () {cd ~ / path / to / my / work-directory rackup faye.ru -s тонкий -E-производство & amp; watch refresh.watchr & amp; начало пассажира} stopme () {pkill -f "rackup faye.ru" pkill -f "watch refresh.watchr"} случай «$ 1» в начале) startme ;; stop); перезапуск) stopme; startme ;; *) echo "use: $ 0 start | stop | restart" & gt; & amp; 2 exit 1 ;; esac
Я решил бы что-то вроде этого.
#! / bin / bash startme () {cd ~ / path / to / my / work-directory rackup faye.ru -s тонкий -E-производство & amp; watch refresh.watchr & amp; начало пассажира} stopme () {pkill -f "rackup faye.ru" pkill -f "watch refresh.watchr"} случай «$ 1» в начале) startme ;; stop); перезапуск) stopme; startme ;; *) echo "use: $ 0 start | stop | restart" & gt; & amp; 2 exit 1 ;; esac
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также поддается любому процессу, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также
stop on runlevel [06]
expect fork
respawn
script
# run your process here
# you might want to su to change user from root
end script
pre-stop script
# things in here will run before the command is halted
end script
Сохраните это как /etc/init/devenvironment.conf, а затем вы сможете управлять им с помощью:
sudo start devenvironment
sudo stop devenvironment
sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также подходит для любого процесса, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также (! d4)
stop on runlevel [06] ожидать, что fork respawn script # запустит ваш процесс здесь # вы можете захотеть сменить пользователя от корневого конца скрипта pre -stop script # вещи здесь будут выполняться до того, как команда будет остановлена end script
Сохраните это как /etc/init/devenvironment.conf
, а затем вы должны быть (d7) sudo start devenvironment sudo stop devenvironment sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также подходит для любого процесса, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также (! d4)
stop on runlevel [06] ожидать, что fork respawn script # запустит ваш процесс здесь # вы можете захотеть сменить пользователя от корневого конца скрипта pre -stop script # вещи здесь будут выполняться до того, как команда будет остановлена end script
Сохраните это как /etc/init/devenvironment.conf
, а затем вы должны быть (d7) sudo start devenvironment sudo stop devenvironment sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также подходит для любого процесса, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также (! d4)
stop on runlevel [06] ожидать, что fork respawn script # запустит ваш процесс здесь # вы можете захотеть сменить пользователя от корневого конца скрипта pre -stop script # вещи здесь будут выполняться до того, как команда будет остановлена end script
Сохраните это как /etc/init/devenvironment.conf
, а затем вы должны быть (d7) sudo start devenvironment sudo stop devenvironment sudo restart devenvironment
Я бы сказал, что вы, вероятно, захотите написать сценарий выскочки для управления этими процессами. Upstart - это инструмент, который идеально подходит для управления системными демонами, но также подходит для любого процесса, в котором вы хотите контролировать свой статус.
Скрипт с выскочкой будет отслеживать процесс, но он также (! d4)
stop on runlevel [06] ожидать, что fork respawn script # запустит ваш процесс здесь # вы можете захотеть сменить пользователя от корневого конца скрипта pre -stop script # вещи здесь будут выполняться до того, как команда будет остановлена end script
Сохраните это как /etc/init/devenvironment.conf
, а затем вы должны быть (d7) sudo start devenvironment sudo stop devenvironment sudo restart devenvironment