File size: 1,475 Bytes
cc0721b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
set -e

readonly WORKER_HOSTS=(
    "xx.xx.xx.xx"
)

readonly REMOTE_USER="root"

readonly TRAIN_SCRIPT="main"




echo "--- Killing local processes matching '${TRAIN_SCRIPT}' first ---"

pkill -9 -f "${TRAIN_SCRIPT}" || true
pkill -f python
echo "Local check complete."
echo


echo "🛑 Sending targeted kill signal to processes matching '${TRAIN_SCRIPT}' on all remote hosts in parallel..."

for HOST in "${WORKER_HOSTS[@]}"; do

    (
        echo "--- Processing host: ${HOST} ---"

        ssh -n "${REMOTE_USER}@${HOST}" "
            set -e # 远程脚本也应该在出错时停止
            pkill -f python
            # 精确查找由 python 启动的、且包含 TRAIN_SCRIPT 名称的进程
            # 这是为了避免误杀其他同名进程(比如一个名为 'main_rebuttal' 的shell脚本)
            PIDS=\$(pgrep -f \"python.*${TRAIN_SCRIPT}\")

            if [ -z \"\$PIDS\" ]; then
                echo '[INFO] ✅ No matching processes found on this host.'
            else
                echo '[WARN] 🔥 Found processes to kill:'
                # 在杀死前显示详细信息,增加安全性
                ps -fp \$PIDS
                echo '[KILL] Killing PIDs: '\$PIDS'...'
                kill -9 \$PIDS
                echo '[OK] ✅ Processes killed successfully.'
            fi
        "
        echo "--- Finished host: ${HOST} ---"
        echo
    ) &
done

wait

echo "🎉 All hosts have been processed."