CentOS7 uwsgi重启(通过shell脚本获取进程号并kill)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7 uwsgi重启(通过shell脚本获取进程号并kill)相关的知识,希望对你有一定的参考价值。

参考技术A uWSGI 通过 xxx.ini 启动后会在相同目录下生成一个 xxx.pid 的文件,里面只有一行内容是 uWSGI 的主进程的进程号。
启动:
uwsgi --ini xxx.ini
重启:
uwsgi --reload xxx.pid
停止:
uwsgi --stop xxx.pid
以上是当前网上对于uwsgi重启操作的最常见的描述,但是笔者通过ini文件启动时发现并没有生成xxx.pid文件。于是自然的想法是通过shell脚本获取进程号并进行kill操作,脚本如下:

获取进程号的命令需要包含在``或$()之间,笔者在此过程中遇到过两个问题,描述如下:

中变量未加双引号,加上双引号该问题解决。

shell脚本定时重启tomcat

crond 是linux用来定期执行程序的命令,我们通过crond来定期执行shell脚本重启tomcat。下面我以CentOS release 6.3(版本查看cat /etc/issue)为例详细描述一下操作步骤:

1、编写shell脚本

vi restart_cat.sh

#!/bin/sh  
. /etc/profile  
pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk 'print $2'`  
dat=`date '+%Y-%m-%d %H:%M:%S'`  

echo $dat  
echo $pid  

if [ -n "$pid" ]  
then  
  
   echo ===========shutdown================  
   /root/tomcat/apache-tomcat-7.0.82/bin/shutdown.sh  
   sleep 1  
   pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk 'print $2'`  
   if [ -n "$pid" ]  
   then  
      
      sleep 1  
      echo ========kill tomcat==============  
      kill -9 $pid  
      
   fi  
   sleep 1  
   echo ===========startup.sh==============  
   /root/tomcat/apache-tomcat-7.0.82/bin/startup.sh  
   
else  
echo ===========startup.sh==============  
/root/tomcat/apache-tomcat-7.0.82/bin/startup.sh  

fi  

2、编辑crontab

crontab -e

如何设定定时时间详见如下描述:

示例:

0 2 * * * /root/restart_cat.sh >> /root/restart_cat.log 每天2点执行/root/restart_cat.sh脚本并把执行日志追加到/root/restart_cat.log文件中

3、重启crond

service crond stop 关闭

service crond start 启动

service crond restart 重启

4、查看定期执行的命令

crontab -l

到此我们已经成功创建了定时任务。

为创建的脚本添加权限:

chmod +x /root/restart_cat.sh

以上是关于CentOS7 uwsgi重启(通过shell脚本获取进程号并kill)的主要内容,如果未能解决你的问题,请参考以下文章

uwsgi 关闭/重启 夯死问题

环境搭建-CentOS 7上通过Shell脚本自动化安装Harbor

CentOS7通过shell脚本自动部署oracle12c

第二十一章 SHELL脚本-CENTOS7.5知识

shell脚本定时重启tomcat

linux shell 脚本通过log和pid监控程序执行并重启jar