指定端口发布:
java -jar -Dserver.port=9999 boot.jar
指定环境发布:
--spring.profiles.active=dev
后台启动:
nohup 不挂断地运行命令;& 在后台运行 一般两个一起用
nohup java -jar boot.jar &
远程调试启动:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -jar xxx.jar
shell命令重定向绑定:
nohup command >/dev/null 2>&1 &
nohup java -jar boot.jar >/dev/null 2>&1 &
>/dev/null 2>&1
。这条命令其实分为两命令,一个是>/dev/null
,另一个是2>&1
。1. >/dev/null
这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。
2. 2>&1
这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。
linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。
>/dev/null 2>&1 VS 2>&1 >/dev/null
乍眼看这两条命令貌似是等同的,但其实大为不同。刚才提到了,linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令。那么我们同样从左到右地来分析2>&1 >/dev/null:
2>&1,将错误输出绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以错误输出会输出到屏幕。
>/dev/null,将标准输出1重定向到/dev/null中。
我们用一个表格来更好地说明这两条命令的区别:
命令 标准输出 错误输出 >/dev/null 2>&1 丢弃 丢弃 2>&1 >/dev/null 丢弃 屏幕
....