首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在重定向输出时测试退出状态不起作用?

在重定向输出时,测试退出状态不起作用的原因是因为重定向输出只是将命令的输出结果发送到指定的位置,而不会影响命令本身的执行状态。退出状态是用来表示命令执行的结果,通常用于判断命令是否成功执行或出现错误。

当我们使用重定向输出时,比如将命令的输出结果保存到文件中,命令本身的执行状态并不会受到影响。无论命令的输出结果是成功还是失败,退出状态都不会改变。

测试退出状态通常是通过检查特定的退出状态码来判断命令的执行结果。在Unix/Linux系统中,退出状态码为0表示命令成功执行,非0表示命令执行出现错误。但是在重定向输出时,无论命令的输出结果如何,退出状态码都不会改变。

因此,在重定向输出时,如果想要测试命令的退出状态,应该直接在命令执行后进行判断,而不是依赖于重定向输出的结果。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 云数据库 MySQL 版:提供稳定可靠的 MySQL 数据库服务。产品介绍链接
  • 云存储(COS):提供安全、稳定、低成本的云端对象存储服务。产品介绍链接
  • 人工智能平台(AI Lab):提供丰富的人工智能算法和模型,支持开发者快速构建人工智能应用。产品介绍链接
  • 物联网套件(IoT Suite):提供全面的物联网解决方案,帮助用户快速搭建物联网应用。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

nohup 命令 解决 SSH关闭窗口,程序也中断的问题!

今天阿里云服务部署IOT测试软件, 发现关闭SHH窗口,IOT程序也退出了。 查了半天资料,发现通过nohup指令能解决该问题。 以下是网上查找的资料,供自己查看。...一个进程退出导致一个孤儿进程组产生, 如果任意一个孤儿进程组进程处于STOP状态, 发送 SIGHUP 和 SIGCONT 信号到该进程组中所有进程....相关问题 为什么守护程序就算是 ssh 打开的, 关闭ssh也不会影响其运行?...nohup 命令,默认情况下(非重定向),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中...2>&1& 2>&1 解释: 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

6K20

Springboot项目使用java -jar 启动jar包参数详解

启动中指定系统变量,多环境(测试、预发、线上配置)的区分 排查jar包冲突,可以指定启动的-verbose:class 打印出启动的应用实际加载类的路径,来排查来源。...linux执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符.../null 2>/dev/null 那么可能会有些同学会疑问,为什么要用重定向绑定,而不是像>/dev/null 2>/dev/null这样子重复一遍呢。...退出状态:该命令返回下列出口值: 126 可以查找但不能调用 Command 参数指定的命令。 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。...否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态

