📜  nohup 重定向输出 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:03:16.309000             🧑  作者: Mango

nohup 重定向输出 - Shell-Bash

在 Shell-Bash 编程中,我们经常需要运行一些长时间运行的脚本,可能需要在后台运行,以免占用终端。在这种情况下,我们可以使用 nohup 命令来启动程序,并将输出重定向到文件,以便稍后查看。本文将介绍如何使用 nohup 命令来重定向输出。

什么是 nohup 命令?

nohup 是 Shell 程序的一个命令,用于启动长时间运行的进程,可以将进程放在后台运行,并将输出重定向到文件,即使关闭终端,进程也不会终止。nohup 命令非常有用,可以用于管理服务器进程,例如 Web 服务器、数据库服务器等。

使用 nohup 命令重定向输出

使用 nohup 命令重定向输出非常简单。下面是基本的语法:

nohup command >logfile 2>&1 &

其中,command 是要执行的命令,logfile 是要将输出重定向到的文件的名称。2>&1 将标准错误输出重定向到标准输出,& 用于将命令放入后台执行。

以下是使用 nohup 命令运行一个脚本并将输出重定向到文件的示例:

nohup ./myscript.sh >myscript.log 2>&1 &

此命令将运行名为 myscript.sh 的脚本,并将输出重定向到名为 myscript.log 的文件中。

实例
示例1

下面是一个使用 nohup 命令运行 Python 脚本的示例。首先,创建一个名为 test.py 的脚本,将以下代码复制并粘贴到文件中:

import time

while True:
    print("Hello World")
    time.sleep(1)

然后,使用以下命令启动该脚本并将输出重定向到名为 test.log 的文件中:

nohup python test.py > test.log 2>&1 &

此命令将启动名为 test.py 的脚本,并将其输出写入名为 test.log 的文件中。您可以使用 tail 命令查看输出:

tail -f test.log
示例2

下面是一个使用 nohup 命令运行 Java 应用程序的示例。假设您的 Java 应用程序位于名为 myapp.jar 的文件中,并且启动类为 com.example.MyApp。要启动该应用程序并将输出重定向到名为 myapp.log 的文件中,请使用以下命令:

nohup java -jar myapp.jar com.example.MyApp > myapp.log 2>&1 &

此命令将启动名为 myapp.jar 的 Java 应用程序,并将其输出写入名为 myapp.log 的文件中。

结论

nohup 命令是一个强大的命令行工具,可以将进程置于后台并将输出重定向到文件中,这些功能在服务器管理和Shell-Bash 编程中非常有用。使用本文中介绍的语法和示例,您现在已经学会了如何使用 nohup 命令在后台运行长时间运行的进程,并将输出重定向到文件。