网站运营
位置:首页>> 网站运营>> 一文带你深入理解Linux中的nohup命令

一文带你深入理解Linux中的nohup命令

作者:baddate  发布时间:2023-07-10 11:19:21 

标签:Linux,nohup

前言

当我们在Linux或Unix系统上执行一个长时间运行的命令或脚本时,我们通常会遇到一个问题,那就是在终端关闭或者退出后,该进程也会随之停止运行。在这种情况下,我们需要一种方式来让进程在后台运行,而不受终端关闭的影响。这时,nohup命令就派上用场了。

nohup是什么

nohup是Linux和Unix系统中的一个命令,其作用是在终端退出时,让进程在后台继续运行。它的全称为“no hang up”,意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。

nohup语法规则

nohup命令的基本语法如下:

nohup COMMAND [ARGS ...] [> output-file 2> error-file] &

其中的参数含义如下:

  • COMMAND:需要在后台运行的命令或脚本。

  • ARGS:命令或脚本的参数。

  • > output-file:输出重定向到指定的文件中。

  • 2> error-file:错误信息重定向到指定的文件中。

  • &:将命令放在后台运行。

nohup命令的执行过程分为以下几个步骤:

  • nohup命令将当前shell的标准输入、标准输出和标准错误输出全部重定向到/dev/null设备中,避免被关闭终端的信号所中断。

  • nohup命令将进程放到后台执行,并将进程的PID输出到终端。

  • 进程开始执行,并将标准输出和标准错误输出重定向到指定的文件中。

  • 用户可以退出终端或关闭终端窗口,进程仍然在后台运行。

nohup使用方法

使用nohup命令非常简单,按照上面的基本语法即可。以下是一些nohup命令的用法示例:

后台运行命令

要在后台运行命令,只需要在命令行中输入以下命令即可:

nohup COMMAND &

例如,在后台运行一个Bash脚本:

nohup bash test.sh &

标准输出重定向到文件

nohup bash test.sh > stdout.txt &

标准错误输出重定向到文件

nohup bash test.sh 2> stderr.txt &

将标准输出和标准错误输出都重定向到文件

1. 重定向到同一文件

nohup bash test.sh > output.txt 2>&1 &

2. 重定向到不同文件

nohup bash test.sh > stdout.txt 2> stderr.txt &

3. 一个更为复杂的例子,重定向标准输入(stdin):

nohup ./myprogram > foo.out 2> foo.err < /dev/null &

这里多出来一个< /dev/null,意思是将标准输入重定向到/dev/null,以确保程序不会从标准输入中读取任何数据。

这个是为了解决一个实际问题:SSH会话常常拒绝注销(或者挂起),因为它不愿意去丢失与后台job(s)进行交互的数据。当遇到这个问题的时候,可以使用上面的命令,通过三次重定向来解决。

nohup后台进程管理

使用 jobs 命令可以查看当前 shell 中后台运行的任务列表,包括任务编号、状态和命令。

例如,我们在后台执行一个sleep 1000命令,使用jobs命令查看:

$ jobs
[1]+  Running                 nohup sleep 1000 &

其中,方括号中的数字表示任务编号,加号或减号表示任务的优先级,Running 表示任务正在后台运行。除此之外,还有其他可能的状态,包括 Stopped(已停止)、Done(已完成)等。

我们还可以使用 fg 命令将一个后台任务移动到前台继续运行,例如:

$ fg %1

这个命令会将任务编号为 1 的任务移动到前台,继续执行。如果希望将任务暂停或恢复,可以使用 Ctrl-Z 键,在当前 shell 中发送 SIGTSTP 信号。

$ fg %1
nohup sleep 1000

^Z
[1]+  Stopped                 nohup sleep 1000

此时如果想要恢复运行,可以使用bg命令:

$ bg %1
[1]+ nohup sleep 1000 &

如果想要杀死该任务,可以使用kill命令:

$ kill %1
[1]+  Terminated              nohup sleep 1000

