009-Linux nohup

一、基础概述

1、/dev/null

  可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 

  用处: 
    禁止标准输出.    1 cat $filename >/dev/null   # 文件内容丢失,而不会输出到标准输出. 
    禁止标准错误.    2>/dev/null 这样错误信息[标准错误]就被丢弃

2、> 和 >> 、< 、结合&等同于

  Linux shell中有三种输入输出,分别为标准输入,标准输出,错误输出,分别对应0,1,2。系统默认值是1,我们可以直接通过输出重定向>(或>>,表示追加)将某种输出重定向到其他地方,如设备,文件

  >大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)

  <小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入: 命令 < 文件" 这是将文件作为命令输入

  >> 是追加内容

  > 是覆盖原有内容,代表重定向到哪里

    echo "aaa">log.txt  含义:将aaa写入log.txt

    echo "bbb">>log.txt  含义:追加bbb到log.txt

    >log.txt  含义:清空重新写入,待写入

    :>log.txt  含义:清空重新写入

    ls > ls.log  #标准输出重定向 到ls.log

    ls 2> ls.log #标准错误重定向 到ls.log

    ls > /dev/null #重定向到null设备,相当于直接忽略输出

  示例:1>/dev/null 2>&1的含义

 

    1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 

    2 表示stderr标准错误 

    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 

  含义:

    1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 

    2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

3、& 命令 

  & 放在命令后面表示设置此进程为后台进程

  默认情况下,进程是前台进程,这时此进程(命令执行相当于本质是开启一个进程)就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。

  语法:command &

4、nohup

  不挂断地运行命令。no hangup的缩写,意即“不挂断”。忽略所有挂断(SIGHUP)信号

  语法:nohup Command [ Arg ... ] [ & ]

  nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。 如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

 

命令:nohup echo  </dev/null &>>start.log &

  说明:nohup 【echo  </dev/null &>>start.log】 &

  echo  </dev/null &  含义:/dev/null输入给echo 作为后台进程,

  >> start.log 追加到start.log 文件中

5、Java  

java jar启动
linux中启动 java -jar 后台运行程序
直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉。以下方法可让jar运行后一直在后台运行。

方式一:java -jar xxx.jar &

说明: 在末尾加入 & 符号

方式二、

(1)执行java -jar xxx.jar后

(2)ctrl+z 退出到控制台,执行 bg

(3)exit

完成以上3步,退出SHELL后,jar服务一直在后台运行。

方式三、

nohup java -jar xxxx.jar & (推荐)

将运行的jar 错误日志信息输出到log.file文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。

nohup java -jar app.jar >/home/admin/logs/stdout.log 2>&1 &

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2019-07-03 15:39  bjlhx15  阅读(323)  评论(0编辑  收藏  举报
Copyright ©2011~2020 JD-李宏旭