shell脚本:在一个shell脚本中执行pssh命令,shell脚本进程会卡死

绝地灬酷狼 2022-12-22 08:34 690阅读 0赞

背景:

在shell脚本A里执行pssh,执行该脚本A,该脚本A的进程会一直卡死

脚本如下:

  1. #! /bin/bash
  2. # hostsFile是存放了多个ip的文件
  3. pssh -h hostsFile "mkdir -p /root/wy"

原因:

pssh是一个批量linux终端执行命令的工具,它执行完毕后会需要占用终端的输入输出打印执行结果,而脚本A本身就是一个进程,它执行pssh也需要占用终端的输入输出打印pssh的执行结果,那么就产生了死锁问题,导致脚本A的进程一直卡死。

解决方法:

使用nohup将pssh挂到后台执行,即形成一个子进程,使得脚本A和pssh不会同时抢占输入输出。

如下:

  1. #! /bin/bash
  2. # hostsFile是存放了多个ip的文件
  3. # 将pssh执行结果重定向到pssh.txt,如果不需要,可以重定向到/dev/null
  4. nohup pssh -h hostsFile "mkdir -p /root/wy" > pssh.txt

发表评论

表情:
评论列表 (有 0 条评论,690人围观)

还没有评论,来说两句吧...

相关阅读