当前位置: 首页 > article >正文

Linux系统命令:使得指定的linux命令可以在用户注销或终端关闭后继续运行的工具nohup详解

目录

一、概述

二、用法

1、基本用法

2、获取帮助

三、 工作原理

四、功能描述

五、示例

1. 在后台运行一个命令并忽略挂断信号

2. 指定输出文件

3. 运行一个交互式命令(不常见)

六、查看 nohup 输出

七、其他

1、输出文件

2、挂起信号

3、环境变量

4、权限问题

5、ulimit 设置的影响

6、非交互

八、常见问题


一、概述

        nohup 是一个非常有用的 Linux/Unix 命令,它允许用户执行一个进程,并且这个进程即使在用户退出登录或者终端关闭后也能继续运行。nohup 的名字来源于 "no hang up",意即不会因为终端挂断(hang up)而停止运行。

二、用法

1、基本用法

nohup 命令的基本语法如下:

nohup [COMMAND] [ARG]... &

解释如下:

- COMMAND 是想要在后台运行的命令。

- [ARG]... 是传递给该命令的参数。

- & 符号表示将该命令置于后台执行。

2、获取帮助

        可以使用如下命令:

            nohup  --help

        实际操作如下图所示:

三、 工作原理

当使用 nohup 运行一个命令时,它会做以下几件事情:

        1、默认情况下,nohup 会将命令的标准输出重定向到名为 nohup.out 的文件中,如果该文件不存在则创建它,否则输出会被追加到文件末尾。

        2、nohup 会忽略 SIGHUP 信号,这样即使终端关闭,进程也会继续运行。

        3、如果没有指定输出文件,输出通常会发送到 nohup.out。如果指定了输出文件,可以使用 >(覆盖)或 >>(追加)操作符来控制输出。

四、功能描述

        nohup 命令使得指定的命令可以在用户注销或终端关闭后继续运行。它通常与 & 符号一起使用,以确保命令在后台执行。nohup 会将命令的标准输出和标准错误输出都重定向到一个名为 nohup.out 的文件中(除非另外指定了输出文件)。

       如果不想让输出写入到 nohup.out 文件,可以覆盖默认行为:

        nohup command > output.log 2>&1 &

        这里的 output.log 是指定的日志文件名,2>&1 意味着把标准错误输出重定向到标准输出的地方。

五、示例

1. 在后台运行一个命令并忽略挂断信号

        可以使用如下命令:

        nohup my_command &

        这将启动 my_command,并在注销后继续运行它。输出将默认保存到 nohup.out 文件中。

实际操作如下:

2. 指定输出文件

        可以通过重定向来指定输出文件:

        nohup my_command > my_output.log 2>&1 &

        这将把标准输出和标准错误都重定向到 my_output.log 文件中。

3. 运行一个交互式命令(不常见)

        虽然 nohup 主要用于非交互式命令,但也可以通过一些技巧来运行交互式命令。然而,这通常不是 nohup 的典型用法,并且可能需要额外的配置(如使用 screen 或 tmux 等工具)。

六、查看 nohup 输出

        如果需要查看 nohup 命令创建的日志文件,可以简单地打开 nohup.out 或者指定的日志文件:

        cat nohup.out

        实际操作如下:

七、其他

1、输出文件

        默认情况下,nohup 会将输出写入 nohup.out 文件。如果多次运行同一个命令而不改变输出文件,新的输出会追加到现有文件的末尾。

2、挂起信号

        nohup 命令会使进程忽略挂起(SIGHUP)信号,这意味着即使终端关闭,进程也会继续运行。

3、环境变量

        nohup 运行命令时,会继承当前 shell 的环境变量,但某些环境变量(如 TERM)可能会被修改或重置。

4、权限问题

        确保有权限在当前目录中写入 nohup.out 文件或指定的输出文件。

5、ulimit 设置的影响

        使用 nohup 启动的进程仍然受 ulimit 设置的影响,因此如果的 shell 对于可以打开的文件描述符有限制,可能会影响到 nohup 进程的行为。

6、非交互

        在某些情况下,如果一个脚本依赖于终端输入,那么它可能无法正常工作,因为 nohup 创建的环境不是交互式的。

八、常见问题

1、为什么 nohup 命令的输出文件默认是 nohup.out?

  这是 nohup 命令的默认行为。可以通过重定向来更改输出文件。

2、如何停止由 nohup 启动的进程?

  可以使用 ps 命令找到进程的 PID,然后使用 kill 命令来停止它。例如:

 

 ps aux | grep my_command

 kill -9 <PID>

  其中 <PID> 是想要停止的进程的进程 ID。

  希望这能帮助更好地理解 nohup 命令!如果有任何其他问题,请随时联系。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。



http://www.kler.cn/news/340589.html

相关文章:

  • 爬虫学习实战
  • Git分支-团队协作以及GitHub操作
  • Leetcode—200. 岛屿数量【中等】
  • QT系统学习篇(5)-信号与槽
  • Python Kivy 样式与设计教程
  • pytest的基础入门
  • 1-Lipschitz函数
  • IDEA下“File is read-only”可能原因及“找不到或无法加载主类”问题的解决
  • ROS2入门篇——ROS2第一个节点
  • Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
  • BUU刷题-Pwn-shanghai2018_baby_arm(ARM_ROP_csu_init,ARM架构入门)
  • React常见优化问题
  • 如何编写测试用例
  • python 实现algorithm topo卡恩拓扑算法
  • C/C++复习(一)
  • 深入了解 TypeScript 现代 JavaScript 的超集
  • sqli-labs less-14post报错注入updatexml
  • gbase8s数据库实现黑白名单的几种方案
  • 网络受限情况下安装openpyxl模块提示缺少Jdcal,et_xmlfile
  • 2-110 基于matlab的双字典交叉稀疏表示的SAR图像变化检测