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 &