检测正在运行的rsync会话

我有一个远程系统,我没有任何控制,通过rsync / ssh不时上传大量的文件。 之后,我需要处理文件。 但我不能触摸不完整的副本。 我如何检测是否有一个rsync会话正在进行和保释?

你可以在复制文件之前用lsof检查一下是否有程序打开了,例如:

[root @ pr467958〜]#lsof /var/lib/mysql/mysql.sock命令PID用户FDtypesDEVICE SIZE / OFF NODE名称mysqld 23262 mysql 12u unix 0xffff880fd8573600 0t0 15647622 /var/lib/mysql/mysql.sock mysqld 23262 mysql 13u unix 0xffff8800260bc900 0t0 18648027 /var/lib/mysql/mysql.sock

如果没有程序打开文件,lsof的输出将是空白的,所以问题是一个非常简单的脚本问题:如果输出是空白的复制文件,如果不是现在离开它

lsofoutput=`lsof /home/myfile` if [ ! $lsofoutput ] then cp /home/myfile /somewhere/else fi 

只是最后一件事。 如果你不能控制这个系统,但你有一个ssh用户/密码,那么你确实有控制权,只需通过ssh发出上述命令就可以了:

 ssh [email protected] exec "/root/scripts/the-above-script.sh" 

如果你有ssh访问该机器,你应该尝试

ps auxc | grep rsync

它会显示你运行的rsync进程。