Advertisement

阐述nohup、/dev/null及2>&1命令的含义及其使用场景。

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
nohup命令是Linux系统中一种能够在用户退出终端或者计算机关闭时继续执行指定进程的应用程序。它的别名是nohangup,其含义是即使用户断开网络连接,该进程也不会被中断或者终止。这种功能对于需要长时间稳定运行的任务或服务具有很好的实用性,例如进行数据分析的背景进程、执行定时操作的应用程序等。使用 `nohup` 命令的基本语法是遵循以下模式:`nohup command &`,其中 `command` 代表的是需要运行的任务。当希望同时监控命令的输出时,可以通过引用来进行重定向处理。在nohup命令`mntNand3H2000G >devnull 2>&1 &`的示例中,>devnull这一参数指示将标准输出(文件描述符1)重定向到一个特殊设备`devnull`,该设备的作用类似于吸收器,任何写入其内容的数据都会被完全丢弃。随后,通过使用2>&1的方式,将标准错误(文件描述符2)指向文件描述符1的位置。由于此时文件描述符1已经被配置为指向`devnull`,因此所有潜在的标准错误信息也会被同样地吸收和丢弃。这种设置的结果是确保命令的所有输出及错误信息都不会以任何方式显示或保存下来。在C shell编程中,`2>&1`的顺序具有重要意义。具体而言,若将其写为`command > out.file 2>&1`,则首先通过>`将标准输出重定向至out.file文件,并随后利用`2>&1`将标准错误也重定向至此同一个文件位置。反之,在写作法如`command 2>&1 > out.file$`时,则会先将标准错误发送至标准输出(即终端),接着再通过> out.file将其重定向到目标文件,这种情况下会导致原始的标准输出信息仍然保留在终端中。因此,正确的操作应确保在必要时调整重定向的顺序以达到预期效果。使用`devnull 2>&1`的优在于它不会生成日志文件的同时,能够防止程序运行时的输出导致磁盘占用。然而,在某些特定场景下,为了便于排查错误并进行调试分析,可能需要保留错误信息。当我们对比命令流经`file`的两种处理方式:即命令执行后会将输出和错误分别送到两个不同的`file`管道,与之不同的是使用一个单独的`file`管道来同时接收标准输出和错误信息。其主要区别体现在对资源的利用程度上,在前一种情况下,该命令需要依次打开两个不同的`file`管道来分别接收标准输出和错误信息,这可能造成输出内容的覆盖问题。而后者则通过共享单个`file`管道来实现同时处理两种信息的目的,从而更高效地管理流程并减少潜在冲突风险。总体而言,`nohup` 命令与重定向操作符的配合,如 `nohup command > devnull 2>&1 &`,是Linux系统中常用的技术。这种技术的作用在于在后台运行进程的同时丢弃所有输出内容。掌握这些基础概念对开发高效的Linux脚本具有重要意义。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Linux中nohup和&使差异详解
    优质
    本文深入探讨了在Linux系统中nohup与&两个命令的应用场景及其区别,帮助用户更好地掌握后台进程管理技巧。 本段落主要介绍了Linux中nohup与&的用法及区别,并通过示例代码进行了详细讲解。对于学习或使用Linux的朋友来说,这篇文章具有一定的参考价值。希望需要了解这方面知识的人能够从中学到有用的内容。
  • 泰克示波器常见
    优质
    本文介绍了泰克示波器中常见的命令和它们的具体含义,帮助用户更好地理解和使用这些工具进行电子测量与调试。 以Tektronix数字示波器为例,整理了数字示波器的常见命令及其含义,并进行了细致分类。这适用于科研人员、工程技术人员以及在校学生使用。
  • Linux环境下nohup与screen执行后台进程方式差异
    优质
    本文介绍了在Linux系统中使用nohup和screen命令将程序置入后台运行的方法,并对比了两者的特性和适用场景。 使用SSH终端(比如putty或xshell)连接到Linux服务器并运行耗时任务时,可能会遇到需要几个小时甚至几天才能完成的情况。在这种情况下,如果直接在前台执行这些命令会导致终端被占用,并且无法同时处理其他任务。因此,通常会将这类长时间运行的任务放到后台来执行。 通过在命令后加上 & 可以将其置于后台运行: ``` command & ``` 使用这种方式启动的进程不会响应Ctrl + C中断信号,因为它们对SIGINT信号具有免疫力;然而,如果你直接关闭终端窗口,则这些任务会被终止。因此,在这种情况下,当您希望正常退出SSH会话而不影响正在执行的任务时,请使用exit命令。 另一种方法是利用nohup(不挂断)来运行长时间的进程: ``` nohup command ``` 这将使程序继续在后台运行,并且不会因为关闭终端而停止。同时,它还会生成一个名为 nohup.out 的文件以记录输出信息。
  • Dosbox 0.74 使 MASM 问题解决方法
    优质
    本简介详细介绍了在使用 DosBox 0.74 版本时,通过MASM和其他命令遇到的各种问题及其解决方案。 Dosbox 0.74无法使用masm命令和其他相关命令,原因是缺少必要的文件。后来在debug电脑上找到了这些缺失的文件,并成功复制过去解决了问题,走了1个多小时的弯路才搞定。
  • nohup解析.txt
    优质
    本文档深入剖析了Linux系统中的nohup命令,解释其用途、用法及常见应用场景,帮助用户掌握如何在后台持续运行程序。 Linux nohup命令详解 nohup是Linux系统中的一个非常有用的命令行工具,它允许用户运行长时间持续的进程,并且在断开终端连接后仍然保持运行状态。 使用方法: ``` nohup command & ``` 参数解释: - `command`:要执行的应用程序或命令。 - `&`符号:将任务放在后台运行。 特点和注意事项: 1. 当用户注销或者关闭当前登录的会话时,nohup可以保证进程继续在系统中运行。如果未使用&号,则输出会被重定向到一个名为nohup.out文件里(默认情况下)。 2. 如果希望将程序的标准输出或标准错误写入自定义的日志文件,请添加如下参数:`nohup command > output.log 2>&1 &` 3. 若要杀死运行中的任务,可以使用ps命令查看进程ID然后用kill PID来结束。 总结: 通过利用nohup命令和重定向技术,在Linux环境下执行长时间或后台作业变得简单且高效。
  • Windows下使ipmitool常见
    优质
    本文介绍了在Windows环境下安装和使用ipmitool工具的方法,并列举了其常用命令,帮助用户更好地管理和监控系统。 在Windows环境下使用ipmitool及其常用命令集,并将其制作成batch格式的脚本段落件。这样,在需要执行特定操作时,只需在命令后添加远程IP地址、用户名和密码即可。例如:on 192.168.1.100 admin admin 表示通过ipmitool将IP为192.168.1.100的服务器开机。
  • 解析Git Merge三种使详解
    优质
    本文详细解析了Git Merge命令在合并分支、解决冲突和查看合并历史中的三种应用场景,帮助开发者更好地理解和运用这一重要功能。 Git是一个非常流行的分布式版本控制系统,在软件开发中广泛使用以追踪源代码的历史记录。在进行团队协作开发时,经常需要将不同分支的更改合并在一起,这时就需要用到`git merge`命令。 本段落详细探讨了三种不同的情景下如何应用`git merge`命令,并通过示例来说明其具体操作方法: ### 1. 快进合并(Fast-forward Merge) 快进合并是最简单的形式。当目标分支是当前分支的直接上游,即目标分支的所有提交历史都在当前分支中时,Git会简单地将指针移动到最新的提交上而不会创建新的合并提交。 例如,在master分支上有三次提交B0、B1和B2后,我们切换到了一个新的dev分支并在那里做了两次提交(B3、B4)。此时,如果从dev回到master并尝试合并它,由于master可以直接快进至dev的最新提交点,Git会简单地将指针移动到该位置,并且不会产生新的合并记录。 ```bash $ git checkout master Switched to branch master $ git merge dev Fast-forward test-2.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ``` 由于没有创建新的合并提交,dev分支在合并后可以被安全地删除: ```bash $ git branch -d dev ``` ### 2. 三方合并(Three-Way Merge) 当master和dev分支的提交历史开始分叉,即两个分支都做了独立的修改之后,则无法进行快进合并。此时Git会执行三方合并操作,在考虑每个分支最新的提交以及它们共同的历史祖先的基础上生成一个新的合并提交。 例如,假如在master上有一个B2提交后创建了dev,并分别在这两个分支上进行了新的修改(如对不同文件的更改)。当尝试将这两个分支合并时,Git会产生一个包含这些变更的新提交: ```bash $ git checkout master Switched to branch master $ git merge dev Merge made by the recursive strategy. test-2.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ``` 合并完成后,dev分支可以被删除因为它已经被整合到master中了: ```bash $ git branch -d dev ``` ### 3. 合并冲突(Merge Conflict) 当两个不同的提交修改同一个文件的同一部分时就会产生合并冲突。在这种情况下Git不会自动创建新的合并提交而是暂停过程,标记出有冲突的文件等待用户手动解决。 例如,在master分支上的B2和dev分支上的B3都修改了相同的文件的一部分代码,则尝试将这两个分支合并会提示存在冲突: ```bash $ git checkout master Switched to branch master $ git merge dev Auto-merging test-1.txt CONFLICT (content): Merge conflict in test-1.txt Automatic merge failed; fix conflicts and then commit the result. ``` 此时,需要手动编辑这些文件来解决冲突后标记它们为已解决(使用`git add`命令),然后提交合并结果: ```bash $ git add test-1.txt $ git commit -m Resolved merge conflicts ``` 完成以上步骤即完成了含冲突的合并。 总结上述三种情景,根据不同的分支提交历史情况,`git merge`会有相应的不同行为。从简单的快进到复杂的三方合并再到需要人工干预解决冲突的情况都有可能遇到。在团队协作中合理使用此命令能够有效地将各个成员的工作成果整合起来以保证项目的顺利推进。
  • Linux中SCP使方法大全
    优质
    本文章全面介绍Linux系统中的SCP命令,详细讲解其基本用法、参数设置及常用场景示例,帮助用户轻松实现文件的安全传输。 SCP是Secure Copy的缩写,用于远程文件拷贝。它使用SSH1进行数据传输,并采用与SSH1相同的认证方式来确保安全。不同于rcp,在需要的情况下,scp会要求用户提供密码。此外,还提到了cp命令在Linux中的用法:将一个档案复制到另一个档案或将多个档案复制到目录中。具体来说,可以使用`find . -name .svn -type d -exec rm -fr {} \;`来删除所有.svn文件夹。 SCP和CP的详细说明如下: - SCP用于安全地在不同主机之间传输文件。 - CP命令用来将一个或多个文件复制到另一个位置。