安卓系统

Linux nohup命令

Linux ubuntu 18.04安裝eclipse跑java

Linux ubuntu 18.04安裝eclipse跑java

目录:

Anonim

nohup 命令执行另一个作为其参数指定的程序,并忽略所有 SIGHUP (挂断)信号。 SIGHUP 是在其控制终端关闭时发送到进程的信号。

通常,当您通过SSH运行程序时,如果连接断开或注销,会话将终止,并且从终端执行的所有进程都将停止。 这是 nohup 命令派上用场的地方。 它忽略所有挂断信号,并且该过程将继续运行。

如何使用nohup命令

nohup 命令的语法如下:

nohup COMMAND

该命令除了标准的 --help --version 之外,不接受任何其他选项。

让我们看下面的例子:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup 在前台运行 mycommand 命令,并将命令输出重定向到 nohup.out 文件。 该文件在当前工作目录中创建。 如果运行该命令的用户没有对工作目录的写权限,那么将在用户的主目录中创建该文件。

如果注销或关闭终端,则该过程不会终止。

在后台运行命令

在前台使用 nohup 并不是很有用,因为在命令完成之前,您将无法与Shell进行交互。

要在后台运行命令,请在命令末尾添加 & 符号:

nohup mycommand &

输出包括外壳作业ID(用括号括起来)和进程ID:

25177

您可以使用作业ID使用 fg 命令将命令置于前台。

如果出于某种原因要终止进程,请使用 kill 命令,后跟进程ID:

kill -9 25132

将输出重定向到文件

默认情况下, nohup 将命令输出重定向到 nohup.out 文件。 如果要将输出重定向到其他文件,请使用标准的Shell重定向。

例如,要将标准输出和标准错误重定向到 mycommand.out ,可以使用:

nohup mycommand > mycommand.out 2>&1 &

要将标准输出和标准错误重定向到其他文件:

nohup mycommand > mycommand.out 2> mycommand.err &

备择方案

关闭终端或断开连接时,可以使用多种替代程序来避免命令终止。

屏幕

Screen或GNU Screen是一个终端多路复用器程序,它使您可以启动屏幕会话并在该会话内打开任意数量的窗口(虚拟终端)。 当您的窗口不可见时,即使您已断开连接,在Screen中运行的进程也将继续运行。

Tmux

Tmux是GNU屏幕的现代替代方案。 使用Tmux,您还可以创建一个会话并在该会话中打开多个窗口。 Tmux会话是持久性的,这意味着即使您关闭终端,在Tmux中运行的程序仍将继续运行。

舍弃

disown 是一个内置的Shell,可从Shell的作业控件中删除Shell作业。 与 nohup 不同,您还可以在运行的进程上使用 disown

结论

nohup 可以防止注销或退出终端时命令被终止。

Nohup终端