gpt4 book ai didi

linux - 获取远程rsync PID?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:41 27 4
gpt4 key购买 nike

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

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

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 命令。为了能够杀死他们,谁能指点一下?

最佳答案

一种方法是在服务器中编写脚本(/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。

关于linux - 获取远程rsync PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com