Предположим, у нас есть такой файл:
$ cat path/to/file/FILE_PREFIX_20150730.dsv
2015-07-29|0100
2015-07-30|0200
2015-07-30|0300
2015-07-31|0400
Теперь посмотрите, что делает ваша команда (немного исправленная):
$ grep `date +%Y-%m-%d --date='1 day ago'` path/to/file/FILE_PREFIX_`date +%Y%m%d --date='1 day ago'`.dsv | grep -v 'ERROR' | cut -d "|" -f 2 | sed 's/^0/27/'
27200
27300
Короче говоря, она просматривает файл, имя которого основано на вчерашней дате, path/to/file/FILE_PREFIX_20150730.dsv
. Он ищет любую строку в этом файле, в которой упоминается вчерашняя дата в форме 2015-07-30
. Затем удаляется любая строка, которая также содержит символы ERROR
. Оставшиеся строки делятся на поля на основе символа |
. Извлекается второе поле строки. Если это второе поле начинается с нуля, то ноль заменяется на 27
.
Не только раздражает! Возможно, через несколько месяцев привод сдохнет.
Пока я обнаружил, что вам нужно изменить уровень APM , чтобы разрешить приостановку дисков, установив:
hdparm -B 127 /dev/sdX
Где 127 на самом деле является максимальным значением, позволяющим приостановить работу дисков (замедление ).
Затем вы можете изменить значение приостановки с помощью:
hdparm -S 241 /dev/sdX
Из справочной страницы:
Значения от 241 до 251 задают от 1 до 11 единиц по 30 минут, что дает время ожидания от 30 минут до 5,5 часов.
Вам понадобится служебный файл, чтобы он сохранялся при приостановке и перезагрузке. Ждать его.
Примерно так должно работать:
[Unit]
Description=hdparm sleep
After=suspend.target
[Service]
Type=oneshot
ExecStart=/sbin/hdparm -S 241 -B 127 /dev/sda
[Install]
WantedBy=multi-user.target suspend.target
Сохраните его как root в:
/lib/systemd/system/hdparm.service
Затем вам нужно будет активировать его с помощью:
systemctl enable hdparm.service
Используйте этот служебный файл только в качестве примера, внимательно прочитайтеhdparm
справочную страницу !