Thursday, April 25, 2024
 Popular · Latest · Hot · Upcoming
1
rated 0 times [  1] [ 0]  / answers: 1 / hits: 1673  / 1 Year ago, tue, november 29, 2022, 2:56:39

I am new somewhat to scripting in Ubuntu and I have the following script which I am executing but getting back Permission Denied messages. Any help is greatly appreciated!



Here's the sequence:



The 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


I gave everyone execution access like this:



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


I execute it like this:



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


It returns this:



/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...

More From » 12.04

 Answers
4

First, to escape by first error (!/tm/local/bin/bash: not found), change !/tm/local/bin/bash with #!/bin/bash. See here more about shebang (what it is, how to use it, examples).



Second, if you set executing permissions to the script, then run it only using /home/tm/raid-sync.sh at the prompt (without sh in front).



Third, the /sys directory in Linux is deceptive. Unlike most other directories, it does not provide persistent storage for arbitrary files and because of this you don't have permission to write even if you are root. See this answer for more info.


[#26473] Tuesday, November 29, 2022, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
wheance

Total Points: 314
Total Questions: 96
Total Answers: 112

Location: Benin
Member since Thu, Aug 12, 2021
3 Years ago
;