Como posso executar um comando condicionalmente?

0

Ao executar

cat /sys/block/sda/queue/scheduler

uma resposta de exemplo é a linha

noop anticipatory deadline [cfq]

Eu quero escrever um script de tal forma que, se a resposta da linha cat contiver

  1. deadline , em seguida, faça X ; ou
  2. Se deadline não aparecer, mas contiver noop , faça Y

Então, como posso escrever um script que:

  1. Verifica a cat answer

  2. No caso de 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. Se deadline não existe, mas 'noop' então faz:

    sudo sed -i 's/^exit 0$/\necho noop > \/sys\/block\/sda\/queue\/scheduler\nexit 0/' /etc/rc.local
    
  4. Mais nada.

por Kangarooo 18.12.2011 / 23:11

1 resposta

2

Adicione a rc.local, acima de exit 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

Execute o script com o sudo, ou se for um script de inicialização, ele será executado como root.

Veja também o link

    
por Panther 18.12.2011 / 23:27