如果你想杀死所有后台任务,但是又觉得一个个地比较麻烦,可以使用disown命令来解决:

$ disown -a

这个命令可以杀死所有后台任务,但不会有任何提示,你可以通过jobs命令来确认。

来源:https://juejin.cn/post/7215855138811150395

0
投稿

猜你喜欢

  • 四周的一切都在日新月异,只有我们的IT/软件行业似乎停滞不前或者步子太慢胆子太小变化太少,我们是在用联想电脑,但那只是联想的外衣,电脑的心是
  • 从中国网游开始发展的时候,各种形式的网络选秀就一直伴随着游戏行业前进演绎至今。至少市面上90%的游戏都举办过类似选美女玩家代言人的活动,捧出
  • 1、程序语言不同英文需要采用utf或Iso,而中文都采用GBK的字符集。(废话,这你都能列出来,真行!)2、网页风格不同英文需要采用西方的阅
  • SMTP Relay能够让你使用当前电子邮件服务通过电子邮件地址来发送电子邮件讯息。比如,你可以继续使用电子邮件工具(如Microsoft
  • 由于刚进了高中,高一的学业还是比较繁忙的,已经近乎几个月没有来Chinaz侃侃了,今天由于我身体的不适,没有去学校上课,于是闲着闲着便来到了
  • 小编最近在追一部由安以轩、吴建豪主演的偶像剧--《下一站,幸福》,这部剧目前的收视率还不错,但离大家的期望值貌似还差那么一点点。看到很多粉丝
  • 这几天着实为sql注入漏洞伤了神,网上的代码好多不是很深奥就是麻烦。终于找到了万能防注代码,分享了,呵呵 。操作简单上手,只要来个包含或放入
  • 很奇怪对不对?似乎所有教程都在教你,怎么为你的网站拉拢更多的看客,不管是正面诱导还是强女干眼球。先把人拉过来再说!人多了,点广告也好,买东西
  • 刚开始做网站的时候,我就想一下子建立起来就开始盈利,后来发现这根本就不可能。因为网站要盈利,流量必须是前提。后来,通过慢慢琢磨发现,光是有流
  • 访问Web服务器是许多局域网用户经常要做的一项“功课”,在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速
  • SupeSite 7.0是康盛创想(Comsenz)公司于2009年3月推出的一款社区CMS产品,作为Comsenz旗下的社区产品SupeS
  • 邮件主机常见问题解答 1、问:我安装IMail时全选的是它的默认设置,结果本机的FQDN(完全合格域名)成了默认的邮件主机名,我该如何修改它
  • 做过Google Adsense的站长都明白,打去年起Google Adsense的单价就节节降,原因很多:一是国内广告市场普遍如此,另一个
  • 在用TCP/IP协议族架设的网络中,每一个节点都有一个唯一的IP地址,用来作为它们唯一的标志。然而,如果让使用者来记住这些毫无记忆规律的IP
  • 作为读者来说,退订(包括Twitter上Unfollow)不想看的内容是好事,道理很简单,不再赘述。那么,博主、推友会因被读者退订、Unfo
  • 一个网站的制作过程,通常需要经历5个阶段,他们依次是网站需求调查阶段、网站技术分析阶段、网站页面策划阶段、网站设计阶段和网站改进阶段。将每一
  • 百度与Google两大搜索向来都是不同的,Google的搜索结果更客观点,而百度则更适合大众化用户,作为站长有必要了解他们的某些“特殊爱好”
  • Windows2000/XP的任务管理器是一个非常有用的工具,它能提供我们很多信息,比如现在系统中运行的程序(进程),但是面对那些文件可执行
  • 10月16日消息,据知情人士透露,在媒体前低调一年多的巨人网络董事长兼CEO史玉柱,近期有望推出一款心血大作《绿色征途》。上述人士称该游戏凝
  • 本文分步介绍如何使用 Internet 信息服务 (IIS) 5.0 授予对 Web 内容的 Web 服务器权限。您可以对服务器上的特定网站
手机版 网站运营 asp之家 www.aspxhome.com