2014-09-11 4 views
1

У меня есть простой PROCFILE для приложения Rails:Как сделать туздЫ прекращался, когда Форман (PROCFILE) прекращает работу

web: rails server -p $PORT 
worker: bundle exec rake jobs:work 
mysql: /usr/local/bin/mysqld --log-error=/dev/stout 

Все процессы запуска правильно это здорово. Однако, когда я останавливаю Foreman с CTRL-C, mysqld не останавливается. Он работает в фоновом режиме.

Как заставить mysqld останавливаться, когда Foreman останавливается?

Есть ли другой способ запускать mysql через командную строку, которая будет работать, о которой я не знаю?

ответ

0

На моем компьютере, он занимает около 6 секунд, чтобы остановить MySQL, но бригадир автоматически посылает SIGKILL после 5, так при запуске foreman вам необходимо увеличить время до SIGKILL. Я использовал 10 секунд, YMMV.

foreman start -t 10 

mysql.sh

trap 'brew services stop mysql' INT TERM 

ps aux | grep -v grep | grep -i mysqld 

if [ $? -eq 0 ] 
then 
    echo "MySQL is already running" 
else 
    echo "Starting MySQL" 
    brew services start mysql 
fi 

# https://unix.stackexchange.com/a/42911 
sleep 2147483647 

PROCFILE

mysql: ./mysql.sh