侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux nohup命令教程:让程序持久运行不受终端关闭影响(附案例详解和注意事项)

nohup命令是一个在Linux环境中非常有用的命令,其全称为 'no hang up'。它的主要作用是让你提交的命令或者程序在你退出(断开SSH连接)后继续运行。这对于运行长时间操作的脚本或者程序时尤其有用,比如数据备份、网络服务等。使用nohup,即使用户注销或终端关闭,程序还会在后台运行。

Linux nohup命令适用的Linux版本

nohup是大多数Linux发行版的标准工具,包括Fedora, Ubuntu, CentOS, Debian等。在CentOS 7上你可以使用yum安装它,而在CentOS 8上你需要使用dnf。

  • CentOS 7 安装命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils
  • CentOS 8 安装命令:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install coreutils

如果在某些发行版中没有预装nohup,可以通过上述命令进行安装。

Linux nohup命令的基本语法

nohup命令的基本语法结构如下:

nohup COMMAND [ARG]...

其中COMMAND是你希望在后台持续运行的命令,ARG...代表传递给命令的任意参数。

Linux nohup命令的常用选项或参数说明

由于nohup命令相对简单,没有许多选项,以下是一个简化的表格:

选项描述
--表示后面的内容都将被当作参数或命令来处理

Linux nohup命令实例详解

实例1:在后台运行 Python 脚本

如果你有一个长时间运行的Python脚本 long_script.py,使用nohup可以在后台运行:

[linux@bashcommandnotfound.cn ~]$ nohup python long_script.py &

实例2:输出重定向并运行 Node.js 应用

运行Node.js应用并将标准输出和错误输出分别重定向到不同的文件:

[linux@bashcommandnotfound.cn ~]$ nohup node app.js > app.log 2> app.err &

实例3:在特定时间运行命令

使用nohup与at命令结合,可以在特定时间运行脚本或命令:

[linux@bashcommandnotfound.cn ~]$ echo "nohup ./backup.sh &" | at 01:00

这条命令会设定在凌晨1点运行backup.sh脚本。

实例4:使用nohup运行复合命令

如果需要运行由多个部分组成的复杂命令,可以将它们组合在一起:

[linux@bashcommandnotfound.cn ~]$ nohup sh -c 'cd /path/to/directory && ./run_this_then_that.sh' &

实例5:在循环中使用nohup运行命令

在脚本中,你可能需要对多个文件使用相同的处理。可以将nohup放在循环中:

[linux@bashcommandnotfound.cn ~]$ for file in /path/to/data/files/*; do nohup ./process "$file" > "${file}.log" 2>&1 & done

实例6:使用nohup保持SSH隧道开启

如果需要保持一个SSH隧道开启,即使SSH会话关闭:

[linux@bashcommandnotfound.cn ~]$ nohup ssh -L local_port:remote_address:remote_port user@ssh_server -N &

实例7:结合find命令使用nohup

你可以结合使用findnohup来对找到的每个文件执行长时间运行的操作:

[linux@bashcommandnotfound.cn ~]$ nohup find /path/to/data -type f -name "*.data" -exec ./long_script '{}' \; &

这些例子展示了nohup命令的灵活性和多样性。根据需要,可以通过组合不同的命令和选项,让nohup适应各种后台运行任务的场景。记得在命令的末尾加上&字符,这样命令才会在后台运行。

Linux nohup命令的注意事项

  1. 使用nohup运行的命令会忽略HUP(挂断)信号。
  2. nohup默认会将命令的输出重定向到nohup.out文件中,除非你通过重定向操作指定了输出文件。
  3. 如果你在一个没有写权限的目录中使用nohup,并且没有指定输出文件,命令会因无法创建nohup.out而失败。
  4. 使用nohup运行的命令不会自动放到后台运行,需要在命令末尾添加&符号。
  5. `bashbash: nohup: command not found - 如果你遇到这个错误,请按照上面的安装指南安装nohup。
0

评论区