回答
我打算假设您正在对服务器执行ssh操作,并且希望能够关闭本地工作站。
您可以使用nohup
和后台进程。了解mysql命令的-e
选项也很有用。
因此,像这样:
nohup mysql <options> -u <user> -p <pass> -e 'Insert Query Here' &
nohup
是“无挂”,即还没有结束的时候我 断开连接的过程。mysql ...
MySQL命令你通常运行 连接,只需添加-e选项,而无需打开 MySQL的会话&
运行查询启动进程在后台
我不确定这个BUT: 如果你不想在命令中输入你的密码,运行命令时不需要输入密码,输入fg
密码提示应该回来,输入哟我们的密码,ctrl-z
将发送过程回到背景,然后您可以断开连接。
最好的办法是: nohup mysql
@ShahadatHossainKhan,为什么更好?如果没有重定向,任何消息或错误都会转到nohup.out,因此您可以查看查询是否工作或失败。 – dan08
在沉默运行方面,但如果你想调试它不是一个好方法我同意 –
如果您发现您遇到使用nohup
问题与mysql
- 我找到了这个网页上通过@ dan08的answer所引发的替代解决方案,以及@节点的answer关于把一个已经运行的进程到后台,从另一个问题上的SO 。
我已经发现,尝试使用nohup mysql...
到“背景”长时间运行mysql
命令的建议时,我正尝试的远程MySQL服务器连接到拒绝连接。当运行相同的mysql
命令而没有将其前缀为nohup
时,连接成功并且mysql
命令按预期工作。
因此,我寻找了替代方法来实现能够运行长时间运行的SQL命令(或SQL命令集)的同样的最终结果,而不用担心如果从shell会话断开连接的进程终止或如果网络问题导致远程服务器断开连接。这项研究导致了下面提出的工作解决方案:
- 运行您的
mysql
命令,好像您想要在前台运行它;例如:mysql <options> -h <host> -u <user> -p -e "source /absolute/path/to/commands.sql" <database name> 2>&1 > ./mysql_output.log
- 当询问时,在MySQL命令提示符处输入相关密码以指定
<user>
(这是通过在上面的mysql
命令中包含-p
标志触发的)。 - 立即按Ctrl + Z暂停当前进程,在这种情况下为
mysql
。 - 运行
bg
命令将当前挂起的进程移动到后台并恢复处理。 - 运行
jobs
命令列出当前在shell会话中运行的作业(如果在当前会话中没有任何其他后台进程正在运行,则可能只列出一个作业)。如果您只有一份工作正在运行,请在此列表中注明mysql
的作业编号,如果编号为1
。 - 最后但并非最不重要的是,运行
disown -h %<job number>
命令,因此disown -h %1
(假设上述步骤#5中获得的作业编号为1
)。这最后一条命令非常重要,因为它将当前shell会话与我们刚刚移入后台的mysql
进程分离,以便在终端shell会话结束时不会终止进程mysql
。如果没有呼叫disown
,现在在后台运行的mysql
进程仍然可能在终端会话结束时被杀死。
命令的上述序列有效地让你一个长期运行的呼叫转移到mysql
到后台,并没有进程终止,如果您关闭终端会话或者从远程断开模仿到nohup mysql...
通话服务器。如果您发现运行nohup mysql...
在您的情况下工作良好,因为它肯定是更简单快捷的方法,但至少在我们的应用程序/服务器环境中,我们无法成功使用nohup mysql...
。
上面的顺序还应该让您更好地控制执行mysql
命令,因为您最初在前台运行该命令;例如在前台运行mysql
将允许您在MySQL提示下安全地输入您的MySQL连接密码,而无需在命令行上提供纯文本密码(这可能是某些托管/服务器环境中的重要安全考虑因素,特别是共享主机,其中在命令行中输入的密码可能以日志文件(例如〜/ .bash_history或类似文件)结尾。另外,在前台运行该命令,将允许您在MySQL命令移入后台之前查看并响应任何连接或其他错误。
此信息还必须在此页面上@ dan08的answer,以及@Node的answer关于将已运行的前台进程置于后台,以帮助激发此处提出的解决方案。
希望这个提议的解决方案能够帮助其他发现自己处于类似情况的人,其中运行nohup mysql...
不能按预期工作。
nohup mysql -h [host_ip_addr] -u [username] -p[password] [database_name] -e "sql_query" &
注:后-p
- 1. 在后台运行查询
- 2. 如何在后台运行查询
- 3. PHP:在后台执行sql查询
- 4. 我们如何才能在后台运行sql查询
- 5. 在mysql查询中运行mysql查询
- 6. MySQL查询不使用PHP的工作,但在查询的phpmyadmin的SQL运行
- 7. 提高SQL查询关于MySQL运行
- 8. 运行MySQL查询在PHP
- 9. MySQL嵌套查询不会运行,在SQL Server上运行
- 10. 如何向后运行mysql查询?
- 11. 使用PDO运行嵌套MySQL查询
- 12. 使用php来运行MYSQL SELECT查询
- 13. 使用PHP运行多个Mysql查询
- 14. 运行SQL查询
- 15. 运行SQL查询
- 16. SQL查询滞后运行计算
- 17. 使用SignalR运行SQL查询
- 18. 使applescript在后台运行
- 19. 使用MySQL的SQL查询
- 20. 运行SQL查询检查
- 21. mySQL查询未在MySQL Workbench中运行
- 22. ASP.NET - 在后台运行SQL代理
- 23. Android在后台运行SQL语句
- 24. 查询运行在MySQL工作台,但没有的mysql_query运行()在PHP
- 25. SQL查询执行MySQL工作台,但不是在生产
- 26. 如何在MySQL工作台内执行SQL查询
- 27. 运行在后台
- 28. 在后台运行
- 29. 在后台运行
- 30. 运行在后台
烨不给空间存在的Linux屏幕命令,只需在终端输入屏幕,然后它会打开一个新的终端(新画面),然后运行SQL命令然后按Ctrl + d然后从ssh断开它仍然会在后台运行u可以通过登录到ssh并键入screen -r – Vivek
再次检查什么样的查询?根据服务器版本和配置,还有EVENT。 – Uueerdo
我试图用Ctrl + D关闭它,但它似乎没有工作。 –