Centos脚本编程一例,程序运行提示菜单、自动查杀进程和后台运行

吐槽先:刚写一个开头,网络断了,竟然没存上,现在是手机上网中。
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

界面如下:
Centos脚本编程一例,程序运行提示菜单、自动查杀进程和后台运行_第1张图片

查杀进程

其中的 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
窗外绵绵雨,心有凉凉意。

你可能感兴趣的:(软件开发,centos,linux,shell,菜单,后台运行,自动删除指定进程)