zoukankan      html  css  js  c++  java
  • 转 nohup java -jar xxx.jar >/dev/null 2>&1 &

    「linux」后台启动nohup经常跟的>/dev/null 2>&1是什么意思

    我们在写启动脚本的时候,会用nohup &,这个大家都知道,但是经常会有 >/dev/null 2>&1。比如

    nohup java -jar xxx.jar >/dev/null 2>&1 &

    这个到底表示什么意思

    nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

    当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

    几个基本符号及其含义

    • /dev/null 表示空设备文件
    • 0 表示stdin标准输入
    • 1 表示stdout标准输出
    • 2 表示stderr标准错误

    对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。

    对于2 ,表示标准错误,stderr。

    2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null

    可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.

    再说2>&1?

    在>左边的2,表示stderr标准错误。不需要加&

    但是在>右边的1必须加&,才表示stdout标准输出

    如果不加&,表示的是文件名

    另外>左边如果不加,默认是1

    最后一个&

    &代表在后台运行

    测试

    ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;

    ls xxx 2>1测试,没有xxx这个文件的错误输出到了文件1中;

    ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;

    ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了

    2、1>/dev/null 2>&1的含义 

    > 代表重定向到哪里,例如:echo "123" > /home/123.txt 
    1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 
    2 表示stderr标准错误 
    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 

    那么本文标题的语句: 
    1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 
    2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 

    3、/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。 

  • 相关阅读:
    【Android开发艺术探索】Activity的生命周期和启动模式
    【Android】基于WanAndroid开放API实现的文章阅读APP
    【Android】天气应用
    【Android】动态更新Icon
    【Android】VirtualAPK的简单使用
    Android数据存储之SD卡文件操作
    Android数据存储之SQLite数据库
    Android数据存储之共享参数SharedPreferences
    tensor维度变换
    tensor数据基操----索引与切片
  • 原文地址:https://www.cnblogs.com/python-xiakaibi/p/12882789.html
Copyright © 2011-2022 走看看