start_vj_vision.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. # 定义远程节点列表
  3. nodes=("node02" "node01" "node03")
  4. # 定义本地和远程目录
  5. local_dir="$HOME/yuzhou/jiangcang_vj/"
  6. remote_dir="~/yuzhou/jiangcang_vj"
  7. echo "=== 清理本地日志文件 ==="
  8. rm -f "$local_dir/output.log" "$local_dir/nohup.out"
  9. echo "=== 远端目录初始化 ==="
  10. for node in "${nodes[@]}"; do
  11. echo "初始化 $node 的目录结构..."
  12. ssh "$node@$node" "
  13. set -e
  14. mkdir -p \
  15. $remote_dir \
  16. $remote_dir/data_shards \
  17. $remote_dir/photo
  18. "
  19. echo "✅ $node 目录就绪"
  20. done
  21. echo "=== 开始同步文件到远程节点 ==="
  22. # 遍历远程节点并同步文件
  23. for node in "${nodes[@]}"; do
  24. echo "正在同步到 $node..."
  25. # 只同步当前目录文件, 不同步任何子目录
  26. rsync -avz \
  27. --files-from=<(find "$local_dir" -maxdepth 1 -type f -printf "%f\n") \
  28. "$local_dir" "$node@$node:$remote_dir/"
  29. if [ $? -ne 0 ]; then
  30. echo "⚠️ 警告: 同步到 $node 失败,跳过该节点。"
  31. continue # 继续同步下一个节点
  32. fi
  33. echo "✅ 同步到 $node 完成。"
  34. done
  35. echo -e "\n\n"
  36. echo "=== 开始在远程节点上执行对应的 start_nodeXX.sh ==="
  37. # nohup setsid ./$script_name > ~/yuzhou/jiangcang_vj/nohup_$node.log 2>&1 &
  38. # 在远程节点执行 `start_nodeXX.sh`
  39. for node in "${nodes[@]}"; do
  40. script_name="start_${node}.sh"
  41. echo "正在执行 $node 上的 $script_name..."
  42. # 修改后的执行命令,捕获所有输出信息
  43. ssh "$node@$node" "
  44. cd $remote_dir && chmod +x $script_name;
  45. ./$script_name
  46. "
  47. if [ $? -ne 0 ]; then
  48. echo "⚠️ 警告: 在 $node 上执行 $script_name 失败,跳过该节点。"
  49. continue # 继续执行下一个节点
  50. fi
  51. echo "✅ 在 $node 上成功执行 $script_name。"
  52. done
  53. echo -e "\n\n"
  54. echo "=== 在本地执行 start_node04.sh ==="
  55. # 在本地执行 `start_node04.sh`
  56. cd "$local_dir"
  57. chmod +x start_node04.sh && ./start_node04.sh
  58. if [ $? -ne 0 ]; then
  59. echo "❌ 错误: 本地执行 start_node04.sh 失败,请检查问题!"
  60. exit 1
  61. fi
  62. echo "🎉 所有任务执行完毕!"
  63. echo -e "\n\n"