终结指定名称查相关进程
ps -efww|grep -w 'test.py'|grep -v grep|cut -c 9-15|xargs kill -9
说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
“ps -efww”是查看所有进程的命令。这时检索出的进程将作为下一条命令“grep“的输入,注意要结束其它程序时,请将上面命令中的helloworld替换成其它程序名,-w ‘helloworld’ 强制 PATTERN 仅完全匹配字词。
“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。
“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
“xargs kill -9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该命令。
“kill -9”会强行杀掉指定进程,这样就成功清除了同名进程。
统计指定名称进程的数量
`ps -ef|grep 'test.py'|grep -v 'grep'|wc -l`
shell中数值比较
用于数值比较的无非大于、小于、等于、大于等于、小于等于这几个。
比较格式: [ 数值1 比较符 数值2 ] 注意左边的括号与数值1之间有一个空格,同样,数值2和右边的括号之间也有空格。
数值比较运算符对应下面几个:
比较符 | 解释 |
-eq | 判断相等,相等返回true,否则返回false |
-ne | 判断是否不相等,不相等返回true,否则返回false |
-gt | 判断左边是否大于右边的值,大于则返回true,否则返回false |
-lt | 判断左边是否小于右边的值,小于则返回true,否则返回false |
-ge | 判断左边是否大于或等于右边的值,大于则返回true,否则返回false |
-le | 判断左边是否小于右边的值,小于则返回true,否则返回false |
根据配置文件中状态,对应用进行监控并自启动配置
#!/bin/bash
cou=0
pythonpath="/root/anaconda3/bin/python3"
exefile="/opt/dev/test.py"
pyThread=`ps -ef|grep test.py|grep -v 'grep'`
echo $pyThread
count=`ps -ef|grep test.py|grep -v 'grep'|wc -l`
echo "进程数量:"$count
# __readINI [配置文件路径+名称] [节点名] [键值]
function __readINI() {
INIFILE=$1; SECTION=$2; ITEM=$3
_readIni=`awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
echo ${_readIni}
}
_status=( $( __readINI /opt/jupyter/test/conf.ini system status) )
echo "配置文件状态:"${_status}
if [ $_status = "run" ] && [ $count -eq $cou ];then
echo "状态为运行中,但是程序没有启动,执行启动"
nohup $pythonpath $exefile&
elif [ $_status != "run" ] && [ $count -gt $cou ];then
echo "状态为停止,但有程序启动,强制停止程序"
ps -efww|grep -w 'test.py'|grep -v grep|cut -c 9-15|xargs kill -9
fi
加上定时任务
*/5 * * * * root sh /opt/SSS.sh > /opt/XXX/autoRun_$(date +\%Y\%m\%d).log 2>&1
安装 crontabs服务并设置开机自启:
$ yum install crontabs
$ systemctl enable crond
$ systemctl start crond123
配置定时规则
vim /etc/crontab
保存生效
crontab /etc/crontab
查看任务
crontab -l