這周遇到一個情況:需要將大數據量的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。結果他是對的。
總結
- 排出多種可能,最后就能找到原因所在。