precisar
Para implantação do projeto SpringBoot (jar), você precisa primeiro fechar o projeto original e, em seguida, iniciar um novo projeto. Inserir comandos diretamente é demorado e trabalhoso e está sujeito a erros. Então, comece com um script.
roteiro
Nome do script: start.sh
Este script precisa ser colocado no mesmo diretório do pacote jar, para que o pacote jar possa ser encontrado corretamente.
#!/bin/bash
echo "部署开始:XXX系统"
echo "关闭服务(已开启的服务)"
PID=$(jps -l | grep HelloWorld.jar | awk '{print $1}')
if [ -n "$PID" ];then
kill -9 $PID
echo "关闭服务:完成"
else
echo "关闭服务:终止。无需关闭,没有已开启的服务"
fi
echo "启动服务"
nohup java -jar HelloWorld.jar > HelloWorld.log 2>&1 &
echo "部署完成:XXX系统"
comando de início
No diretório onde o script está localizado, execute o seguinte comando:
sh start.sh
Preste atenção ao problema
Atribuição de variável shell, sem espaços antes e depois do sinal de igual
No início, quando atribuí um valor ao pid, havia sinais de igual nas extremidades esquerda e direita do sinal de igual, o que causou um erro.
Resolva nohup: redirecionando stderr para stdout
É necessário exibir o erro e também inseri-lo no log de log.
Ou seja, o seguinte parágrafo é adicionado ao script:
2>&1
A função é enviar o erro para a saída padrão, porque a saída padrão é enviada para o log de log, portanto, tudo é inserido no log, de modo que a linha de comando não reportará a saída acima.
Sintaxe de variável de shell
Sintaxe curta:
$pid
Sintaxe completa:
${pid}
A sintaxe completa do aplicativo de variável não apenas deve incluir $, mas também colocar bons parênteses ao redor do nome da variável.
PS
A lógica de fechar o serviço aberto é forçar diretamente o fechamento do serviço.
A melhor maneira é deixar o serviço fechar sozinho e depois monitorar regularmente:
após um período de tempo, se o programa tiver sido fechado, inicie um novo projeto;
se ele exceder o tempo especificado e ainda assim não conseguir fechar com sucesso, force o fechamento. e, em seguida, inicie um novo projeto.
Essa lógica pode ser encontrada no link Referência de Script no final.
Shell de formato VSCode
http://www.taodudu.cc/news/show-4756426.html?action=onClick
referência
Referência do roteiro:
https://gitee.com/longzipeng/study_share/blob/master/web_demo/renren_deploy.sh