Вы не можете.
Сценарий Perl работает в процессе, который является ребенком Вашей сессии оболочки. Этот дочерний процесс может изменить свой собственный рабочий каталог все, что он любит, но он не может измениться, это - рабочий каталог родителя. Когда сценарий Perl выходит, управление возвращается к родительскому процессу (сессия оболочки), который останется в том же рабочем каталоге всем временем, независимо от того, что сделал дочерний процесс, в то время как это работало.
Хорошо я добрался до решения:
# Wait for the mysqld_safe process to start
while ! [[ "$mysqld_process_pid" =~ ^[0-9]+$ ]]; do
mysqld_process_pid=$(echo "$(ps -C mysqld -o pid=)" | sed -e 's/^ *//g' -e 's/ *$//g')
sleep 1
done
Объяснение: команда ожидания, которая была сразу выполнена после выполнения mysqld_safe
, ожидал mysqld_safe
(который очевиден), но мне был нужен он для ожидания mysqld
который инициируется пользователем mysql
! процесс mysqld_safe
никогда не изменялся бы это - состояние (это находится в бесконечном цикле), поэтому wait
команда ожидает навсегда!
Таким образом, я написал код, который ожидает mysqld
обработайте для запуска.
Это похоже на Вас, база данных стала поврежденной. Я смотрел бы на его сообщение на dba.stackexchange.com для шагов на том, что сделать затем. Это надеется быть проблемой базы данных и ничем, чтобы сделать с Вашим сценарием.
service mysql stop
? Вы правы... Я должен был использовать это. Спасибо за замечание! – Dor 07.06.2013, 02:59