吐槽先:刚写一个开头,网络断了,竟然没存上,现在是手机上网中。
Linux 环境下,很多客户不熟悉,包括基本的程序运行都一筹莫展,因此给用户建立一个比较友好的界面就比较重要了。只有用户会登录到终端上,就可以使用,这样比较省事方便。
过程不再赘述,直接上本人的实际代码
简单菜单
clear
echo "结束当前运行的 API接口 进程"
./ka
echo "高铁设施健康感知平台V1.0"
echo "核心平台 API 接口进程"
echo "请选择运行模式(后台方式可以关闭终端)"
select var in "屏显方式" "后台运行" "退出";do
break;
done
if [ "$var" = "屏显方式" ]; then
source apiOn;
elif [ "$var" = "后台运行" ]; then
source apiOff;
elif [ "$var" = "退出" ]; then
echo "Thanks , bye bye!";
fi
界面如下:
查杀进程
其中的 ka, 是 kill api 的缩写,是在运行之前先杀掉之前运行的老进程, 代码如下:
NAME='rail_iot_api'
echo $NAME
prg=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $8}'`
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $prg
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"
简单解释:
prg=ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $8}'
用于获得应用程序的名字, 其中
grep -v:反向查找
grep -v grep:查找不含有 grep 的行
$0 第0(一)个参数
awk ‘{print $8}’` 打印符合条件的第8(九)个参数,即进程ID。
参考:https://blog.csdn.net/u012069313/article/details/124663148
该链接中的方法更为高效,引用文中的例子如下
ps -ef | grep java | grep job | grep -v grep | awk '{print $2}' | xargs kill -9
xagrs:接收管道传过来的参数
xargs kill -9:将前面获取到的进程号通过空格分割,传递给 kill -9,杀死所有进程
后台运行
后台运行实现的脚本很简单,但是如果非程序运行目录,则需要进行如下操作
第一步,准备后台运行的脚本:
名称为:
shell1
cd /iot/center/api/v1/go/watcher
nohup ./iot_watcher > output 2>&1 &
直接运行上述脚本不会成功,目录不会切换的,因此会报错,需要使用 source 命令进行目录引用,代码如下
名称为
shell2
source shell1
运行shell2即可。不知道还有没有比较简介的方法。
是记备忘。
maraSun BJFWDQ
窗外绵绵雨,心有凉凉意。