nohup
和&
的区别
&:后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出
什么意思呢? 意思是说, 当你在执行 Command &
的时候, 即使你用ctrl C
, 那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, 这个Command进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
nohup: 即no hang up,不挂断的运行
nohup的意思是忽略SIGHUP信号, 所以当运行nohup Command
的时候, 关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。 但是, 要注意, 如果你直接在shell中用Ctrl C, 那么, 这个Command进程也是会消失的(因为对SIGINT信号不免疫)
注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
nohup语法:
nohup Command [ Arg ... ] [ & ]
nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
如果不将 nohup 命令的输出重定向,输出将附加到当前目录的nohup.out
文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
原文地址:https://www.cnblogs.com/mingyue5826/p/11572228.html