终止MySQLd会话返回到命令提示符

我正在使用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和其他一些组合。

如何结束会话并返回到命令提示符?

谢谢。

ctrl + c将生成SIGINT ,可以被应用程序捕获或阻止。 如果你只是从另一个终端运行killall mysqld ,你会发送SIGTERM给进程,这个进程也可以被捕获或者阻塞,但是会给出一个更强的提示,告诉进程应该立即终止。 (这将是很好的清理关闭数据库表。)

Ctrl + \将生成SIGQUIT ,可以被应用程序捕获或阻止。 (如果应用程序没有捕获或阻止此信号,操作系统将为您生成一个核心文件。)

您可以使用kill(1)手动发送SIGKILL ; SIGKILL不能被捕获或阻塞,因此如果内核足够活跃以处理信号,则会始终停止进程。 使用pidof或其他机制找到pid,并运行kill -SIGKILL pid 。 请注意,这是一个粗略的死亡。 该进程没有机会自行清理,因此数据库表可能会处于不一致的状态,可能需要一些时间才能在下次启动时进行修复。

如果你只是想提示回来,你可以使用ctrl + z来暂停进程。 然后,您可以使用shell的bgfg命令来允许进程在后台继续运行,或者在前台重新加入进程。 (这个术语是无意义的,但我希望它传达这个想法。)

按下Ctrl + \

MySQL似乎忽略了SIGINT(当按下Ctrl + C时发出的),但是当它接收到SIGQUIT(这是Ctrl + \发送的内容)时将执行干净的关闭。

有关详细信息,请参阅samold的答案。