Можно ли запланировать (7 дней) время сна жесткого диска?

Насколько я понимаю, вы хотите скопировать все содержимое вашего скрипта и вставить его как heredoc для его выполнения.Вы можете это сделать, но есть одна загвоздка: как присвоить значение позиционному параметру $ 1, который появится в heredoc? Хитрость здесь в том, чтобы передать этот аргумент в bash, поместив его после знака - (который отделяет аргументы, которые вы передаете самому bash, от аргументов, которые вы передаете скрипту). Bash, конечно, должен читать команды со стандартного ввода, поэтому необходимо указать флаг -s .

Чтобы увидеть, как это работает с кодом из вашего примера, откройте новый псевдотерминал и введите это (будьте осторожны: знаки кавычек рядом с первым EOF0 являются обязательными, они предотвращают расширение $ 1 внутри самого heredoc):

nohup bash -s -- $$ <<'EOF0' &
#!/bin/bash

WB=$1
sleep 2h;
commands...
kill $WB
EOF0

Я должен вам сказать, что EOF0 сам по себе не имеет никакого особого значения. Вы можете использовать любую строку для разделителя heredoc (например, это могла быть 'EOF' или 'HEREDOC_DELIMITER' ): важно то, что она заключена в одинарные кавычки, возле знака << ; это предотвращает любое расширение внутри heredoc, что позволяет вам как использовать аргумент сценария (так же, как вы можете использовать $ 1 в опубликованном вами коде), так и вкладывать другие heredoc.

9
02.06.2019, 13:09
1 ответ

Cronjob позволит это:

# At 11pm every day, enable sleep after 30s
0 23 * * * /sbin/hdparm -S6 /dev/disk/by-id/...

# At 5pm on weekdays, disable sleeping
0 17 * * 1-5 /sbin/hdparm -S0 /dev/disk/by-id/...

# At 3pm on the weekend, disable sleeping
0 15 * * 0,6 /sbin/hdparm -S0 /dev/disk/by-id/...
18
27.01.2020, 20:05

Теги

Похожие вопросы