赞
踩
01、
if [ 条件表达式 ]
then
符合该条件执行的语句
Fi
02、
if [ 条件表达式 ];then
符合该条件执行的语句
fi
if语句的“分支”指的是不同测试结果所对应的执行语句(一条或多条)。对于单分支的选择结构,只有在“条件成立”时才会执行相应的代码,否则不会执行任何操作。单分支if语句的语法格式如下所示
if [ 条件表达式 ];then
符合该条件执行的语句
elif [ 条件表达式 ];then
符合该条件执行的语句
else
符合该条件执行的语句
fi
对于双分支的选择结构,要求针对“条件成立” “条件不成立”两种情况分别执行不同的操作。双分支if语句的语法格式如下所示:
由于if语句可以根据测试结果的成立、不成立分别执行操作,所有能够嵌套使用,进行多次判断。多分支if语句的语法格式如下:
#!/bin/bash
system=`uname -s`
if [ "$system"="Linux" ];then
echo "Linux"
elif [ "$system" ="FreeBSD" ] ; then
echo "FreeBSD"
elif [ "$system" ="Solaris" ] ; then
echo "Solaris"
elif [ "$system" ="Windows" ] ; then
echo "Windows"
else
echo "What?"
fi
#!/bin/bash
read -p "please input a score:" num
if [ $num -ge 0 ]&&[ $num -lt 60 ];then
echo "sorry,you are lost!"
elif [ $num -ge 60 ]&&[ $num -lt 85 ];then
echo "just soso!"
elif [ $num -le 100 ]&&[ $num -ge 85 ];then
echo "good job!"
else
echo "input score is wrong , the range is [0-100]!"
fi
#!/bin/bash
if [ ! -d "/etc" ]; then
`mkdir -p /etc`
echo "/etc文件不存在,已经自动创建"
else
echo “该目录已经存在,不执行任何操作”
fi
用 if 条件语句针对 Nginx Web 服务或 MySQL 数据库服务是否正常进行检测,如果服务未启动,则启动相应的服务。
端口监控
在服务器本地监控服务端口的常见命令有 netstat、ss、lsof
从远端监控服务器本地端口的命令有 telnet、nmap、nc
监控服务进程或进程数
此方法适合本地服务器,过滤的是进程的名字。命令为:
ps -ef|grep nginx|wc-l
ps -ef|grep mysql|wc-l
在客户端模拟用户访问
使用 wget 或 curl 命令进行测试(如果监控数据库,则需要转为通过 Web 服务器去访问数据库),并对测试结果做三种判断:
利用返回值(echo $?)
获取特殊字符串(需事先开发程序)
根据 HTTP 响应 header 的情况
登录 MySQL 数据库判断
通过 MySQL 客户端连接数据库,根据返回值或返回内容判断。
例如:
mysql -uroot -pylt -e “select version();” &>/dev/null; echo $?
端口监控:
[root@test etc]# systemctl start mariadb [root@test etc]# systemctl status mariadb ● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2021-04-15 18:12:58 CST; 32s ago Process: 1921 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) Process: 1838 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) Main PID: 1920 (mysqld_safe) CGroup: /system.slice/mariadb.service ├─1920 /bin/sh /usr/bin/mysqld_safe --basedir=/usr └─2085 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/us... Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: MySQL manual for more instructions. Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: Please report any problems at http://mari...ra Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: The latest information about MariaDB is a.../. Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: You can find additional information about...t: Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: http://dev.mysql.com Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: Consider joining MariaDB's strong and vib...y: Apr 15 18:12:56 test mariadb-prepare-db-dir[1838]: https://mariadb.org/get-involved/ Apr 15 18:12:57 test mysqld_safe[1920]: 210415 18:12:57 mysqld_safe Logging to '/var/log/ma...g'. Apr 15 18:12:57 test mysqld_safe[1920]: 210415 18:12:57 mysqld_safe Starting mysqld daemon ...sql Apr 15 18:12:58 test systemd[1]: Started MariaDB database server. Hint: Some lines were ellipsized, use -l to show in full. [root@test etc]# netstat -lntup|grep 3306|wc -l 1 [root@test etc]# netstat -lntup|grep mysql|wc -l 1 [root@test etc]# [root@test etc]# ss -lntup|grep mysql|wc -l 1 [root@test etc]# ss -lntup|grep 3306|wc -l 1 [root@test etc]# lsof -i tcp:3306|wc -l 2
远端监控服务器监控本地端口:
nmap 127.0.0.1 -p 3306|grep open|wc -l
1
echo -e "\n"|telnet 127.0.0.1 3306 2>/dev/null|grep Connected|wc -l
1
nc -w 2 127.0.0.1 3306 &>/dev/null
服务器进程或进程数进行监控(适合本地服务器):
[root@test etc]# ps -ef|grep mysql|grep -v grep|wc -l
2
#!/bin/bash
#if [ `netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'` -eq 3306 ]; then
#if [ "`netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'`" = "3306" ]; then
#if [ `netstat -lntup|grep mysqld|wc -l` -gt 0 ]; then
#if [ `lsof -i tcp:3306|wc-l` -gt 0 ]; then
if [ `ps -ef|grep -v grep|grep mysql|wc -l` -gt 0 ]; then
echo "MySQL is Running."
else
echo "MySQL is Stopped."
/etc/init.d/mysqld start
fi
端口监控:
/application/nginx/sbin/nginx
netstat -lntup|grep nginx|wc -l
1
netstat -lntup|grep 80|wc -l
1
ss -lntup|grep -w 80|wc -l
1
lsof -i tcp:80|wc -l
3
服务器进程或进程数进行监控(适合本地服务器):
ps -ef|grep nginx|grep -v grep|wc -l
2
#!/bin/bash
#if [ `netstat -lntup|grep nginx|wc -l` -gt 0 ]; then
#if [ `netstat -lntup|grep -w 80|wc -l` -eq 80 ]; then
#if [ `lsof -i tcp:80|wc -l` -gt 0 ]; then
if [ `ps -ef|grep -v grep|grep nginx|wc -l` -ge 1 ]; then
echo "Nginx is Running."
else
echo "Nginx is Stopped."
/application/nginx/sbin/nginx
fi
该脚本可能会存在一些小问题,请各位大佬指正!!!
#!/bin/bash prog="rsync" pidfile=/var/run/rsyncd.pid exec=/usr/bin/rsync . /etc/init.d/functions [ -f /usr/bin/rsync ] || echo "please install and config rsync!" if [ $# -ne 1 ]; then echo $"USAGE:$0 {start|stop|restart}" exit 1 fi if [ "$1" = "start" ]; then $exec --daemon >/dev/null 2>&1 if [ -s "$pidfile" ] then action "rsync haved already been running" /bin/false else $exec --daemon >/dev/null 2>&1 action "start rsyncd:" /bin/true fi elif [ "$1" = "stop" ]; then if [ -f "$pidfile" ] then kill -USR2 `cat $pidfile` rm -f ${pidfile} action "stop rsyncd:" /bin/true else action "rsync no running!" /bin/false fi elif [ "$1" = "restart" ]; then if [ -f "$pidfile" ] then kill -USR2 `cat $pidfile` rm -f ${pidfile} action "stop rsyncd:" /bin/true else action "rsync no running!" /bin/false fi sleep 2 $exec --daemon >/dev/null 2>&1 if [ -s "$pidfile" ] then action "rsync haved already been running" /bin/false else $exec --daemon >/dev/null 2>&1 action "start rsyncd:" /bin/true fi else echo $"USAGE:$0 {start|stop|restart}" exit 2 fi
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。