打算在跳板机上写一个shell脚本,批量检查远程服务器上的main进程是否在健康运行中。...:00:00 grep --color=auto main [root@two002 tmp]# ps -ef|grep main|grep -v grep|wc -l 0 shell检查脚本如下 [.../bin/bash NUM=$(ps -ef|grep main|grep -v grep|wc -l) if [ $NUM -eq 0 ];then echo "It's not good!...如上执行结果,发现脚本执行过程中,看到赋予NUM参数的结果值是2!但是手动执行ps -ef|grep main|grep -v grep|wc -l的结果明明是0!!...故在跳板机上,批量检查远程服务器的main进程运行状态的脚本为: [root@tiaoban ~]# cat /usr/bin/main_check #!
第十七章系统监控脚本 上一章我们介绍了shell编程的语法和应用,在实际生产环境中,Linux的系统运维者经常会查看系统中的各项性能、参数,为了提高查看效率,我们可以编写一些监控脚本以便系统的自动化运维...脚本思路:通过sar命令查看cpu使用率,获取idle的值,因为显示的是带小数的,所以先截取到整数部分(因为if判断对整数判断最为简便),再判断是否到达报警阈值,若到达则查询所有进程,抓取http进程并统计数量.../bin/bash #监控CPU,当cpu使用率超70%时,统计服务进程数,假设本机提供的服务是#http while true do date +"20%y-%m-%d %H:%M:%S">>...再者为了能够让用户在注销后该脚本仍会运行,则可以使用nohup调用: nohup /var/scripts/cpuMonitor.sh & 再者,因为脚本是周期性记录日志的,那么生成的日志文件,将频繁被写入新内容...脚本思路:通过free命令获取内存总量、使用量两个数据赋值给变量,在计算使用率,判断是否到达阈值,若到达,则查询所有进程,并按占内存比例降序排序后记录前10个进程。
笔者平时属于非专业运维人员,但是偶尔也需要接触一些测试服务器和个人VPS服务器。所以收集了一些常用的Shell脚本,希望跟我一样的开发人员能有一些收获。...查询/统计 统计文件中数量 wc -c or wc -l or wc -w 计算行号 nl 搜索数据 grep 文件权限 系统用户 cat /etc/passwd or cat /etc/shadow...冒号分隔的当前用户收件箱的文件名列表;bash shell会检查列表中的每个文件来看有没有新邮件 OPTARG getopts命令处理的最后一个选项参数值 OPTIND getopts命令处理的最后一个选项参数的索引号...= str2 检查str1是否和str2不同 str1 检查str1是否比str2小 str1 > str2 检查str1是否比str2大 -n str1 检查str1的长度是否非0 -z...显示命令的帮助信息 -i 忽略文本大小写 -l 产生输出的长格式版本 -n 使用非交互模式(批量) -o 指定将所有输出重定向到输出文件 -q 以安静模式运行 -r 递归地处理目录和文件 -s 以安静模式运行
今天去客户那边做技术交流,客户希望能聊聊nginx和redis两个服务的核心参数及其相关注意事项。...宣讲结束后,给客户写了两个小demo脚本,开放给各位,有需要的朋友可以在这个基础上自行集成和丰富。 1、检查redis服务shell脚本 #!.../bin/bash # 获取Redis进程ID redis_pid=$(pidof redis-server) # 检查Redis是否在运行中 if [ -z "$redis_pid" ]; then..." echo "Redis键值对数量:$redis_keys" 2、检查nginx服务的shell脚本: #!.../bin/bash # 检查nginx进程是否正在运行 nginx_process=$(pgrep nginx) if [ -z "$nginx_process" ]; then echo "Nginx
所以我们可以在/opt/test.sh中加入进程数的判断,如果进程数大于2,就说明存在已有任务在运行,此时应该退出执行count=$(ps -ef | grep /opt/test.sh | wc -l...exit 1fido something但是事与愿违,当我们在/opt/test.sh中通过ps命令获取定时任务运行数量的时候发现,如果只存在当前的任务运行时,得到的进程数是3,如果有其他一个已在运行,...中起了一个子shell,所以在子shell执行ps的同时多了一个当前脚本任务运行的进程,所以比正常进程数多1,所以上面代码我们需要改为:count=$(ps -ef | grep /opt/test.sh...,其优势在于除了可以通过检查文件是否存在来判断是否存在已经运行的任务,还可以再通过锁文件里面的进程号来做第二次确认。...而进程号文件锁则可以在文件锁判断之外,再对锁文件中的进程号进行判断是否还在运行,具体代码如下:#!
export文件,运行k8s的node节点挂载nfs共享目录 这里可以使用node节点的ip网段进行挂载配置 也可以直接使用node节点的具体ip(一个ip配置一行)进行挂载配置 # vim /etc/...keepalived.service && systemctl enable keepalived.service 查看服务进程是否启动 # ps -ef|grep keepalived 6)检查...&& systemctl restart rsyncd 检查rsync服务进程是否启动 # ps -ef|grep rsync 3)Slave节点机器配置rsyncd.conf 就把master主机...# systemctl enable rsyncd && systemctl restart rsyncd 检查rsync服务进程是否启动 # ps -ef|grep rsync 4)手动验证下Master...节点服务ip slave_web 为Slave服务器的rsyncd.conf中配置的同步模块名 --password-file=/opt/rsyncd.passwd 是Master节点同步到Slave节点使用的密码文件
check_nginx script "/etc/keepalived/nginx_pid.sh" #检查对应位置的文件是否存在 interval 2 #定义执行间隔为2秒 fall.../bin/bash nginx_kp_check () { nginxpid=`ps -C nginx --no-header |wc -l` if [ $nginxpid -eq 0.../bin/bash nginx_kp_check () { nginxpid=`ps -C nginx --no-header |wc -l` if [ $nginxpid -eq 0...web2 在master上down掉nginx服务 [root@master ~]# watch -n1 'killall nginx' 每隔秒执行一次killall nginx命令 [root@master...web1 [root@client ~]# curl 192.168.0.150 web2 重启master上的keepalived服务 [root@master ~]# ip add #查看VIP是否飘回来
此脚本正确运行前提: 该系统没有逻辑卷的情况下使用,因为逻辑卷df -h、df -i 时,使用率百分比是在第4列,而不是第5列。如有逻辑卷,则会漏统计逻辑卷使用情况。...在脚本中实现这样的功能,当时间是0点和12点时,需要将目录/data/log/下的文件全部清空,注意只能清空文件内容而不能删除文件。...有很多sh进程,再ps查看: ? 这个脚本,运行很慢,因为制定了cron,上一次还没有运行完,又有了新的运行任务。太多肯定会导致系统负载升高。当务之急就是先把这些在跑的给kill掉。...get_numbers done fi else get_numbers fi ---- 【脚本58】检查服务 先判断是否安装http和mysql...,没有安装进行安装,安装了检查是否启动服务,若没有启动则需要启动服务。
节点同步到Slave节点使用的密码文件,文件中配置的是Slave节点服务器的/etc/rsyncd.passwd文件中配置的密码 设置Rsync+Inotify自动同步 这里需要注意:不能设置Master...所以需要确保只有一方在执行自动同步到另一方的操作。方式就是判断当前节点服务器是否存在VIP,如存在VIP则自动同步数据到另一台节点上。如不存在VIP则不执行自动同步操作。.../bin/bash VIP_NUM=`ip addr|grep 220|wc -l` RSYNC_INOTIRY_NUM=`ps -ef|grep /usr/bin/inotifywait|grep -.../bin/bash VIP_NUM=`ip addr|grep 220|wc -l` RSYNC_INOTIRY_NUM=`ps -ef|grep /usr/bin/inotifywait|grep -.../bin/bash VIP_NUM=`ip addr|grep 220|wc -l` RSYNC_INOTIRY_NUM=`ps -ef|grep /usr/bin/inotifywait|grep -
ok report_SelfInitiatedProgram="" #自启动程序数量 ok report_RuningService="" #运行中服务数 ok report_Crontab="" #...-l)" #自启动服务数量 report_RuningService="$(echo "$process" | wc -l)" #运行中服务数量 else conf=$(/sbin/chkconfig..." | wc -l)" #运行中服务数量 fi echo "服务配置" echo "--------" echo "$conf" | column -t echo "" echo "正在运行的服务" echo...,含年份 # 很遗憾last命令不支持显示年份,只有"last -t YYYYMMDDHHMMSS"表示某个时间之间的登录,我 # 们只能用最笨的方法了,对比今天之前和今年元旦之前(或者去年之前和前年之前...############################" if [ $(ps -ef | grep defunct | grep -v grep | wc -l) -ge 1 ];then echo
Webminal 的功能: 在线 Linux/bash 终端,无需安装; 练习 Linux 命令,包括文件系统、文件管理、在 bash/awk/sed 和 MySQL 中编写脚本; 可获得 100MB...,可以在 Web 浏览器中运行 Linux。...可以在本地桌面和在线终端之间进行复制和粘贴; cocalc 的特征: 学习 Bash 脚本; 了解如何使用 Linux 命令行; 运行用 Python、R、PHP、Ruby、Go、Perl、Nodejs...language=bash 15、Shellcheck Shellcheck 是一个静态 Bash 语法检查工具,它可以在多种场景下使用,包括在线使用、命令行检查、编辑器配置。...尽管如此,强烈建议在浏览器上打开任何网站之前检查系统上是否存在任何其他恶意软件或病毒。一个有存在问题或有病毒的浏览器可能会破坏你学习 Linux 系统的流畅体验。
如果在字符串中用到了它们,需要在文本中使用一种引号,而用另外一种来将字符串划定起来 把文本字符串和 命令输出显示在同一行中。用 –n 参数: #!...变量允许你临时性的将信息存储在shell中,以便和脚本中的其他命令一起使用 11.4.1 环境变量 Shell维护着一组环境变量用来记录特定的系统信息。比如系统的名字,登录到系统的用户,UID等。...注意: 命令替换会创建一个子shell来运行对应的命令。子shell所执行命令是无法使用脚本中所创建的变量的。 在命令行提示符下使用路径./也会创建出子shell。 比如:test3脚本中 ....11.5.2 输入重定向 1.将文件的内容重定向到命令 小于号 < wc命令可以对数据中的文本进行计数。...还可以在bash计算机中赋值给变量,在bc计算机中创建的变量只在bc计算机中有效,不能再shell脚本中使用 11.8 退出脚本 Shell中运行的每个命令都使用退出吗告诉shell它已经运行完毕。
/bin/bash#主机信息每日巡检IPADDR=$(ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}')#环境变量PATH没设好,在cron...-l)" #自启动服务数量report_RuningService="$(echo "$process" | wc -l)" #运行中服务数量elseconf=$(/sbin/chkconfig |...="$(echo "$conf" | wc -l)" #自启动服务数量report_RuningService="$(echo "$process" | wc -l)" #运行中服务数量fiecho "...服务配置"echo "--------"echo "$conf" | column -techo ""echo "正在运行的服务"echo "--------------"echo "$process"...,含年份# 很遗憾last命令不支持显示年份,只有"last -t YYYYMMDDHHMMSS"表示某个时间之间的登录,我# 们只能用最笨的方法了,对比今天之前和今年元旦之前(或者去年之前和前年之前…
今天有台服务器a要把网站程序全部传输到另外一台服务器b上去,但离下班时间就只有1个小时了,为了准时下班,简单写了个shell脚本来监控是否有传输完,我先在服务器a上看了下网站程序总大小为12G,用du...需要的软件:rsync 脚本内容: #!.../bin/bash file=`du -sm /var/www/vhosts/|awk '{print $1}'` ps=`ps -C rsync --no-header|wc -l` if [...else if [ "$ps" = "1" ];then kill -9 $(ps aux | grep rsync |grep -v grep| awk '{print $2}') sleep...fi fi 脚本的大概思路就是查看文件夹的大小是否有跟服务器a的大小一样,如果不一样就检查rsync的进程是否有在运行,如果没有运行就kill掉,然后重新执行rsync的下载脚本.
/bin/bash # Filename: SendEmail.sh # Notes: 使用sendEmail # # 脚本的日志文件 LOGFILE="/tmp/Email.log" :>"$LOGFILE...%S) NUM1=$(ps -ef|grep nginx|grep -v grep|wc -l) NUM2=$(ps -ef|grep keepalived|grep -v grep|wc -l...\nIDC外网LB目前健康快乐地跑在$HOSTNAME-$IP服务器上呢,一切正常!...%S) NUM1=$(ps -ef|grep nginx|grep -v grep|wc -l) NUM2=$(ps -ef|grep keepalived|grep -v grep|wc -l...:$DATE \n告警等级:十分严重啊 \n告警信息:外网LB目前已不在$HOSTNAME服务器上正常运行,快点查看VIP是否转移到另一个LB节点,并确认LB服务是否正常提供!
在架构设计中,可以利用 nginx 的反向代理和负载均衡实现后端应用的高可用性,同时还需要考虑Nginx的单点故障,真正做到架构高可用性。...在自动故障转移的同时能通知到相关的应用负责人检查相关应用,排查隐患,彻底解决问题。...,如果有一台 web 服务器宕机,或者工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived 自动将服务器加入到服务器群中.../bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx...如果 yum 安装的 nginx,可以直接使用 nginx 命令可以启动 nginx,如果是源码安装,或者需要配置下环境变量或者更改下启动命令和绝对路径,并测试是否能正常启动 nginx。
Keepalived配置Nginx自动重启,实现7X24小时不间断服务 现在主备是正常的, Keepalived服务关闭会自动切换到backup, 那么要是Nginx挂了呢 136模拟Nginx停止.../bin/bash # 用于检测Nginx进程 A=`ps -C nginx --no-header |wc -l` # 判断Nginx是否宕机, 如果宕机, 尝试重启 if [ $A -eq 0 ]..., 使其启动备用机 sleep 3 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then # 终止 Keepalived进程 killall.../check_nginx_alive_or_not.sh nginx已经被启动, 恢复正常 在Keepalived配置脚本中增加监听, 让Keepalived自动去循环check..这个脚本 vi keepalived.conf...interface ens33 # 虚拟路由ID, 保持MASTER和BACKUP一致 virtual_router_id 51 # 优先级/权重 100 谁的优先级高, 在MASTER
报告以邮件发送到邮箱 在log下生成巡检报告。 #!...-l)" #自启动服务数量 report_RuningService="$(echo "$process" | wc -l)" #运行中服务数量 else conf=$(/sbin/chkconfig..." | wc -l)" #运行中服务数量 fi echo "服务配置" echo "--------" echo "$conf" | column -t echo "" echo "正在运行的服务" echo...,含年份 # 很遗憾last命令不支持显示年份,只有"last -t YYYYMMDDHHMMSS"表示某个时间之间的登录,我 # 们只能用最笨的方法了,对比今天之前和今年元旦之前(或者去年之前和前年之前...############################" if [ $(ps -ef | grep defunct | grep -v grep | wc -l) -ge 1 ];then echo
Linux 系统日常巡检脚本,巡检内容包含了,磁盘,内存 cpu 进程 文件更改 用户登录等一系列的操作 直接用就行了。 报告以邮件发送到邮箱 在log下生成巡检报告。 #!... -l)" #自启动服务数量 report_RuningService="$(echo "$process" | wc -l)" #运行中服务数量 else conf=$(/sbin/chkconfig..." | wc -l)" #运行中服务数量 fi echo "服务配置" echo "--------" echo "$conf" | column -t echo "" echo "正在运行的服务" echo...,含年份 # 很遗憾last命令不支持显示年份,只有"last -t YYYYMMDDHHMMSS"表示某个时间之间的登录,我 # 们只能用最笨的方法了,对比今天之前和今年元旦之前(或者去年之前和前年之前... ############################" if [ $(ps -ef | grep defunct | grep -v grep | wc -l) -ge 1 ];then echo
领取专属 10元无门槛券
手把手带您无忧上云