0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux nohup命令详解,终端关闭程序依然可以在执行!

Linux爱好者 来源:良许Linux 2020-08-14 16:29 次阅读

在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止。而这个情况肯定不是我们想看到的,我们希望即使终端关闭,程序依然可以在跑。

这时我们就可以使用nohup这个命令。

nohup命令是英语词组no hangup的缩写,意思是不挂断,也就是指程序不退出。这个命令会使程序忽略HUP信号,保证程序能够正常进行。HUP信号有些人可能比较陌生,它是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而nohup命令做的就是这个事情。

本文我们将详细介绍nohup命令的具体用法。

nohup命令基本语法

nohup 命令的基本语法如下:

$ nohup command arguments

或者:

$ nohup options

如果你想要得到更多关于 nohup 的用法介绍,可以查看它的帮助页面:

$ nohup --help

如果你需要查看它的版本号,可以使用--version选项。

$ nohup --version

使用nohup命令启动一个程序

如果你需要运行一个程序,即使对应的 Shell 被退出后依然保持运行,可以这样使用 nohup 运行这个程序:

$ nohup command

当这个程序进行起来之后,这个程序对应的 log 输出及其错误日志都将被记录在nohup.out文件里,这个文件一般位于家目录或者当前目录。

重定向程序的输出

如果我不想把程序的输出保存在家目录或者当前目录,我想保存在我指定的路径,并且自定义文件名,要怎么操作?这时我们就可以使用重定向操作>。

比如,我现在有个脚本myScript.sh我想把它的输出保存在家目录下的output目录下,文件名为myOutput.txt,可以这样运行:

$ nohup ./myScript.sh > ~/output/myOutput.txt

使用nohup命令后台启动一个程序

如果想让程序在后台运行,可以加上&符号。但这样运行之后,程序就无影无踪了。想要让程序重新回到终端,可以使用fg命令。

这个命令的输出 log 将保存在 nohup.out 文件里,你可以使用 cat 或其它命令查看。第二行里 8699 这个数字代表这个命令对应的进程号,也就是 pid 。我们可以使用ps命令来找到这个进程。

使用nohup同时运行多个程序

如果你需要同时跑多个程序,没必要一个个运行,直接使用&&符号即可。比如,你想同时跑 mkdir ,ping,ls 三个命令,可以这样运行:

$ nohup bash -c 'mkdir files && ping -c 1 baidu.com && ls'> output.txt

终止跑在后台的进程

上面有提到,nohup命令结合&符号可以使进程在后台运行,即使关闭了终端依然不受影响。这时,如果想要终止这个进程,要怎么操作呢?

最简单的当属kill命令,相信大家用过很多次了。

$kill -9 PID

那要如何找到进程对应的 pid 呢?我们可以使用ps命令。

$ ps aux | grep myScript.sh

或者你使用pgrep命令也行。

接下来,再使用kill命令就可以终止该进程了。

$kill -9 14942

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11322

    浏览量

    209880
  • 终端
    +关注

    关注

    1

    文章

    1145

    浏览量

    29929
  • 程序
    +关注

    关注

    117

    文章

    3792

    浏览量

    81189

原文标题:Linux nohup 命令详解,终端关闭程序依然可以在执行!

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux grep命令详解

    Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,
    的头像 发表于 12-25 09:39 140次阅读

    Linux系统中shell命令解析

    shell是Linux系统的用户界面,提供了用户与内核交互的一种接口,它接收用户输入的命令并到送到内核去执行,因此也被称为Linux命令
    的头像 发表于 11-05 15:40 315次阅读

    详解kubectl常用命令

    详解kubectl常用命令
    的头像 发表于 11-05 15:39 286次阅读
    <b class='flag-5'>详解</b>kubectl常用<b class='flag-5'>命令</b>

    Linux实用命令大全

    Linux实用命令大全
    的头像 发表于 10-23 13:50 254次阅读
    <b class='flag-5'>Linux</b>实用<b class='flag-5'>命令</b>大全

    Linux lsof命令的基本用法

    linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅
    的头像 发表于 10-23 11:52 332次阅读
    <b class='flag-5'>Linux</b> lsof<b class='flag-5'>命令</b>的基本用法

    Linux中cut命令的实用示例

    Linux command cut 用于文本处理。您可以使用此命令通过选择列从文件中提取部分文本。
    的头像 发表于 08-05 15:14 336次阅读

    恒讯科技分析:Linux系统的vps服务器怎么关闭selinux?

    Linux系统中,SELinux(Security-Enhanced Linux)是一个强制访问控制系统,用于增强系统的安全性。如果你需要关闭SELinux,
    的头像 发表于 07-17 13:29 517次阅读

    vscode esp-idf终端不能执行python命令怎么解决?

    vscode esp-idf终端不能执行python命令,先前重装win10系统,安装vscode,安装esp-idf插件,选择版本安装,就能在终端
    发表于 06-05 06:37

    如何在CYW54907上使用wl工具执行睡眠、传输等命令

    命令集,可以通过 tera term 等任何终端程序传递。 睡眠命令不起作用,我们没有看到发出睡眠命令
    发表于 05-20 06:37

    Linux的shutdown命令介绍

    1.功能shutdown 指令可以关闭所有程序,并依用户的需要,进行重启或关机操作。 使用 shutdown 命令时,系统关机前,
    发表于 04-08 06:12

    util-linux修复WallEscape漏洞,影响Linux系统wall命令使用

    WallEscape 主要影响“wall”命令操作,Linux 系统中的常规下,该指令被用作向系统所有登录用户的终端发布消息。然而在处理命令行参数输入时,过滤器未正确识别和过滤转义序列
    的头像 发表于 03-29 14:35 998次阅读

    linux命令概述

    电子发烧友网站提供《linux命令概述.pdf》资料免费下载
    发表于 03-11 09:18 3次下载

    如何使用linux下gdb来调试python程序

    如何使用linux下gdb来调试python程序  Linux下,可以使用GDB(GNU调试器)来调试Python
    的头像 发表于 01-31 10:41 2669次阅读

    全志H616核桃派系统终端和常用命令介绍

    。 用户切换​核桃派系统预设2个用户。分别是: 普通账户(桌面系统默认启动) 用户名:pi 密码:pi 管理员 用户名:root 密码:root 有些终端命令需要通过管理员才可以执行
    发表于 01-25 14:54

    Linux上如何通过命令行来更改日期和时间?

    Linux上如何通过命令行来更改日期和时间? Linux上,我们可以使用
    的头像 发表于 01-16 17:10 2885次阅读