5.6K30
  • linux 后台运行进程:& , nohup

    当我们终端或控制台工作,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够每天的非负荷高峰时间段运行(例如凌晨)。...后台执行 比较下 & 与 nohup: & :后台运行,但用户终端退出(断连),命令结束 nohup test.sh & : 后台运行,用户终端退出(断连)依然保持运行,可使用标准输入输出 & 当在前台运行某个作业...如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中: command > out.file 2>&1 & 这样,所有的标准输出和错误输出都将被重定向到一个叫做out.file...试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出....一个进程退出导致一个孤儿进程组中产生,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。

    4.5K40

    详解nohup devnull 2>&1 含义的使用

    nohup命令:如果你正在运行一个进程,而且你觉得退出帐户该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。...试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出; 换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出....你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中; ls xxx 2>&1测试,不会生成1这个文件了...command 2>&1 >file 2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是终端。>file 后输出才被重定向到file,但标准错误仍然保持终端。...2. command 2>&1 >file 这个命令中实现重定向的关键系统调用序列是: dup2(1,2) open(file) == 3 dup2(3,1) 为什么要用 /dev/null

    3.2K31

    书中关于伪终端的一个纰漏

    当 slowout 结束,子进程读伪终端主设备返回 0,它知道工作进程结束后,也即将结束自己的工作, 但是父进程一直卡在读终端输入上,并不知道工作进程已经退出,于是 pty 子进程向父进程发送一个...我测试的结果是,如果  slowout 不从标准输入读取的话,则一切正常; 而一旦有任何读取动作,都会导致  slowout 卡死,进而 pty 子进程卡死,这两个进程都没有机会退出。...,果然卡死第一次 getchar 上: >cat out.log turn 1 type any char to continue 为什么会这样呢?...我们首先要清楚,重定向到 /dev/null 指的是 pty 父进程,并不是 slowout,因为 slowout 重定向到伪终端是固定的,不随外面的重定向操作而改变;同理,输出重定向到 out.log...其实所有的重定向操作 pty 程序运行起来时就已经完成了,根本无法传递到 slowout 的参数上(即使传递到了也不生效,因为没有 shell 做解析)。

    45220

    shell脚本 >devnull 2>&1

    2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出重定向到空设备文件。...拓展mohup命令 nohup命令:如果你正在运行一个进程,而且你觉得退出帐户该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。...你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中; ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了...command 2>&1 >file 2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是终端。>file 后输出才被重定向到file,但标准错误仍然保持终端。...2>&1 >file 这个命令中实现重定向的关键系统调用序列是: dup2(1,2) open(file) == 3 dup2(3,1) 为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向

    43210

    Linux文件基础IO

    注意:使用open,如果不存在该文件,一定要注意第二个参数要传什么参数,第三个参数是必须要传的,不然就是错误文件。 这个函数可以传三个参数的原因就是为了处理不存在的文件。...> 输出重定向 >>追加重定向 <输入重定向 重定向的本质就是,上层fd不变,在内核中更改fd对应的struct file*的地址。...那么,上面说到重定向的时候,为什么我们子进程退出关闭了一个文件,按理来说父进程也会关闭文件,但是并没有,因为有一个叫做引用计数: 结构体中有一个专门计数有多少个指针指向这个位置,如果这个数为0,文件就会关闭...除了上面的策略,还有两种特殊的情况: 1.用户强制刷新 2.进程退出 ——— 一般都要进行缓冲区刷新 缓冲区的位置在哪里 我们C语言的时候就一直再说缓冲区,那么它到底什么位置呢?...,那么子进程和父进程只读的时候是不会进行写拷贝的,但是这里就要谁先退出谁就进行写拷贝!

    1.3K00

    【转】Java中Runtime.exec的一些事 

    当shutdown过程启动后,只有通过调用halt方法才能中止shutdown的过程并退出JVM。 Abort: abort退出JVM就是停止运行但并不一定进行shutdown。...所以我们不能判断外部命令什么时候执行完毕而我们的程序还需要继续执行的情况下,我们就应该循环的使用exitValue来取得外部命令的返回状态,并在外部命令返回作出相应的处理。...6 不良好的重定向命令输出 错误的认为exec方法会接受所有你命令行或者Shell中输入并接受的字符串。...一个外部进程执行完之前你不能得到他的退出状态 在你的外部程序开始执行的时候你必须马上控制输入、输出、出错这些流。...9 问答 问:为什么Runtime.exec("ls")没有任何输出

    2.6K20

    Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作

    (1)jobs命令 功能:查看当前终端后台运行的任务 jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated...(STDOUT)重定向到 那个文件,这里重定向到了python.log 2、 & 表示在后台执行脚本 这样可以到达目的,但是,我们退出shell窗口的时候,必须用exit命令来退出,否则,退出之后...2>&1 & 说明: 1、1是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符 1> python.log 简化为 > python.log,表示把标准输出重定向到...python.log这个文件 2、2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。...0.0 5980 752 pts/0 S+ 15:48 0:00 grep python 在当我们直接关闭shell窗口,再连接上服务器,查看Python的进程,发现进程还在 但是,python

    11.3K21

    构建shell脚本一文就够

    输入重定向 输入重定向输出重定向正好相反。输入重定向将文件的内容重定向到命令,而非将命令的输出重定向到文件。 使用的符号是小于号(<)。...bash中,将一个数学运算结果赋给某个变量,可以用美元符和方括号($[operator])将数学表达式围起来。...这也是为什么我们脚本处理计算麻烦和我们需要特定的工具和方法来进行处理。一定要注意区分。 退出脚本 前面运行的脚本都是命令执行完成,脚本自动结束。...`来保存上个已执行命令的退出状态码。...127 exit命令 默认,shell脚本会以脚本最后的一个命令的退出状态退出。 但是我们可以改变这种默认行为,返回自己的退出状态码。exit命令允许脚本结束指定一个状态退出码。

    1.5K51

    Shell流程控制

    []、[[]]测试,也可以是任何其它命令,test-commands 用于条件测试,它只判断命令的退出状态码是否为 0,为 0 则为 true。...for ((i=1;i<=3;++i));do echo $i;done 1 2 3 对于成员测试类的语法,两点需要注意: 命令行解析,路径扩展的过程单词分割过程之后 迭代的元素中包含了空白 touch...,如果测试退出状态码为 0,则执行一次循环体语句cmd_list,然后再测试test_cmd_list,一直循环,直到测试退出状态码非 0,循环退出。...其中数值n表示退出状态码。 break [n] 退出整个循环,包括for、while、until和select语句。其中数值n表示退出的循环层次。...如果 return function 之外,且不在 source 的执行过程中,则这是一个错误用法。 为什么要让 return 单独作用于 source 命令?

    91600

    linux nohup及tail-f用法

    启动linux服务器的weblogic,一般是bin 目录下面执行nohup ./startWeblogic& 那么它与普通的./startWeblogic有什么区别呢?...如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。 退出状态:该命令返回下列出口值: 126 可以查找但不能调用 Command 参数指定的命令。...否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。...nohup命令及其输出文件 nohup命令:如果你正在运行一个进程,而且你觉得退出帐户该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。...该命令的一般形式为:nohup command & 使用nohup命令提交作业 如果使用nohup命令提交作业,那么缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件

    4.2K31

    Shell脚本——内置命令

    现在你应该能理解类似ll这样的命令为什么与ls -l的效果是一样的吧。 三、echo命令 echo 是一个 Shell 内建命令,用来终端输出字符串,并在最后默认加上换行符。...如果没有进行重定向,默认就是从键盘读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。...如果用户没有指定时间内输入完成,那么 read 将会返回一个非 0 的退出 五、exit命令 exit 是一个 Shell 内置命令,用来退出当前 Shell 进程,并返回一个退出状态;使用$?...可以接收这个退出状态; exit 命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值是 0。 一般情况下,退出状态为 0 表示成功,退出状态为非 0 表示执行失败(出错)了。...Shell 进程执行出错,可以根据退出状态来判断具体出现了什么错误,比如打开一个文件,我们可以指定 1 表示文件不存在,2 表示文件没有读取权限,3 表示文件类型不对。

    2.1K10

    linux命令行与shell脚本编程大全和鸟哥的私房菜_linux进入命令行

    命令替换:将命令输出赋给变量:反引号字符(`)或者$() 重定向 输出重定向 : >(写入文件) , >>(追加) 输入重定向 : <(基本输入) , <<(内联输入重定向) 管道( | ) 将一个命令的输出作为另外一个命令的输入...(0表示默认正常退出) exit命令:允许脚本结束指定一个退出状态码,如 exit 5 九、使用结构化命令 if语句 if语句会运行if后面的那个命令,如果该命令的退出状态码是0,then部分的命令会被执行...test命令,test命令返回非零退出状态,while命令会停止执行。...,until命令要求你制定一个通常返回非零推出状态码的测试命令,只有测试命令的退出状态码不为0,才会执行循环中列出的命令。...: 可以对循环的输出使用管道或进行重定向,这可以通过done命令后添加一个处理命令来实现 for file in /root/Desktop/Scripts/* do if [ -f "$

    2.4K30

    Linux命令之nohup

    nohup 命令可以使命令永久的执行下去,和终端没有关系,退出终端也不会影响程序的运行; & 是后台运行的意思,但当用户退出的时候,命令自动也跟着退出。...至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。...这就是为什么 nohup ./command.sh >output 2>output出错的原因了 。 0,1,2可以用来指定需要重定向的标准输入或输出一般使用时,默认的是标准输出,既1。...当我们需要特殊用途,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2>log,这样标准输出还是屏幕上,但是错误信息会输出到log文件中。...这一点非常有用,一般很大的stdou和stderr当你不关心的时候或者当我们由于其他原因不需要回显程序的所有信息,就可以将输出重定向到/dev/null。

    2.3K10

    while read line -

    循环中的重定向 或许你应该在其他脚本中见过下面的这种写法: while read line do … done < file 刚开始看到这种结构,很难理解< file...这里有一个原则,这个原则掌握好了,这个问题就很简单了: 对循环重定向的输入可适用于循环中的所有需要从标准输入读取数据的命令; 对循环重定向输出可适用于循环中的所有需要向标准输出写入数据的命令;...当在循环内部显式地使用输入或输出重定向,内部重定向覆盖外部重定向。...还记得while根据其后的命令退出状态来判断是否执行循环体吗?...是的,read命令也有退出状态,当它从文件file中读到内容退出状态为0,循环继续惊醒;当read从文件中读完最后一行后,下次便没有内容可读了,此时read的退出状态为非0,所以循环才会退出

    1.6K20

    Linux||后台运行及查看状态命令

    如果你正在运行一个进程,而且你觉得关闭终端该进程还不会结束,那么可以使用nohup命令,使服务器能够在你关闭终端之后继续运行相应的进程。...Arg:一些参数,可以指定输出文件。 &:让命令在后台执行,终端退出后命令仍执行。...不对输出进行设置的时候,所有的输出会被重定向到nohup.out的文件中,或者 > /dev/null 丢弃到黑洞中。...2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到out.file文件中。 &和nohup &:指在后台运行,当用户退出账号或终端,命令将一起退出。...bash 1.sh & #运行1.sh,当退出服务器,该命令停止 nohup:不挂断的运行,注意并没有后台运行的功能,指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,即使我们断开

    7.5K40

    linux后台执行命令&和nohup的具体使用方法

    当我们终端或控制台工作,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够每天的非负荷高峰时间段运行(例如凌晨)。...& 当在前台运行某个作业,终端被该作业占据;可以命令后面加上& 实现后台运行。例如:sh test.sh & 适合在后台运行的命令有f i n d、费时的排序及一些s h e l l脚本。...(ps -ef | grep 进程号 或者 kill -9 进程号) nohup 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户),作业就会停止运行...该命令的一般形式为: nohup command & 如果使用nohup命令提交作业,那么缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件: nohup...所以使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。 ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态

    2.7K31

    4. shell 语法

    默认变量 文件参数变量 执行shell脚本,可以向脚本传递参数。...上一条命令的退出状态(注意不是stdout,而是exit code)。...4.14 exit 命令 exit命令用来退出当前shell进程,并返回一个退出状态;使用$?可以接收这个退出状态。 exit命令可以接受一个整数值作为参数,代表退出状态。...如果不指定,默认状态值是 0。 exit退出状态只能是一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。 示例: 创建脚本test.sh,内容如下: #!...# 传入参数个数不是1,则非正常退出,exit code为1 1 4.15 文件重定向 每个进程默认打开3个文件描述符: stdin标准输入,从命令行读取数据,文件描述符为0 stdout标准输出,向命令行输出数据

    2.5K20
    领券