背景
nohup的意思是“没有挂断”。 通常,当我们从系统注销时,所有正在运行的程序或进程都会挂起或终止。 如果要在注销或退出Linux操作系统后运行任何程序,则必须使用nohup命令。 有许多程序需要很长时间才能完成。 我们不需要长时间登录来完成命令的任务。 我们可以使用nohup命令在后台运行这些类型的程序并稍后检查输出。 使用nohup命令的一些示例是内存检查,服务器重启,同步等。本教程中显示了如何在Ubuntu上使用nohup命令在后台运行程序。
- 可以通过下面命令查看nohup的版本
$ nohup --version
示例1:使用没有'&'的nohup命令
当你运行没有'&'的nohup命令时,它会在后台运行该特定命令后立即返回到shell命令提示符。 在以下示例中,nohup运行bash命令而不使用“&”在后台执行sleep1.sh文件。 如果nohup命令中没有提到任何重定向文件名,则nohup命令的输出将在nohup.out中写入文件。 对于以下命令,您可以通过检查nohup.out文件的输出来检查sleep1.sh的输出。我们先新建一个sleep.sh作为测试文件:
$ vim sleep1.sh
加入内容
echo 'sleep1'
测试nohup:
$ nohup bash sleep1.sh
$ cat nohup.out
结果如下:
您可以按以下方式执行该命令,以将输出重定向到output.txt文件。 检查output.txt的输出。
$ nohup bash sleep1.sh > output.txt
$ cat output.txt
示例2:使用带有'&'的nohup命令
当nohup命令与'&'一起使用时,它在后台运行命令后,不会返回shell命令提示符。可以输入'fg'返回shell命令提示符
$ nohup bash sleep1.sh &
$ fg
示例3:使用nohup命令在后台运行多个命令
您可以使用nohup命令在后台运行多个命令。 在以下命令中,使用nohup和bash命令在后台执行mkdir和ls命令。 您可以通过检查output.txt文件来获取命令的输出。但是不建议这么做,多个命令可以自己写一个sh脚本来执行
$ nohup bash -c 'mkdir myDir && ls'> output.txt
$ cat output.txt