LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 974|回复: 3

在shell脚本里面是逐行执行命令的,但可否。。。。?!

[复制链接]
发表于 2004-8-9 18:33:54 | 显示全部楼层 |阅读模式
有没有什么方法同时执行两个或两个以上的命令呢?

假设:前提:和所有的主机间建立了ssh信任关系,且不需要密码
      1、远程shutdown10台主机的apache服务
      2、停止apache的时间需要60秒
      3、要shutdown掉apache才能进行文件上传动作(超过30秒)
      4、上传完文件后启动apache,且启动apache的时间为60秒

我现在想同时停止两台主机的apache并在停止后上传文件,文件传完后再把apache起来(注意顺序)

主机列表是:web1 web2 web3 ..... web10

停止apache ssh web1 /opt/apache2/bin/apachectl stop
上传文件   scp -q *.php web1:/opt/www/phpdoc/
启动apache ssh web1 /opt/apache2/bin/apachectl stop


谁能帮偶实现

偶现在的shell初步的代码为
  1. $enable -n pwd
  2. $pwd
  3. /home/admin
  4. $cat host_list
  5. web1 web2
  6. web3 web4
  7. web5 web6
  8. web7 web8
  9. web9 web10
  10. $cat mypost.sh
  11. #!/bin/bash

  12. hile read line ;do

  13.       for DES_HOST in $line ;do
  14.             echo -e "\033[32;1m========================== $DES_HOST \
  15.             ==========================\033[0m";
  16.              ssh $DES_HOST /opt/apache2/bin/apachectl stop>/dev/null 2>&1
  17.       done

  18.    seq 60 |tac |\
  19.    awk '{printf "\r%s%d%s","Just shutdown the Apache server, please wait for a minute...",$0,"...";\
  20.    system("sleep 1")}'

  21.       for DES_HOST in $line ;do
  22.             scp -q *.php $DES_HOST:/opt/www/phpdoc/
  23.             ssh $DES_HOST /opt/apache2/bin/apachectl start
  24.       done

  25. done < /home/admin/host-list
复制代码


但是我发觉for语句不行,哎,有人给出其它思路吗?在下感激不尽
      
     :confused:
发表于 2004-8-9 23:32:52 | 显示全部楼层
shell没有并行处理程序的能力!
发表于 2004-8-10 09:14:16 | 显示全部楼层
cmd1 & cmd2 不就并行了吗?
 楼主| 发表于 2004-8-11 09:21:04 | 显示全部楼层

楼上说得是

但最好用个wait命令配合一下:)

可以看看http://bbs.chinaunix.net/forum/viewtopic.php?p=2561020#2561020

还有补充一下,我并不是要在shell脚本中绝对的并行两个命令:p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表