Shell脚本实现监控rsync数据是否传输完_linux shell

今天有台服务器a要把网站程序全部传输到另外一台服务器b上去,但离下班时间就只有1个小时了,为了准时下班,简单写了个shell脚本来监控是否有传输完,我先在服务器a上看了下网站程序总大小为12G,用du -sm查看也就是11517,服务器也不会有人再传东西上去了,所以我可以放心容量不会再变大了。

系统:centos 5.x

需要的软件:rsync

脚本内容:

复制代码 代码如下:

#!/bin/bash
file=`du -sm /var/www/vhosts/|awk '{print $1}'`
ps=`ps -C rsync --no-header|wc -l`
if [ "$file" = "11517" ];then
echo "files downloaded!"
else
if [ "$ps" = "1" ];then
kill -9 $(ps aux | grep rsync |grep -v grep| awk '{print $2}')
sleep 1
nohup sh /root/rsync.sh &
else
echo "rsync is running..."
fi
fi

脚本的大概思路就是查看文件夹的大小是否有跟服务器a的大小一样,如果不一样就检查rsync的进程是否有在运行,如果没有运行就kill掉,然后重新执行rsync的下载脚本.

ps:当然这个脚本有点简陋,没有去检测进程状态,如果出现僵尸进程的话,是没有办法处理的.当然我这里就不再修改了,大家可以自己去修改.

时间: 2024-12-09 10:58:55

Shell脚本实现监控rsync数据是否传输完_linux shell的相关文章

shell脚本实现监控shell脚本的执行流程及变量的值_linux shell

很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的shell例子,来完成这个对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察. shell程序代码: 复制代码 代码如下: #!/bin/bash function setlogfile {     if ! [ -z "$1" ]; then   

linux shell 脚本实现tcp/upd协议通讯(重定向应用)_linux shell

前几天发了重定向以及管道相关使用方法,今天这里发些很有趣的例子.通过重定向实现基于tcp/udp协议的软件通讯. linux 设备里面有个比较特殊的文件: /dev/[tcp|upd]/host/port 只要读取或者写入这个文件,相当于系统会尝试连接:host 这台机器,对应port端口.如果主机以及端口存在,就建立一个socket 连接.将在,/proc/self/fd目录下面,有对应的文件出现. 一.测试下:/dev/tcp/host/post文件 [chengmo@centos5  sh

Shell脚本实现查杀子进程、僵尸进程_linux shell

核心服务器上跑了一堆的脚本.程序,难免有时候会出现僵尸进程,死不死活不活的在那里占用资源,最初只是写了个根据关键字查杀进程的linux shell脚本,后来发现很多时候进程死在那里的时候其实是内部调用子进程的时候出现了问题,这时候光杀父进程根本没解决根本问题.比如说rsync的时候通过ssh来连接,rsync本身没问题,但可能ssh死掉了.因此重新写了脚本,递归查找子进程. 复制代码 代码如下: #!/bin/sh # 递归找到导致进程僵死的最底层子进程并杀除. ParentProcessID=

Shell脚本实现的阳历转农历代码分享_linux shell

闲来无事,想在Linux下用shell写一个阳历转农历的脚本,断断续续大概一个星期终于搞定.现在拿出来与大家分享. 1.缘由 本脚本实现原理是查表法(因为公式有误差):基于农历新年为基准,对农历新年前后两个不同的农历进行计算. 写这个脚本之前是想在Linux 终端命令提示符中加入阳历及农历日期.在Ubuntu中有Lunar软件可以获取农历日期,但在Fedora或CentOS中并没有类似软件,所以就想自己来实现一个,但网上用其他语言写的一大把,如果再写没什么必要.所以就想用shell来写一个. 2

Shell脚本监控服务器在线状态和邮件报警的方法_linux shell

对于服务器来说在线率很重要,出现问题要能及时解决,但系统管理员不能一直守在电脑旁边,通过脚本监控网站出现问题及时通过mail通知管理员,如果是139邮箱还可免费手机短信通知.注:通过系统直接发送mail容易被拦截,可使用mail连接第三方smtp发送邮件. shell脚本实现代码: 复制代码 代码如下: #!/bin/bash#set -xwhile truedo list=(www.jb51.net s.jb51.net) mail=jmj@jb51.net date=$(date -d "t

shell脚本结合iptables防端口扫描的实现_linux shell

网上有现在的防端口工具如psad.portsentry但觉得配置有点麻烦且服务器不想再装一个额外的软件.所以自己就写了个shell脚本实现这个功能.基本思路是使用iptables的recent模块记录下在60秒钟内扫描超过10个端口的IP并结合inotify-tools工具实时监控iptables的日志一旦iptables日志文件有写入新的ip记录则使用iptables封锁源ip起到了防止端口扫描的功能. 1.iptables规则设置新建脚本iptables.sh执行此脚本. 复制代码 代码如下

Shell脚本检查IP格式及mysql操作实例_linux shell

还是cronjob的一部分,就是在Rails的定时任务里,后台交互运行 CheckIPAddress() { echo $1 |grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null if [ $? = 1 ]; then return 1 else a=`echo $1 | awk -F. '{print $1}'` b=`echo $1 | awk -F. '{print $2}'

Shell脚本实现C语言代码行数统计_linux shell

写了一个比较粗糙的C语言代码行数统计脚本,目前还有些bug,而且效率也不高.脚本主要就是去除大部分的注释后统计行数,相当于做了一部分预处理的工作.下面是代码: #!/bin/bash filename=$1 echo "`whoami`" if [ $# -lt 1 ];then echo "usage : ./scripts filename" exit -1 fi if [ ! -f $filename ];then echo "$filename i

Shell脚本传递参数的3种方法比较_linux shell

#!/bin/bash #extracting command text_text_text_line options as parameters help_info(){ echo "NAME" echo "\t$0" echo "SYNOPSIS" echo "\t$0 is a shell test about process options" echo "DESCRIPTION" echo &quo