循环脚本只执行一次 - Bash

 日全食x_354 发布于 2023-01-07 11:20

我有以下bash脚本:

#!/bin/bash
cat /etc/hadoop/conf.my_cluster/slaves | \
while read CMD; do
    ssh -o StrictHostKeyChecking=no ubuntu@$CMD "sudo service hadoop-0.20-mapreduce-tasktracker restart"
    ssh -o StrictHostKeyChecking=no ubuntu@$CMD "sudo service hadoop-hdfs-datanode restart"
    echo $CMD
done

/etc/hadoop/conf.my_cluster/slaves拥有5台奴隶机的IP.在datanode无法沟通的jobtracker,所以解决的办法就是重新启动它.输出是:

ubuntu@domU-12-31-39-07-D6-DE:~$ ./test.sh 
Warning: Permanently added '54.211.5.233' (ECDSA) to the list of known hosts.
 * Stopping Hadoop tasktracker: 
stopping tasktracker
 * Starting Hadoop tasktracker: 
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-domU-12-31-39-06-8A-27.out
Warning: Permanently added '54.211.5.233' (ECDSA) to the list of known hosts.
 * Stopping Hadoop datanode: 
stopping datanode
 * Starting Hadoop datanode: 
starting datanode, logging to /var/log/hadoop-hdfs/hadoop-hdfs-datanode-domU-12-31-39-06-8A-27.out
54.211.5.233

但是,在它应该运行的5个IP地址中,只执行了第一个.我怎么能解决这个问题?

1 个回答
  • 我们问shellcheck:

    $ shellcheck yourscript
    
    In yourscript line 3:
    while read CMD; do
    ^-- SC2095: ssh may swallow stdin, preventing this loop from working properly.
    
    In yourscript line 4:
        ssh -o StrictHostKeyChecking=no ubuntu@$CMD [...]
        ^-- SC2095: Add < /dev/null to prevent ssh from swallowing stdin.
    

    你去吧

    2023-01-07 11:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有