获取远程rsync PID?

时间:2012-09-10 16:34:36

标签: linux ssh rsync

我正在创建一个开源rsync管理器,需要能够从服务器端终止客户端rsync进程。

现在,2个客户端rsync文件从服务器到clinet,客户端将rsync命令发送到服务器并通过ssh密钥进行身份验证。

clinet-1和client-2都:

rsync -zav root@server:/home/aaa .

服务器:

ps aux | grep rsync

root      6117  8.9  0.7  87524 60604 ?        Ds   00:23   0:26 rsync --server --sender -vlogDtprz . /home/aaa
root      6339  8.6  0.6  87524 58792 ?        Ds   00:23   0:25 rsync --server --sender -vlogDtprz . /home/aaa

问题是我需要知道哪些pid对应于这些单独的客户端rsync命令。为了能够杀死他们,任何人都可以指出一些方向吗?

1 个答案:

答案 0 :(得分:1)

一种方法是在服务器中编写脚本(/usr/bin/run_rsync):

#!/bin/bash

client_ip=$1
client_id=$2
client_path=$3
rsync_script=~/rsync_CID$client_id
echo "rsync -zav /home/aaa root@$client_ip:$client_path" > $rsync_script
sh $rsync_script
rm $rsync_script

然后从客户端(ssh root@server run_rsync <IP> <ID> $(pwd))使用此脚本。当你想杀死一个客户端时,在服务器上(给定$client_id):

pstree $(pgrep CID$client_id) -ap | sed -n 's/.*rsync,\([0-9]*\).*/\1/p'

应该为您提供此客户端正在使用的rsync的PID。