关于部署脚本的问题

来源:4-7 通过shell脚本启动gin服务

爱吃apple的阿狸

2023-04-10 15:12:31

老师给的脚本有点问题啊,

if ps -a | grep $srv_name | awk '{print $1}' | xargs kill $1

这里的命令杀不掉我的服务,我拿这条命令直接在机器上执行也不行,我发现 ps -a | grep xxx, 这里就找不到进程。 ps -a这个命令貌似不能显示所有进程,不知道为啥。。


我直接把脚本前面的这条获取Pid的命令拿来用了

pgrep -x $srv_name


我改后的脚本,这样貌似就可以了

#!/bin/bash

srv_name="goods_web_main"
chmod +x ./$srv_name
#重启,如果已经存在则关闭重启
pid=$(pgrep -x $srv_name)
if [ "$pid" ]; then
  echo "${srv_name} is running"
  echo "shutting down ${srv_name}"
  kill -15 "$pid"
  echo "starting ${srv_name}"
  ./$srv_name > /dev/null 2>&1 &
  echo "start ${srv_name} success"
else
 echo "starting ${srv_name}"
  ./$srv_name > /dev/null 2>&1 &
  echo "start ${srv_name} success"
fi


还有个问题,如果通过sshPublisher这个插件把项目传输到部署服务器上后:

https://img.mukewang.com/climg/6433b0dc0991d19012381450.jpg

多次构建,部署服务器上的target/** 这些文件已经存在了,不会覆盖存在的文件,

我后续点击构建,返回结果都是黄色的,console里面报:

ERROR: Exception when publishing, exception message [Failure]
Finished: UNSTABLE

使用ls -l 查看部署服务器上的文件,发现时间都没变过。。

相当于传输文件失败。。。


我的解决办法是加个个清除远端的代码,这样每次都会先把之前传输的文件删掉了。

https://img.mukewang.com/climg/6433b67e09ba058710700839.jpg

这是我踩的两个坑~





写回答

1回答

bobby

2023-04-12

赞一个。。

0

Go开发工程师

未来3-5年企业高性能项目不可替代的语言,从基础到项目实战再到重构,真正从入门到精通

507 学习 · 577 问题

查看课程