发表于: 2020-03-04 22:31:10

1 1201


学习shell脚本 服务器上的操作


一条很重要的命令(刷新日志)

tail -f debug-log.log

正则(可以匹配任意字符串)

脚本看的有点吃力 nginx配置有点昏

#!/bin/bash

#############################################

# this script is Tomcat Management tool                                                                    #

#############################################

#

# functions这个脚本是给/etc/init.d里边的文件使用的。

# https://www.cnblogs.com/image-eye/archive/2011/10/26/2220405.html

. /etc/init.d/functions

# 通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。

# set env

export PATH=$PATH:/bin:/sbin:/usr/sbin

# 设置中文字符

export LANG="zh_CN.UTF-8"

# 设置tomcat启动脚本

export tomcatStart=/www/server/tomcat/bin/startup.sh

# 检测是否以root权限运行脚本

# whoami是操作系统中用于查看当前有效用户名的命令

# >&2 以错误的提示方式输出此句话 0 代表鍵盤輸入 1 代表螢幕輸出

if [[ "$(whoami)" != "root" ]]; then

   echo "请以root用户运行此脚本" >&2

   exit 1

fi

# /etc/init.d/functions 这个脚本是给/etc/init.d里边的文件使用的,函数库

#. /etc/init.d/functions

#if [ ! -f /opt/software/apache-tomcat-7.0.72/bin/startup.sh ]

# 1 -f 判断文件是否存在

# http://blog.51cto.com/kangyang/810182

if [ ! -f ${tomcatStart} ]

   then

   echo "tomcat 未安装,请安装后执行"

   exit 1

# 用fi表示if语句块的结束

fi

# 启动

function start(){

   # ps -ef |grep java|grep -v grep|grep -v sh

   # ps -ef |grep java 显示 ps -ef 中包含java的行

   # grep -v $value 反向查找,输出不包含变量的行

   # |grep -v grep 过滤掉包含grep的行,当执行grep时ps -ef也会显示出执行命令

   # |grep -v sh 过滤掉包含sh的行

   # |wc -l 统计过滤后的行数

   # $1 -eq $2 对比是否相等

   if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -eq 0 ]

       # true 执行 then

       then

           # /dev/null 代表空设备文件

           # >  :代表重定向到哪里,例如:echo "123" > /home/123.txt

           # 1  :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

           # 2  :表示stderr标准错误

           # &  :表示等同于的意思,2>&1,表示2的输出重定向等同于1

           # 1 > /dev/null 2>&1 语句含义

           # 1 > /dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

           # 2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

           /bin/sh ${tomcatStart} >/dev/null 2>&1

           # 在Linux底下,每个程序执行完毕都会返回一个退出码给调用者,一般情况下0表示成功,其他值表明有问题,当然某些程序的退出码有特殊含义

           # 0表示成功(Zero - Success)

           # 非0表示失败(Non-Zero  - Failure)

           # 2表示用法不当(Incorrect Usage)

           # 127表示命令没有找到(Command Not Found)

           # 126表示不是可执行的(Not an executable)

           # >=128 信号产生

           # $? 上一个命令的退出码

           [ $? -eq 0 ]&&\

# 进程休眠1秒钟

           sleep 5

           # /bin/true 命令啥都不做,只设置退出码为0。

           action "tmocat 已启动." /bin/true

else

           action "tomcat 是启动的." /bin/true

exit 3

   # if语句结束

   fi

}

# 停止

function stop(){

   if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -gt 0 ]

       then

           PID=`ps -ef |grep java|grep -v grep|awk '{print $2}'`

           # kill信号 中,只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,要想强制杀死进程,要加 -9参数。

           kill -9 $PID

           [ $? -eq 0 ]&&\

echo "tomcat 停止中..."

           sleep 2

           action "tomcat 已经停止了." /bin/true

else

           action "tomcat 是停止的." /bin/true

exit 4

   fi

}

# 重启

function restart(){

   if [ `ps -ef |grep java |grep -v grep|grep -v sh|wc -l` -gt 0 ]

       then

        PID1=`ps -ef |grep java|grep -v grep|awk '{print $2}'`

           kill -9 $PID1

           [ $? -eq 0 ]&&/bin/sh ${tomcatStart} >/dev/null 2>&1

           [ $? -eq 0 ]&&echo "tomcat 重启中 ..."

           sleep 5

           action "tomcat 已重启 ." /bin/true

else

           action "tomcat 没有运行,正在启动中 ..." /bin/true

[ $? -eq 0 ]&&/bin/sh ${tomcatStart} >/dev/null 2>&1

           [ $? -eq 0 ]&&\

sleep 5

           action "tomcat 已启动 ." /bin/true

fi

}

# 查看状态

function status(){

   if [ `ps -ef |grep java |grep -v grep|wc -l` -gt 0 ]

           then

                action "tomcat 正在运行"  /bin/true

else

                 action "tomcat 已停止运行" /bin/false

exit 5

   fi

}

# 将脚本后的第一个单词匹配到$1

case $1 in

   # 如果是start 执行 start()

   start)

   start

;;

   stop)

   stop

;;

   restart)

   restart

;;

   status)

   status

;;

   # 如果没有匹配到 输出echo语句

   *)

   echo "请在脚本后添加正确的执行参数:start|stop|restart|status"

#结束case

esac


 今日问题 : 1村里网不太好,服务器老是断 2出了一个500的BUG还没解决





返回列表 返回列表
评论

    分享到