首页 > 系统相关 >Linux nohup 命令详解

Linux nohup 命令详解

时间:2024-10-17 09:46:38浏览次数:9  
标签:后台 输出 示例 命令 详解 nohup Linux 进程

文章目录


Linux nohup 命令详解

在 Linux 系统中,nohup 命令用于让进程在用户退出或终端关闭后继续运行。它通常与长时间运行的任务或需要后台执行的命令一起使用。通过将命令放置在 nohup 的前面,Linux 会忽略 SIGHUP 信号(挂起信号),从而确保命令在终端关闭后依然运行。

基本语法

nohup COMMAND [ARG]...
  • COMMAND:你想要运行的命令。
  • [ARG]...:命令的参数(可选)。

nohup 工作原理

nohup 命令的核心功能是让进程忽略挂起信号 (SIGHUP),即当终端关闭时,它不会终止进程。如果你在运行 nohup 的命令后关闭终端,进程会继续运行,输出会被重定向到 nohup.out 文件,除非你另行指定了输出文件。

实用示例

示例 1:运行一个脚本并保持后台执行

假设你有一个名为 long_script.sh 的脚本,它需要几个小时才能完成。你可以使用 nohup 命令来确保它在你关闭终端后依然运行。

nohup ./long_script.sh &
  • & 表示后台运行该命令。
  • nohup 会将输出重定向到当前目录下的 nohup.out 文件。

示例 2:指定输出文件

可以将输出定向到指定的文件,而不是默认的 nohup.out

nohup ./long_script.sh > output.log 2>&1 &
  • > output.log:将标准输出重定向到 output.log 文件。
  • 2>&1:将错误输出重定向到 output.log 文件。

示例 3:结合 sleep 命令

可以使用 nohup 结合其他命令。例如,运行一个 10 分钟的睡眠进程,即使关闭终端,睡眠进程依然会继续:

nohup sleep 600 &

这将在后台等待 600 秒(10 分钟)。

使用 jobsbg 管理后台进程

使用 nohup 后,可以通过以下命令管理后台进程:

  • jobs:列出当前用户的后台进程。
  • bg:将一个暂停的后台进程恢复运行。
  • fg:将后台进程转为前台执行。
jobs   # 查看当前后台任务
bg %1  # 将任务编号为 1 的任务放入后台运行
fg %1  # 将任务编号为 1 的任务带回前台

使用 pskill 管理进程

你可以使用 ps 命令查看所有运行中的进程,并使用 kill 命令终止特定进程:

ps -ef | grep your_command  # 查找指定命令的进程
kill -9 PID                # 终止指定 PID 的进程

常见的 nohup 参数

nohup 本身没有复杂的参数,但它通常与其他命令组合使用。你可以结合使用以下命令参数来增强 nohup 的功能:

参数说明
&将命令放到后台运行。
> file将标准输出重定向到指定文件。
2>&1将标准错误输出与标准输出合并。
jobs查看当前用户的后台进程。
bg将后台进程恢复执行。
fg将后台进程带回前台。
ps显示当前进程的状态。
kill终止某个进程。

结合 nohupcron

如果你有一个需要定期执行的任务,也可以将 nohupcron 配合使用。以下是一个每晚执行脚本的 cron 配置示例:

0 2 * * * nohup /path/to/script.sh > /dev/null 2>&1 &

这表示每晚 2 点运行 script.sh 脚本,并将所有输出丢弃。

注意事项

  • 如果你没有显式重定向输出,nohup 默认会将输出保存到 nohup.out 文件,建议指定日志文件,以便更好地管理输出。
  • 关闭终端时,如果命令没有使用 nohup 或类似的工具,进程将被终止。

结论

nohup 命令是保持进程在后台持续运行的重要工具,尤其在需要长时间执行的任务中。它可以与其他命令结合使用,并支持输出重定向,使任务管理更加灵活方便。通过本文的介绍,相信你对 nohup 命令有了更深入的了解,并能在日常工作中更有效地使用它。

标签:后台,输出,示例,命令,详解,nohup,Linux,进程
From: https://blog.csdn.net/weixin_42434700/article/details/142917290

相关文章

  • Linux rm命令详解
    文章目录Linux`rm`命令详解基本语法常用参数详解常见用法和示例注意事项实践示例结论参数表格Linuxrm命令详解rm(remove)命令用于删除文件或目录,是Linux系统中最常用的文件管理命令之一。rm命令具有强大的功能,可以删除单个文件、多个文件,甚至递归删除整个目录......
  • ThreeJS入门(123):THREE.Skeleton 知识详解,示例代码
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第123篇入门文章......
  • linux系统中安装JDK
    文章目录1、查看系统版本2、下载JDK版本3、上传4、复制5、添加配置6、重启配置7、查看版本1、查看系统版本查看linux系统版本uname-a这边是x86-64就代表64位系统i686代表32位系统2、下载JDK版本JDK下载相对应的版本在下载之前先勾选AcceptLicenseAgreement,......
  • 2024/10/16 linux命令
    linux命令:1.ifconfig查看IP地址2.serviceiptablesstop关闭防火墙serviceiptablesstart开启防火墙serviceiptablesrestart重启防火墙serviceiptablesstatus查看防火墙状态3、ssh连接虚拟机ssh+ip地址enter输入账号输入密码4.......
  • Linux命令进阶
    grep从文件中搜索字符串grep"字符串"文件参数:-n显示行号-R递归及子目录例如grep"hello"log.cgrep"main"*-nRfind在指定路径下搜索文件find路径-name文件名find/home/linux-namehello.c//在/home/linux目录下搜索hello.c管道连接符|说明......
  • Linux介绍及常用命令
    Linux系统简介1969年,AT&T公司的⻉尔实验室PMIT合作开发的Unix,í在于创建⼀个⽤于⼤型、并⾏、多⽤户的操作系统Unix的推⼴:从学校⾛进企业Unix的版本要两个:AT&TSystemV——就是俗称的系统5BerkleySoftwareDistribution(BSD)linux是一种操作系统1991......
  • C++ [NOIP1999 提高组] 邮票面值设计 详解
    C++[NOIP1999提高组]邮票面值设计详解题目背景题目描述输入格式输出格式样例#1样例输入#1样例输出#1完整代码(你们最想要的):[NOIP1999提高组]邮票面值设计题目背景除直接打表外,本题不保证存在正确且时间复杂度可以通过全部数据做法。由于测试数据过水,部......
  • Linux服务器上安装git(运维向)
    (1).参考文献官网在线教程:https://git-scm.com/book/zh/v2官方网站:https://git-scm.com/(2).实验环境2核2GCentOS7.6.1810(3).安装git1)yum或dnf安装[root@VM-0-17-centos~]#dnf-yinstallgit-all2)源码安装安装依赖包[root@VM-0-17-centos~]#dnf......
  • Linux历史
    Linux于1991年由芬兰学生LinusTorvalds作为个人项目开始,旨在创建一个新的免费操作系统内核。在其历史发展中,Linux内核经历了持续的增长。自1991年首次发布源代码以来,Linux内核从少量的C语言文件,且受限于禁止商业发行的许可,逐步发展到2018年发布的4.15版本,其......
  • 第2课笔记 linux系统指令
    测试分类linux虚拟机搭建linux命令:一、linux介绍1、Linux是一个免费、开源的操作系统,能多用户、多任务、支持多线程和多CPU的操作系统,相对windows更加稳定,在unix系统的基础上开发的系统;注解:(1)免费:不要钱(2)源代码公开(3)多用户:可以在不同用户操作(4)多任务:同时执行多个任务......