工作中经常SSH远程的服务器上面重启各种服务器,重启服务时(如:tomcat服务),“查进程ID”=》“杀相应进程”。一次两次感觉还好,操作频繁了,用久了就感觉很繁琐,有没有什么工具可以一键重启服务(如:tomcat服务)。对于shell脚本基本没写过,记录一下学习过程吧。
研究了半天想用shell脚本实现,根据进程名称杀进程。后来才发现,竟然有现成的命令可以用。
pkill -f name
-------------下面是研究过程,自己记录一下----------------
输入指令交互示例#!/bin/bash
## author:itkey
## 每次收到启动,frp感觉挺麻烦的,写个脚本直接搞定挺好
## chmod +x *.sh 增加脚本可执行权限
date "+%Y-%m-%d %H:%M:%S 星期%w"
echo '==============脚本菜单==============='
echo '1.内网穿透'
echo '2.开启redis服务'
echo '3.开始宿管系统本地服务器(正式库)'
echo '4.查看宿管系统的进程'
read -p "请选择:" task
echo "你选择的任务是:$task"
if ((task==1)); then
echo "1.内网穿透"
sh /Users/itkey/mac/soft/itkey_shell/frppay.sh
fi
if ((task==2)); then
echo "2.开启redis服务"
cd /Users/itkey/mac/soft/redis-6.0.7/src
./redis-server
fi
if ((task==3)); then
echo "3.开始宿管系统本地服务器(正式库)"
cd /Users/itkey/mac/Runtime/LiveBOSTomcat_SG_PROD/bin
./startup.sh
tail ../logs/catalina.out
fi
if ((task==4)); then
echo "4.查看宿管系统的进程ID"
ps -ef | grep LiveBOSTomcat_SG | grep -v grep | awk '{print $2}'
fi
根据进程名称获取进程ID
ps -ef查进程格式
ps -ef | grep 这里换成进程名称 | grep -v grep | awk '{print $2}'
pgrep -f name
pkill -f name
参考:
https://blog.csdn.net/baidu_33850454/article/details/78568392