详细介绍一下 linux nohup 命令
nohup
是在 Unix 和类 Unix 操作系统中的一个命令,用于使程序在退出终端或注销用户后继续运行,同时将输出重定向到一个文件。
nohup
是 “no hang up” 的缩写,表示不挂断。
使用 nohup
可以使命令或进程在后台运行,即使你注销或关闭终端,该进程也会继续执行。
以下是 nohup
命令的基本用法:
nohup command [options] > output_file 2>&1 &
command
:要运行的命令或程序。[options]
:命令的选项。output_file
:输出重定向到的文件。2>&1
:将标准错误(stderr)重定向到标准输出(stdout),以确保所有输出都被记录到output_file
。&
:使命令在后台运行。
例如,要使用 nohup
运行一个脚本文件 myscript.sh
,并将输出重定向到 output.log
文件,可以执行以下命令:
nohup ./myscript.sh > output.log 2>&1 &
这将在后台运行 myscript.sh
,并将标准输出和标准错误写入 output.log
文件。
你可以使用 ps
或 jobs
命令来查看后台运行的任务。
ps aux | grep myscript.sh
或者
jobs
请注意,使用 nohup
启动的任务会继续运行,即使你注销登录或关闭终端窗口。
这在需要长时间运行的任务、远程服务器上的任务或希望脱离终端的任务时非常有用。
例子
nohup java -jar xxx.jar&
这样一个启动 java 命令是什么意思?
nohup java -jar xxx.jar &
是一个常见的在后台运行 Java 可执行 JAR 文件的命令。
让我们详细解释每个部分:
-
nohup
: 表示 “no hang up”,这个命令会让后面的命令在后台运行,即使终端会话被关闭或注销。 -
java -jar xxx.jar
: 这是实际要执行的命令。在这个例子中,它运行了一个 Java 可执行 JAR 文件。通常,这是启动一个 Java 应用程序的命令。xxx.jar
应该替换为你实际的 JAR 文件名称。 -
&
: 在命令的末尾,表示在后台运行。这样做可以让你继续使用当前终端会话而不阻塞,而执行的程序将继续在后台运行。
综合起来,这个命令的目的是在后台运行一个 Java 可执行 JAR 文件,而且这个任务不会受到当前终端会话的影响。具体的使用场景可能包括在服务器上运行一个长时间运行的 Java 应用程序或在终端中执行任务后不希望该任务占用终端。
注意:执行这个命令后,你可能会在当前终端看不到程序的输出。如果你希望将输出保存到文件,你可以将命令修改为:
nohup java -jar xxx.jar > output.log 2>&1 &
这样会将标准输出和标准错误都重定向到 output.log
文件中。