• 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    界面如下:
    在这里插入图片描述

    查杀进程

    其中的 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 "---------------"  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    简单解释:
    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
    
    • 1

    xagrs:接收管道传过来的参数
    xargs kill -9:将前面获取到的进程号通过空格分割,传递给 kill -9,杀死所有进程

    后台运行

    后台运行实现的脚本很简单,但是如果非程序运行目录,则需要进行如下操作
    第一步,准备后台运行的脚本:
    名称为:
    shell1

    cd /iot/center/api/v1/go/watcher
    nohup ./iot_watcher > output 2>&1 &
    
    • 1
    • 2

    直接运行上述脚本不会成功,目录不会切换的,因此会报错,需要使用 source 命令进行目录引用,代码如下
    名称为
    shell2

    source shell1
    
    • 1

    运行shell2即可。不知道还有没有比较简介的方法。

    是记备忘。
    maraSun BJFWDQ
    窗外绵绵雨,心有凉凉意。

  • 相关阅读:
    2022 谷歌出海创业加速器展示日: 见证入营企业成长收获
    网络安全系列-四十一: arkime的docker-compose安装及可视化pcap文件示例
    HIVE优化和数据倾斜、合并小文件
    IQueryable和IEnumerable的区别
    统一建模语言UML---类图
    LeetCode 热题 HOT 100 第七十七天 399. 除法求值 中等题 用python3求解
    【C语言】分支和循环语句(下)
    一文讲解Linux Scheduler之rt选核流程
    <C++>解密 构造函数和析构函数
    关于Android JS与原生的交互
  • 原文地址:https://blog.csdn.net/Uman/article/details/126328861