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." |