linux后台执行命令:&和nohup
当我们在终端或控制台工作的时候,如果希望同时进行另外一个工作,那么此时就希望将当前的工作放在后台运行,特别是如果当前的命令执行时间会很长的情况下。
那么下面就说下两种方法。
&
命令后面加上&相信很多人都用过,比较适合一些费时的命令或脚本,不过注意不要讲有交互的命令放在后台执行,因为这样你的机器就会一直等待输入。使用方法为
1 | $ command & |
如果放在后台的作业会产生大量的输出,那么此时最好可以将输出重定向到某个文件中,使用方法为
1 | $ command > out.file 2>&1 & |
其中2>&1 表示将标准出错重定向到标准输出
不过使用&有的弊端,就是一旦把当前的控制台关掉或者账号退出时就会停止作业。
此时就需要下面的这个命令了。
nohup
nohup命令可以在退出账户后继续执行相应的命令,意思为不挂起no hang up。
命令的使用方法如下:
1 | $ nohup command & |
默认情况下作业的所有输出被重定向到一个nohup.out文件中,也可以指定输出文件,如下所示:
1 | $ nohup command > mynohup.file 2>&1 & |
不过这里还是有需要注意的事项,非正常退出可能会导致命令失效,所以需要使用exit正常退出当前账户。