我想在后台运行作业,以便我可以在任何作业启动后从终端注销。我知道两种方式
1)运行作业,然后按 ctrl + z ,然后输入 bg
mysqldump -uroot -p dbname > dbname.sql
2)使用nohup运行作业,然后按 ctrl + z ,然后输入 bg
nohup mysqldump -u root -p dbname > dbname.sql 2>&1
我想知道上面两个命令之间的区别,哪个最适合哪种情况。
答案 0 :(得分:2)
将您的流程作为工作运行会将您的工作限制在当前会话中。所以,如果你运行
$ start_running_job &
$ exit
退出时作业将停止。
按Control-Z与上面的行具有相同的效果。
运行nohup会将作业置于当前会话结束时继续存在。所以,如果你运行
$ nohup start_running_job &
$ exit
这项工作将继续进行。
答案 1 :(得分:1)
我同意提供的答案......
“nohup”基本上在服务器本身以后端模式运行您的命令/脚本,并且在放置“&”时与您当前的登录会话无关只需将脚本放在后台并保持与当前登录会话的连接。在任何情况下,您都可以使用fg来恢复脚本/命令。
哪个对您有好处,因为这取决于您访问服务器的方式以及脚本需要多长时间才能完成。假设您的脚本将花费更多的时间并且您当前的登录会话仍然是理想的,它将关闭并且如果您仅给出&而脚本将被杀死。很多时候只是给nohup,不要担心。