目录
(一) Linux 系统预留文件描述符
1、文件描述符
Linux系统预留可三个文件描述符:0、1和2
- 0 --- 标准输入(stdin)
- 1 --- 标准输出(stdout)
- 2 --- 标准错误(stderr)
- /dev/null 表示空设备文件
在下图中 "ls" 就是标准输入"0" , 而 所列出来的文件列表 "jdk1.8.0_181" 就是标准输出 "1"
此时输入一个 cd 命令 , 进入到一个不存在的文件夹内 , linux 就会显式的提示 "-bash: cd: test: No such file or directory" , 这就是标准错误输出 2
2、重定向
重定向">" ls 时将 标准输出 1 内容重定向输出到 ls.text 中 , 同理也可将错误输出 2 重定向, 注: 使用">"重定向时会先清空文件,然后再写入内容
重定向">>"二次重定向,将 标准输出 1 内容重定向至 ls.text 文件中 , 同理也可将错误输出 2 重定向 , 注意: 当使用">>"重定向时会将重定向的内容追加到现有文件的尾部累加起来
将标准输出 1 , 和标准错误输出 2 分别重定向
正常命令 2 > err.txt 1>out.txt
将标准输出 1 , 和标准错误输出 2 重定向到同一个文件
正常命令 &> output.txt
3、特殊文件 /dev/null 和 /dev/zero
1、特殊文件描述
/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。
在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。
/dev/zero : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。
2、特殊文件使用
/dev/null : 把/dev/null看作"黑洞"。它等价于一个只写文件,并且所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到。
然而, /dev/null对命令行和脚本都非常的有用。aaa-jar 为普通jar包
启动jar示例: nohup sh start_aaa-jar.sh aaa-jar>aaa-jar.log 2>&1 &
有时候,我们需要删除一些文件的内容而不删除文件本身也可以采用如下方式:
cat /dev/null > /var/log/messages
/dev/zero: 像/dev/null一样,/dev/zero也是一个伪文件,但它 实际上产生连续不断的null的流 (二进制的零流,而不是ASCII型的)。 写入它的输出会丢失不见 ,/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,像临时交换文件。
4、使用nohup 启动jar包
nohup java -server -Xms512m -Xmx512m -XX:PermSize=64m -jar xxx.jar --spring.profiles.active=test > /dev/null 2>&1 &
nohup命令
用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下
语法格式
nohup Command [ Arg … ] [ & ]
参数说明
Command: 要执行的命令。
Arg: 一些参数,可以指定输出文件。
&: 让命令在后台执行,终端退出后命令仍旧执行。
-server -Xms512m -Xmx512m -XX:PermSize=64m
指定内存大小
xxx.jar
你的jar包名称
–spring.profiles.active=test
运行环境为test
> /dev/null 2>&1
忽略输出文件