shell脚本:在一个shell脚本中执行pssh命令,shell脚本进程会卡死
背景:
在shell脚本A里执行pssh,执行该脚本A,该脚本A的进程会一直卡死
脚本如下:
#! /bin/bash
# hostsFile是存放了多个ip的文件
pssh -h hostsFile "mkdir -p /root/wy"
原因:
pssh是一个批量linux终端执行命令的工具,它执行完毕后会需要占用终端的输入输出打印执行结果,而脚本A本身就是一个进程,它执行pssh也需要占用终端的输入输出打印pssh的执行结果,那么就产生了死锁问题,导致脚本A的进程一直卡死。
解决方法:
使用nohup将pssh挂到后台执行,即形成一个子进程,使得脚本A和pssh不会同时抢占输入输出。
如下:
#! /bin/bash
# hostsFile是存放了多个ip的文件
# 将pssh执行结果重定向到pssh.txt,如果不需要,可以重定向到/dev/null
nohup pssh -h hostsFile "mkdir -p /root/wy" > pssh.txt
还没有评论,来说两句吧...