如何有条件地运行命令?

如何有条件地运行命令?

跑步时

cat /sys/block/sda/queue/scheduler

示例答案如下

noop anticipatory deadline [cfq]

我想编写一个脚本,如果cat行 answer 包含

  1. deadline然后做X; 或者
  2. 如果deadline没有出现,但包含noop则执行

那么,我该如何编写一个脚本:

  1. 检查cat答案

  2. 如果deadline发生:

    sudo sed -i 's/^exit 0$/\necho deadline > \/sys\/block\/sda\/queue\/scheduler\necho 1 > \/sys\/block\/sda\/queue\/iosched\/fifo_batch\nexit 0/' /etc/rc.local
    
  3. 如果deadline不存在但“noop”存在则执行:

    sudo sed -i 's/^exit 0$/\necho noop > \/sys\/block\/sda\/queue\/scheduler\nexit 0/' /etc/rc.local
    
  4. 除此以外什么也没有。

答案1

添加到上面的 rc.localexit 0

SCHEDULER=$(cat /sys/block/sda/queue/scheduler)

case "$SCHEDULER" in
    *deadline* )
        echo 'deadline' > /sys/block/sda/queue/scheduler
        echo '1' > /sys/block/sda/queue/iosched/fifo_batch
        ;;
    *noop*)
        echo 'noop' > /sys/block/sda/queue/scheduler
        ;;
    *)
        exit 0
esac

使用 sudo 运行脚本,或者如果它是 init 脚本,它将以 root 身份运行。

也可以看看http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html

相关内容