现在在自己的centos7上跑了应用,有个需求:重启该应用。实现如下
shell关闭占用某端口应用,并重启
#! /bin/bash
#set path to support crontab
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin
# shutdown the pre process
name=$(lsof -i:8080|tail -1|awk '$1!=""{print $1}')
if [ -z $name ]
then
echo "No process can be used to killed!"
else
id=$(lsof -i:8080|tail -1|awk '$1!=""{print $2}')
kill -9 $id
echo "Process name=$name($id) kill!"
fi
(./proxygo &>> proxy_$(date '+%Y%m%d%H%M%S').log &)
echo 成功启动@$(date)
exit 0
lsof -i:8080|tail -1|awk '$1!=""{print $2}'
列出占用8080端口的应用;只打印一行;如果那一行第一个字段不为空,打印第二个字段(pid)。最后pid被赋值给了name
shell关闭某进程
#! /bin/bash
pname=proxygo
#set path to support crontab
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin
# shutdown the pre process
name=$(ps -aux|grep $pname |grep -v "grep"|awk '$1!=""{print $11}')
if [ -z $name ]
then
echo "No process can be used to killed!"
else
id=$(ps -aux|grep $pname|grep -v "grep"|awk '$1!=""{print $2}')
kill -9 $id
echo "Process name=$name($id) kill!"
fi
exit 0
知识点
- name=$(表达式) 将表达式产生的值赋给name
- tail -n somefile 打印最后n行
- awk ‘$1!=""{print $2}’ 第一个词不为空,则打印第二个词
- if [ -z $name ] 字符串不为空