Завершение сеанса MySQLd для возврата в командную строку - PullRequest
5 голосов
/ 14 марта 2012

Я использую Ubuntu Natty.

Я запустил mysqld из командной строки, используя следующее:

mysqld -ndbcluster --console -umysql

На что я получаю следующее:

120314  0:09:49 [Warning] option 'new': boolean value 'dbcluster' wasn't recognized. Set to OFF.
120314  0:09:49 [Note] Plugin 'ndbcluster' is disabled.
120314  0:09:49 [Note] Plugin 'FEDERATED' is disabled.
120314  0:09:50 InnoDB: The InnoDB memory heap is disabled
120314  0:09:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120314  0:09:50 InnoDB: Compressed tables use zlib 1.2.3
120314  0:09:50 InnoDB: Using Linux native AIO
120314  0:09:50 InnoDB: Initializing buffer pool, size = 128.0M
120314  0:09:50 InnoDB: Completed initialization of buffer pool
120314  0:09:50 InnoDB: highest supported file format is Barracuda.
120314  0:09:50  InnoDB: Waiting for the background threads to start
120314  0:09:51 InnoDB: 1.1.8 started; log sequence number 1595675
120314  0:09:51 [Note] Event Scheduler: Loaded 0 events
120314  0:09:51 [Note] mysqld: ready for connections.
Version: '5.5.19-ndb-7.2.4-gpl-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Cluster Community Server (GPL)

Однако я не могу понять, как прекратить сеанс. Я пробовал Control-C и множество других комбинаций.

Как мне завершить сеанс и вернуться в командную строку?!

Спасибо.

Ответы [ 2 ]

11 голосов
/ 14 марта 2012

ctrl + c сгенерирует SIGINT, которое может быть перехвачено или заблокировано приложением.Если вы просто запустите killall mysqld из другого терминала, вы отправите SIGTERM процессу, который также может быть перехвачен или заблокирован, но даст гораздо более сильный намек на то, что процесс должен быть немедленно завершен.(Это будет хорошо для чистого закрытия таблиц базы данных.)

Ctrl + \ сгенерирует SIGQUIT, который может быть перехвачен или заблокирован приложением.(Если приложение не перехватит или не заблокирует этот сигнал, ОС сгенерирует для вас файл ядра.)

Вы можете отправить SIGKILL вручную, используя kill(1);SIGKILL не может быть перехвачен или заблокирован, и поэтому всегда будет останавливать процесс, если ядро ​​достаточно живо для обработки сигнала.Найдите пид, используя pidof или другой механизм, и запустите kill -SIGKILL pid.Обратите внимание, что это грубая смерть;процессу не дают возможности выполнить очистку после себя, поэтому таблицы базы данных могут остаться в несогласованном состоянии, для восстановления которого может потребоваться некоторое время при следующем запуске.

Если вы просто хотите получить запрос назад, выможно использовать ctrl + z , чтобы приостановить процесс.Затем вы можете использовать команды bg и fg вашей оболочки, чтобы позволить процессу продолжить работу в фоновом режиме, или повторно присоединиться к процессу на переднем плане.(Эта терминология бессмысленна, но я надеюсь, что она передает идею.)

3 голосов
/ 15 апреля 2017

Нажмите Ctrl + \ .

MySQL, похоже, игнорирует SIGINT (который выдается при нажатии Ctrl + C ), но будет выполнять чистое отключение при получении SIGQUIT (то есть, что Ctrl + \ отправляет).

Подробнее см. Ответ Самольда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...