Permissão negada - script em execução

1

Eu sou um pouco novo para o script no Ubuntu e tenho o seguinte script que estou executando, mas recebendo de volta mensagens de permissão negada. Qualquer ajuda é muito apreciada!

Veja a sequência:

O script:

!/tm/local/bin/bash
blockdev --setra 16384 /dev/sd[bcdefghijkl]
echo 1024 > /sys/block/sdb/queue/read_ahead_kb
echo 1024 > /sys/block/sdc/queue/read_ahead_kb
echo 1024 > /sys/block/sdd/queue/read_ahead_kb
echo 1024 > /sys/block/sde/queue/read_ahead_kb
echo 1024 > /sys/block/sdf/queue/read_ahead_kb
echo 1024 > /sys/block/sdg/queue/read_ahead_kb
echo 1024 > /sys/block/sdh/queue/read_ahead_kb
echo 1024 > /sys/block/sdi/queue/read_ahead_kb
echo 1024 > /sys/block/sdj/queue/read_ahead_kb
echo 1024 > /sys/block/sdk/queue/read_ahead_kb
echo 256 > /sys/block/sdb/queue/nr_requests
echo 256 > /sys/block/sdc/queue/nr_requests
echo 256 > /sys/block/sdd/queue/nr_requests
echo 256 > /sys/block/sde/queue/nr_requests
echo 256 > /sys/block/sdf/queue/nr_requests
echo 256 > /sys/block/sdg/queue/nr_requests
echo 256 > /sys/block/sdh/queue/nr_requests
echo 256 > /sys/block/sdi/queue/nr_requests
echo 256 > /sys/block/sdj/queue/nr_requests
echo 256 > /sys/block/sdk/queue/nr_requests
# Set read-ahead.
echo "Setting read-ahead to 64 MiB for /dev/md0"
blockdev --setra 65536 /dev/md0
# Set stripe-cache_size for RAID6.
echo "Setting stripe_cache_size to 16 MiB for /dev/md0"
echo 16384 > /sys/block/md0/md/stripe_cache_size
echo 8192 > /sys/block/md0/md/stripe_cache_active
# Disable NCQ on all disks.
echo "Disabling NCQ on all disks..."
echo 1 > /sys/block/sdb/device/queue_depth
echo 1 > /sys/block/sdc/device/queue_depth
echo 1 > /sys/block/sdd/device/queue_depth
echo 1 > /sys/block/sde/device/queue_depth
echo 1 > /sys/block/sdf/device/queue_depth
echo 1 > /sys/block/sdg/device/queue_depth
echo 1 > /sys/block/sdh/device/queue_depth
echo 1 > /sys/block/sdi/device/queue_depth
echo 1 > /sys/block/sdj/device/queue_depth
echo 1 > /sys/block/sdk/device/queue_depth

Eu dei a todos acesso de execução assim:

chmod a+x /home/tm/raid-sync.sh

Eu executo assim:

root@LSERVER:~# sh /home/tm/raid-sync.sh

Isso retorna isso:

/home/tm/raid-sync.sh: 1: /home/tm/raid-sync.sh: !/tm/local/bin/bash: not found
Setting read-ahead to 64 MiB for /dev/md0
Setting stripe_cache_size to 16 MiB for /dev/md0
/home/tm/raid-sync.sh: 29: /home/tm/raid-sync.sh: cannot create /sys/block/md0/md/stripe_cache_active: Permission denied
Disabling NCQ on all disks...
    
por TheRealPapa 17.03.2014 / 07:26

2 respostas

1

Primeiro, para escapar pelo primeiro erro ( !/tm/local/bin/bash: not found ), altere !/tm/local/bin/bash com #!/bin/bash . Veja aqui mais sobre shebang (o que é, como usar, exemplos).

Segundo, se você definir permissões de execução para o script, execute-o usando apenas /home/tm/raid-sync.sh no prompt (sem sh na frente).

Em terceiro lugar, o diretório /sys no Linux é enganoso. Ao contrário da maioria dos outros diretórios, ele não fornece armazenamento persistente para arquivos arbitrários e, por causa disso, você não tem permissão para escrever, mesmo se você for root. Veja esta resposta para mais informações.

    
por Radu Rădeanu 17.03.2014 / 08:29
0

sua primeira linha parece ter um erro. (como visto do seu erro), eu começaria corrigindo, talvez mude para

#!/bin/bash

tente novamente, e podemos ver o próximo erro

    
por Sverre 17.03.2014 / 08:26