返回归档

运维

Linux后台命令 nohup 和 & 的使用说明

nohup 命令说明

nohup 是 no hungup 的缩写,就是“不挂断,一直运行”,顾名思义就是后台运行

很多时候我们通过终端工具去远程执行linux脚本的时候,或多或少都会遇到网络问题导致客户端失去连接,终端断开,程序运行一半就意外结束,或者,有些程序需要一直挂在后台运行,即使退出了客户端,这时候就需要用到nohup命令了.

语法格式

nohup Command [ Arg ... ] [ & ]

  • nohup 命令运行由 Command 参数 和 Arg参数 指定的命令,忽略所有挂断(SIGHUP)信号。

  • 如果想要在运行后台中的 nohup 命令,则要添加 & ( 表示 “and” 的符号)到命令的尾部。

  • 如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

只用 nohup

无法标准输入(控制台无法输入),标准输出 和 错误信息保存到 nohup.out文件里面,关闭客户端后,命令仍然会运行。

nohup Command

例如

将nohup sh test.sh 任务放到后台,关闭标准输入,终端不再能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out 文件,即使关闭xshell退出后,当前session依然继续运行。

只用 &

可以标准输入(控制台可以输入),但会丢失 标准输出 和 错误信息,关闭客户端后,命令会就马上停止。

sh Command &

例如

将sh test.sh & 任务放到后台 ,关闭 xshell,对应的任务也跟着停止。

nohup 和 & 配合使用(推荐使用)

可以标准输入(控制台可以输入),也不会丢失标准输出和错误信息,并将输出信息保存到 nohup.out 中,关闭客户端后命令仍然会运行。

nohup Command [ Arg ... ] &

nohup sh test.sh &

例如

nohup sh test.sh & 命令在后台执行,可以使用标准输入,终端能够接收任何输入,标准输出 和 错误信息 默认保存到当前目录下的 nohup.out 文件,即使关闭xshell退出当前session依然继续运行。

nohup ./startWeblogic.sh & 意思是即使退出ssh界面,命令仍然在后台执行,并且打印日志到 nohup.out 文件中,当然也可以将nohup.out 的输出转向到其他文件,需要使用 重定向 。

nohup、 & 、 重定向(推荐使用)

使用 nohup sh test.sh & 命令时,默认是将信息输出到 nohup.out 文件中。 但是在实际工作中,我们想把日志信息输出到某个具体文件中,可以下面的命令。

nohup command >logfile 2>&1 &

上面命令可以拆分成三部分 nohup command & 、 >logfile 和 2>&1 。

nohup command & :这个命令上面已经介绍过了,就是后台运行命令;