系统相关
首页 > 系统相关> > 《操作系统实验四:程序部署》(linux环境Shell脚本部署jar)

《操作系统实验四:程序部署》(linux环境Shell脚本部署jar)

作者:互联网

实验四:程序部署

在linux系统部署一个HelloWorld程序
• 写启动脚本,满足退出登陆后,程序能照常运行
• 写终止脚本,满足软终止,即程序退出前打出一个“quiting” 消息。

1.在IDEA下编写HelloWorld程序
需求:

import sun.misc.Signal;
import sun.misc.SignalHandler;
@SuppressWarnings("restriction")//抑制禁止使用劝阻或禁止引用的警告
public class TestSignal implements SignalHandler {
    private void signalCallback(Signal signal) {
        //"TREM"表示SIGTERM-此信号请求进程停止运行,即linux命令中的kill -15 [进程号],对应的-15
        if (signal.getName().equals("TERM")) {
            // 程序关闭
            try {
                System.out.println("quitting!");
                System.exit(0);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println(signal.getName() + "is recevied.");
    }
    @Override
    public void handle(Signal signalName) {
        signalCallback(signalName);//回调函数,调用上面signalCallback方法
    }
    public static void main(String[] args) throws InterruptedException {
        TestSignal testSignalHandler = new TestSignal();
        /*SIGTERM-此信号请求进程停止运行。这个信号可以忽略。进程有时间正常关闭。当一个程序正常关闭时,
        这意味着它有时间保存进度和释放资源。换句话说,它不是被迫停止的。SIGINT与SIGTERM非常相似。*/
        Signal.handle(new Signal("TERM"), testSignalHandler);
        for (;;) {
            Thread.sleep(3000);
            System.out.println("hello world is running......");
        } } }

2.利用Idea将程序打成jar包,利用终端工具MobaXterm复制到linux系统下
在这里插入图片描述
3.编辑启动脚本:
需求:

#!/bin/sh
PROJECTNAME=HelloWorld
pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'`
if [ $pid ]; then
echo "$PROJECTNAME is running and pid=$pid"
else
echo "Start success to start $PROJECTNAME ...."
nohup java -jar HelloWorld.jar > run.log &
fi

在这里插入图片描述
4.编辑停止脚本
需求:

#!/bin/sh
PROJECTNAME=HelloWorld
pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}' `
if [ $pid ]; then
echo "$PROJECTNAME is running and pid=$pid"
kill -15 $pid
if [[ $PROJECTNAME -eq 0 ]];then
echo "sucess to stop $PROJECTNAME "
fi
else
echo "fail to stop $PROJECTNAME "
fi

在这里插入图片描述
测试部署:
1.执行启动脚本

sh start.sh	//启动脚本
ps -ef | grep HelloWorld //查看HelloWorld进程

在这里插入图片描述
脚本执行成功!进程号为1765
2.使用 tail -f run.log 命令动态查看日志
在这里插入图片描述
每三秒打印一次”hello world is running"!
3.测试关闭脚本
命令:

sh stop.sh //执行关闭脚本
ps -ef | grep HelloWorld //查看HelloWorld进程

在这里插入图片描述
程序关闭成功!
4.执行命令 cat run.log 查看日志
在这里插入图片描述
输出“quitting”成功!!!

标签:脚本,Shell,grep,部署,PROJECTNAME,pid,HelloWorld,jar,sh
来源: https://blog.csdn.net/qq_45273552/article/details/110632090