这周遇到一个情况:需要将大数据量的sql数据导入到数据库中,由于时间很长,不能一直开着终端连着筋服务器,所以就想到了后台运行进程的方法
-
其实后台运行方法很简答,nohup命令让进程不挂起,末尾加上&来后台运行。
-
举例:nohup /opt/haha.sh & 后台运行脚本
-
数据库导入后台运行:
-
导入数据库命令:nohup Mysql -uroot -p密码 库名< sql文件地址 &
-
讲道理没有毛病,但是报错,说不能在终端上显示密码,这样不安全,处理办法:将密码写入数据库配置文件/etc/my.cnf,添加如下内容
[client]
user=root
password=***
- 导入数据库命令:Mysql 库名< sql文件地址 &
- 后台运行:nohup Mysql 库名< sql文件地址
- 讲道理是没毛病了,那就关闭终端试一下,重新打开,通过ps -ef查看进程,结果进程关闭了。
- 我以为nohup不起作用,所以编写了一个死循环脚本,关闭终端后确是可以运行的,所以问题可能出在数据库导入的 < 这个符号。
- 通过搜索nohup怎么处理 < ,查到一片博客跟我相似问题,他的解决方法是,不能直接关闭终端,而是在nohup命令之后通过exit退出,不然会断掉该进程所对应的session,导致nohup对应的进程被通知一起shurdown。结果他是对的。
总结
- 排出多种可能,最后就能找到原因所在。