通过ssh在远程机器后台sudo执行脚本

需要到几百台机器上去删除一些目录,每台机器上的目录名固定,共有12个,

有一台机器(A)可以免密码ssh到这几百台机器上,

刚开始使用如下命令:

 

ssh remoteHost -t 'nohup sudo rm -rf /opt/data01/mapred/local/toBeDeleted/ &'

 

发现远程机器上的命令执行不起来,ssh 到远程机器上,使用nohup + & 不可行。

 

后来的解决办法:

 

编写脚本,del.sh

 

#!/bin/bash

arr="/opt/data01/mapred/local/ /opt/data02/mapred/local/ /opt/data03/mapred/local/ /opt/data04/mapred/local/ /opt/data05/mapred/local/ /opt/data06/mapred/local/ /opt/data07/mapred/local/ /opt/data08/mapred/local/ /opt/data09/mapred/local/ /opt/data10/mapred/local/ /opt/data11/mapred/local/ /opt/data12/mapred/local/"

for dir in $arr;do
{
rm -rf $dir
} &
sleep 3
done  

 

这个脚本会并发的执行对12个目录的删除操作,将这个脚本分发到几百台机器上,

 

for i in `cat /home/hdfs/lxw/delete_to_be_deleted/mapred.hosts.all `; do scp -P58422 /home/hdfs/lxw/del.sh $i:/tmp/del.sh ; done

 其中mapred.hosts.all中保存了几百台机器的ip,del.sh复制到目标机器的/tmp目录

 

机器A上调用命令

 

 

ssh $host -p 58422 -t 'sudo nohup sh /tmp/del.sh'
 

 

在机器A上写了个多线程的perl脚本,delete_tobedeleted.pl

并发的去调远程机器上的del.sh,调完之后,机器A上的线程会退出,而远程机器上会有12个进程,分别在后台执行每个目录的rm操作。

 

[hdfs@hd0411-sw39 ~]$ ps -ef | grep rm
root      2899  2898  9 09:12 pts/1    00:00:02 rm -rf /opt/data05/mapred/local/toBeDeleted/
root      3096  3095  8 09:12 pts/1    00:00:01 rm -rf /opt/data06/mapred/local/toBeDeleted/
root      3205  3204 13 09:12 pts/1    00:00:02 rm -rf /opt/data07/mapred/local/toBeDeleted/
root      3330  3329  8 09:12 pts/1    00:00:01 rm -rf /opt/data08/mapred/local/toBeDeleted/
root      3656  3655  9 09:12 pts/1    00:00:01 rm -rf /opt/data09/mapred/local/toBeDeleted/
root      3990  3989  6 09:12 pts/1    00:00:00 rm -rf /opt/data10/mapred/local/toBeDeleted/
root      4101  4100  9 09:12 pts/1    00:00:00 rm -rf /opt/data11/mapred/local/toBeDeleted/
root      4255  4254  5 09:12 pts/1    00:00:00 rm -rf /opt/data12/mapred/local/toBeDeleted/
 

delete_tobedeleted.pl脚本内容,见:

 

http://superlxw1234.iteye.com/blog/1753496

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值