1、
java -jar demo.jar
说明:用这种方法启动后,不能继续执行其它命令了,如果想要继续执行其它命令,就都打断,打断一般用ctrl+c。
2、
java -jar demo.jar &
第2种在第1种方式的基础上在命令的结尾增加了&,&表达的意思是在后台运行。
这种方式可以避免打断后程序停止的问题,但是避免不了关闭当前窗口后程序停止的问题。
3、
nohup java -jar demo.jar &
第3种在第2种方式的基础上,在命令的最前面增加了nohup。nohub是什么?
nohup是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行。
加了nohup后,即使关掉命令窗口,后台程序demo.jar也会一直执行。
4、
nohup java -jar demo.jar >1.txt &
第4种在第3种的基础上,在后面增加了>1.txt,意思是将nohup java -jar demo.jar的输出重定向到1.txt文件中,即输出内容不打印到当前窗口上,而是输出到1.txt文件中。
第3种没有加>1.txt,它的输出重定向到nohup.out文件中,nohup.out也就是nohup命令的默认输出文件。
修改日志输出文件
nohup java -jar demo.jar >1.txt 2>&1 &
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
“>1.txt 2>&1” :表示将 stdout 和 stderr 合并后重定向到 1.txt
启动脚本:GetGoodWeb-0.0.1-SNAPSHOT.sh
#!/bin/bash
JAVA_HOME=/usr/local/soft/java/jdk1.8.0_231
PATH=$PATH:$JAVA_HOME/bin # shell脚本必须指定,因为脚本不会自动加载环境变量,不写的话导致出现此错误
app='/usr/javasite/GetGoodWeb-0.0.1-SNAPSHOT.jar' #jar包的决定路径
args='-server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC' #java程序启动参数,可不写
LOGS_FILE=/dev/null # 把打印的日志扔进垃圾桶
cmd=$1 #获取执行脚本的时候带的参数
pid=`ps -ef|grep java|grep $app|awk '{print $2}'` # 抓取对应的java进程
startup(){
aa=`nohup java -jar $args $app >> $LOGS_FILE 2>&1 &`
echo $aa
}
if [ ! $cmd ]; then
echo "Please specify args 'start|restart|stop'"
exit
fi
if [ $cmd == 'start' ]; then
if [ ! $pid ]; then
startup
else
echo "$app is running! pid=$pid"
fi
fi
if [ $cmd == 'restart' ]; then
if [ $pid ]
then
echo "$pid will be killed after 3 seconds!"
sleep 3
kill -9 $pid
fi
startup
fi
if [ $cmd == 'stop' ]; then
if [ $pid ]; then
echo "$pid will be killed after 3 seconds!"
sleep 3
kill -9 $pid
fi
echo "$app is stopped"
fi
sudo chmod +x GetGoodWeb-0.0.1-SNAPSHOT.sh
./GetGoodWeb-0.0.1-SNAPSHOT.sh start
#提示如下则为成功:
#/usr/javasite/GetGoodWeb-0.0.1-SNAPSHOT.jar is running! pid=50529
1.先查看防火墙是否开启的状态,以及开放端口的情况:
systemctl status firewalld.service(查看防火墙开启还是关闭)
sudo firewall-cmd --list-all(可以查看端口开放情况)
2.使用以下命令来开启或者关闭虚拟机的防火墙
systemctl stop firewalld.service(停止防火墙)
systemctl start firewalld.service(打开防火墙)
disable firewalld.service(关闭开机自启)
3.接下来通过以下命令开放http 8080(80) 端口:
sudo firewall-cmd --add-service=http --permanent (允许http服务)
sudo firewall-cmd --add-port=8080/tcp --permanent(打开8080端口)
注:命令末尾的–permanent表示用久有效,不加这句的话重启后刚才开放的端口就又失效了。
4.最后重启防火墙:
sudo firewall-cmd --reload (查看端口开放情况)
sudo firewall-cmd --list-all
发现 services: 出现 http 服务,ports:出现了8080/80 端口: