Linux下nohup与ctrl+z命令的区别



我想在后台运行作业,这样我就可以在任何作业启动后从终端注销。我知道有两种方法

1)运行job,然后按ctrl+z,然后输入bg

mysqldump -uroot -p dbname  > dbname.sql

2)使用nohup运行job,然后按ctrl+z,然后输入bg

nohup mysqldump -u root -p dbname  > dbname.sql 2>&1

我想知道以上两个命令之间的区别,以及哪个命令在哪种情况下是最好的。

将进程作为作业运行,将作业限制为当前会话。所以如果你运行

$ start_running_job &
$ exit

当你退出时,作业将停止。

按Control-Z键的效果与上面的行相同。

Running nohup放置作业,使其在当前会话结束时仍然存在。所以如果你运行

$ nohup start_running_job &
$ exit

我同意…

"nohup"基本上在服务器本身的后端模式下运行你的命令/脚本,它与你当前的登录会话无关,而把"&"只是把脚本放在后台,并保持连接到你当前的登录会话。在任何情况下,您都可以使用fg来恢复脚本/命令。

这对你来说是好的,因为这取决于你如何访问你的服务器,以及你的脚本需要多长时间才能完成。假设你的脚本将花费更多的时间,而你当前的登录会话仍然是理想的,它将关闭,脚本将被杀死,如果你只给出&很多时候,不要放弃,不要担心。

最新更新