我正在使用 rsync 将一些数据从一台服务器备份到另一台服务器。一切正常,但可能需要更长的时间才能完成,具体取决于要传输的数据量。
是否有任何保证方法可以确保 rsync 命令在上一个使用 cronjob 完成之前不会启动?
例如,我每小时运行 rsync 命令,但传输可能需要 1 个多小时才能完成,因此下一个将在前一个完成之前开始。
mga*_*iel 13
您可以实现某种锁定。这将打印仍在运行的 rsync 进程数:
pgrep -cx rsync
Run Code Online (Sandbox Code Playgroud)
并且只有在不存在其他 rsync 进程时才会运行 rsync:
pgrep -cx rsync || rsync ...
Run Code Online (Sandbox Code Playgroud)
使用-x
将防止意外匹配不需要的名称(例如“fooba rsync hronizator”或“not_an_ rsync _totally” - 它的工作原理就像pgrep -c ^rsync$
)
use*_*517 13
您可以使用flock命令来帮助您执行此操作,例如在这种情况下flock -n
可能是您想要的,因为如果无法获得锁定,它将导致命令立即失败,例如
30 * * * * /usr/bin/flock -n /tmp/myRsyncJob.lck /path/to/your/rsyncScript
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14260 次 |
最近记录: |