背景
目前我在使用jenkins做自动化测试工作,目前有个grpc服务,需要配置不同的参数后,启动服务再测试不同结果。用shell方式配置在自动化脚本当中,遇到了几个问题,在这里总结一下
1、启动python 的virtualenv环境
平常启动virtualenv中的python环境,我们都是用如下语句执行:
source ./pipeline_env/bin/activate #无法在sh脚本中执行
取而代之的是使用点代替source:
. ./pipeline_env/bin/activate #可以在sh脚本中执行
2、启动grpc服务后进行下一步
由于grpc服务启动后,就输入一些信息后,停在那里了,无法执行下一步。所以我想到的替代方法就是把他转到后台执行,这样就可以执行下一步了。
nohup python start_grpc_server.py> my.log 2>&1 &
sleep 15 #为启动服务留下15s时间
3、如何重启后台运行的grpc服务
但是如果下一次配置新参数后,怎么把这个后台进程杀了,重启新的grpc服务,搜索后发现两种方法。
第一种,使用cat方法记录:
nohup python start_grpc_server.py> my.log 2>&1 &
echo $! > save_pid.txt #把pid记录在文档中
kill -9 `cat save_pid.txt`
rm save_pid.txt
第二种会简单一些:
ps -ef|grep start_grpc_server.py|grep -v grep|cut -c 9-15|xargs kill -9 #通过一系列命令杀了