需要到几百台机器上去删除一些目录,每台机器上的目录名固定,共有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
分享到:
相关推荐
linux bash shell脚本文件.sh,自动输入sudo的密码 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码
远程线鲨在本地运行wireshark从远程主机通过ssh + tcpdump获取流量转储的简单脚本。要求它假设您在远程主机上使用 sudo,并通过 sudo 对 tcpdump 进行无密码访问。用法./remote-wireshark.sh "[SSH 凭据和额外选项]...
远程批量修改linux服务器密码的脚本归类.pdf
安装SSH:sudo apt-get install openssh-server确认sshserver是否启动:ps -e |grep ssh如果只有ssh-
1.将4个文件放在一个单独的文件夹... sudo gedit /etc/ssh/sshd_config #(可视化编辑器) 修改Port即可 *如果上面已经启动,则不必运行 5、启动ssh sudo systemctl restart ssh sudo systemctl restart sshd
termux-sudo, 为Termux提供sudo的bash脚本 termux为Termux提供sudo的bash脚本Termux是面向Android的终端 模拟器 和Linux环境需求带su二进制的根SUDO无法在没有ldap的情况下工作安装英镑下载sudo到电话并提取打开 ...
5、远程主机执行结果格式化输出,一眼就能很直观的看到执行结果,还可以保存到log方便审计; 6、自动统计任务的执行数量的变化,包括总任务数、执行完成任务数、执行完成且成功的任务数; 7、执行速度堪称闪速 8、...
SUDO - 通过叫喊来执行bash命令
4. sudo /etc/init.d/xunlei start //测试脚本 激活远程迅雷 5. sudo /etc/init.d/xunlei stop //测试脚本 关闭远程迅雷 6. 自启 sudo update-rc.d xunlei defaults 请确保远程迅雷软件是在目录 /home/pi/xunlei
将pycharm连接Window子系统的配置过程总结如下,连接其它远程服务器的过程相同: 一、Ubuntu配置 1、首先安装 ssh server: > sudo apt-get install openssh-server 2、修改 ssh server 配置: > sudo vim /etc/...
5、远程主机执行结果格式化输出,一眼就能很直观的看到执行结果,还可以保存到log方便审计; 6、自动统计任务的执行数量的变化,包括总任务数、执行完成任务数、执行完成且成功的任务数; 7、执行速度堪称闪速 8、...
以下命令若无加粗备注说明在本地计算机操作,则都是在服务器端操作 1 安装并使用ssh远程登陆 更新软件列表 sudo apt-get update 更新本地软件 sudo apt-get upgrade 安装ssh服务 sudo apt-get install openssh-...
Ubuntu20.04离线安装openssh-server 安装步骤: sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.7_amd64.deb sudo dpkg -i openssh-client_8.4p1-6ubuntu1_amd64.deb sudo dpkg -i openssh-sftp...sudo service ssh restart
相信大家在工作的时侯,可能会遇到要利用 ssh 在本地执行远程机器的命令可以便捷地处理某些重复工作,我们希望做到: 免手工输入密码 支持执行多个命令,执行 shell 脚本 支持执行 sudo 的命令 免手工输入密码 ...
罗索 ...将厨房(换句话说,chef-repo)上传到远程主机并在那里运行sudo chef-solo 。 复仇者联盟 安装 Berkshelf 后,只需执行以下相同操作即可 $ rm -rf cookbooks Berksfile.lock $ berks vendo
1.按以下顺序执行安装 sudo dpkg -i openssh-client_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i openssh-sftp-server_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i libck-connector0_0.4.5-3.1ubuntu2_amd64.deb sudo dpkg -...
参考了java版的expect4j,expectj的原理,进行了极大的简化,可完成基本的功能: 1,运行java代码,执行交互式命令 2,sudo提权,自动输入密码(echo "password" | sudo -S mkdir /opt/test)
将Pi放置在任何远程位置,为它提供Internet连接,然后您可以在家中通过SSH进入它。步骤(在远程设备上,假设它正在运行基于Debian的Distro): 运行sudo apt-get install gnome-terminal at-spi2-core 在ngrok.com...
ssh–secure shell,提供安全的远程登录。...如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要