shell脚本检测linux服务
#!/bin/bash #description: 服务巡检脚本 export PATH=/usr/local/nginx/sbin:/usr/local/apache/bin:/usr/local/mysql/bin:/usr/local/redis/bin:/usr/local/php/bin:$PATH (type -a nc || yum install nc -y) &> /dev/null create_mysql_auth(){ cat > $HOME/.my.cnf <<\EOF [client] user= password= port=3306 host=127.0.0.1 EOF } remove_mysql_auth(){ rm -f $HOME/.my.cnf } check_mysql(){ create_mysql_auth mysqladmin ping &> /dev/null && return 0 || return 1 } check_redis(){ nc -zv 127.0.0.1 6378 &> /dev/null && return 0 || return 1 } check_crond(){ ps -C 'crond' &> /dev/null && return 0 || return 1 } check_crond(){ pgrep crond &> /dev/null && return 0 || return 1 } restart_nginx(){ if ps -C 'nginx' &> /dev/null; then echo -n "stop nginx " service nginx stop || pkill nginx || pkill -9 nginx || { echo "failed."; return 1; } echo "successed." sleep 3 fi echo -n "start nginx " service nginx start && { echo "successed."; return 0; } || { echo "failed."; return 2; } } restart_apache(){ if ps -C 'httpd' &> /dev/null; then echo -n "stop httpd " service httpd stop || pkill httpd || pkill -9 httpd || { echo "failed."; return 1; } echo "successed." sleep 3 fi echo -n "start httpd " service httpd start && { echo "successed."; return 0; } || { echo "failed."; return 2; } } restart_redis(){ if ps -C 'redis-server' &> /dev/null; then echo -n "stop redis " service Redis stop || pkill 'redis-server' || pkill -9 'redis-server' || { echo "failed."; return 1; } && { echo "successed."; sleep 3; } fi echo -n "start redis " service Redis start && { echo "successed."; return 0; } || { echo "failed."; return 2; } } restart_mysql(){ if ps -C 'mysqld' &> /dev/null; then echo -n "stop mysql " service mysqld stop || pkill mysqld || { echo "failed." ; return 1; } && { echo "successed."; sleep 3; } fi echo -n "start mysql " service mysqld start && { echo "successed."; return 0; } || { echo "failed."; return 2; } } check_local_all_sites(){ urls=`grep 'server_name' /usr/local/nginx/conf/nginx.conf | grep -Ev '#|\\$|rewrite' | sed -r 's#server_name\s+([^ ]+)(;| )(.*)#http://\1/#g' | sort -u` let c=0 for url in ${urls[@]}; do result=$(curl -m 20 --retry 3 -sk -L $url -w "%{http_code}|%{time_total}" -o /dev/null) #只要存在一个站点不返回200, 则返回1 code=${result%|*} total_time=${result#*|} if [[ $code != "200" ]]; then let c++ break fi done return $c } main(){ check_local_all_sites || { restart_apache && restart_nginx; } check_redis || restart_redis check_mysql || restart_mysql remove_mysql_auth } main
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix