Linux 中 nohup 实现后台运行指定命令并重定向命令输出到指定文件【对命令各部分逐步分解说明】

nohup 命令的使用

nohup 命令的使用语法:

nohup 要执行的命令

nohup (no hang up) 命令,可以让我们要执行的命令不被挂起,即可以使我们执行的命令忽略输入和挂起信号继续运行,即使命令行终端关闭也会继续运行要执行的命令。
如果我们使用 nohup 执行命令,那么输出结果将不会输出到终端,默认情况下,nohup 命令会将输出结果写入你执行 nohup 命令时所在目录的 nohup.out 文件中,如果你执行 nohup 命令时所在目录的 nohup.out 文件禁止写入数据,那么 nohup 命令的输出结果会自动输出到 $HOME/nohuo.out 文件(当前登录用户家目录中的 nohup.out 文件)中
image.png
此时,我们关闭执行 nohup 命令的终端,打开新的终端
image.png
image.png
image.png
此时,我们如果要停止使用 nohup 命令执行的命令,只能通过杀死相应的进程实现
image.png

nohup 命令与后台运行命令

我们使用 nohup 执行要执行的命令,只能实现忽略输入和挂起信号让要执行的命令继续运行,此时,使用 nohup 命令执行的终端仍然被占用,如果我们系统当前终端不被占用,可以继续运行其他命令,那么我们只需要在 nohup 执行要执行的命令的最后添加 **&** 就可以了,表示在后台运行要执行的命令
image.png
同样的,此时,如果我们要停止使用 nohup 命令执行的命令,需要通过杀死进程实现
image.png

nohup 执行要执行的命令并将命令的输出重定向到指定文件

在上述 nohup 的使用中,我们只能将要执行的命令的控制台输出写入到执行 nohup 所在的目录下的 nohup.out 文件中。
如果我们要实现将使用 nohup 执行要执行的命令的输出写如指定的文件中,这里的输出包括标准输出和标准错误输出,即把使用 nohup 执行的命令的输出和报错输出都写入指定的文件中。
那么,我们可以使用如下命令实现

nohup 要执行的命令 > 要执行的命令的输出写入的文件 2>&1 &

nohup:使我们要执行的命令忽略输入和挂起信号继续运行
> 要执行的命令的输出写入的文件:指定要执行的命令的输出要重定向写到哪个文件中
2>&1:将标准错误输出重定向到标准输出,由于要执行命令的标准输出会重定向写入到指定文件中,所以标准错误输出也会重定向写入到指定文件中

  • 2:标准错误输出文件描述符
  • 1:标准输出文件描述符

&:实现要执行的命令的后台运行

nohup ping www.baidu.com >/tmp/log.out 2>&1 &

image.png
image.png
image.png

### Linux中使用nohup命令后台运行jar包的方法 在Linux系统中,`nohup` 命令可以用于将程序以后台方式运行,并忽略挂起信号(SIGHUP),从而确保即使关闭终端或SSH连接,程序仍然能够继续执行[^2]。以下是具体的命令示例和用法说明: #### 基本命令格式 ```bash nohup java -jar demo.jar > nohup.log & ``` 上述命令中: - `nohup`:使程序忽略挂起信号。 - `java -jar demo.jar`:运行指定的JAR包程序。 - `> nohup.log`:将程序的标准输出定向到 `nohup.log` 文件中。 - `&`:将命令放入后台执行。 #### 输出日志的处理 如果需要将标准错误输出也重定向到同一文件中,可以使用以下命令: ```bash nohup java -jar demo.jar > log.log 2>&1 & ``` 此命令中,`2>&1` 表示将标准错误输出文件描述符2)重定向到标准输出文件描述符1),最终所有输出都会写入 `log.log` 文件[^3]。 #### 使用绝对路径 为了确保命令在任意工作目录下都能正确执行,建议使用绝对路径指定JAR包和日志文件的位置: ```bash nohup java -jar /export/server/jar/test.jar > /export/server/jar/testlog.log 2>&1 & ``` 通过这种方式,可以明确指定JAR包和日志文件的具体位置,避免因当前工作目录不同而导致的问题[^4]。 #### 查看程序运行状态 运行程序后,可以使用以下命令查看日志文件的内容: ```bash tail -f /export/server/jar/testlog.log ``` `tail -f` 命令会实时显示日志文件的新增内容,便于监控程序运行状态。 #### 停止后台运行的程序 若需要停止由 `nohup` 启动的程序,可以先找到其进程ID(PID),然后使用 `kill` 命令终止: 1. 查找进程ID: ```bash ps aux | grep demo.jar ``` 2. 终止进程: ```bash kill -9 <PID> ``` ### 注意事项 - 如果未指定输出文件,默认情况下,`nohup` 会将输出定向到当前目录下的 `nohup.out` 文件中。 - 确保日志文件所在的目录具有写权限,否则可能会导致日志记录失败。 - 在Windows系统上运行JAR包时,可以直接双击文件启动,而在Linux系统中则推荐使用 `nohup` 或其他类似工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值