crontab para impedir que o disco rígido USB seja girado

1

Quero impedir que meu disco rígido, uma unidade interna conectada externamente via dock USB, seja desativado. Eu não vejo nenhuma maneira de ajustar o APM através de hdparm , por isso estou assumindo que é limitado pelo firmware do dock. Isso gira a unidade:

sudo dd if=/dev/sdc of=/dev/null count=1 skip=$RANDOM

Mas quando eu coloco a mesma coisa no crontab via

sudo crontab -e

e

* * * * * dd if=/dev/sdc of=/dev/null count=1 skip=$RANDOM

nada acontece. Sim, verifiquei se a unidade está em /dev/sdc . Eu não sei se esta informação é relevante, mas eu editei o crontab várias vezes, e em cada tempo, sugeriu salvar em um arquivo diferente por padrão, que eu segui. Não tenho certeza se esse é o uso correto de skip=$RANDOM para ler de um bloco aleatório para evitar a leitura do cache.

Além disso, como posso ter certeza de segmentar a unidade correta persistentemente em vários boot-ups ou outros pedidos de conexão em outros dispositivos, em vez de segmentar o que acaba sendo /dev/sdc ? Estou pensando em algo parecido com

dd if=(findmnt -rn -S UUID=number_from_blkid -o SOURCE) of/dev/null count=1 skip=$RANDOM

mas não sei como aninhar o retorno da instrução entre parênteses na declaração externa. E mesmo se eu pudesse, ele retornaria /dev/sdX2 , onde X é qualquer letra que seja e 2 é a única partição utilizável. O outro é o Windows reservado. Isso é menos elegante que o simples sdX .

    
por CodeBricks 15.11.2016 / 03:50

1 resposta

2

Os problemas

  1. Ele é executado usando o shell /bin/sh , não /bin/bash , então $RANDOM provavelmente não funciona
  2. A menos que você defina o PATH no arquivo crontab , ele não saberá onde estão as coisas como dd (ou na solução abaixo, bash )
  3. Se você quiser fazer isso usando UUIDs, uma maneira muito mais simples é usar /dev/disk/by-uuid/THE-UUID

A solução

  1. Descubra o arquivo do dispositivo em /dev/disk/by-uuid pesquisando e verificando se você não encontrou nenhum erro com dd (substitua THE-UUID pelo UUID real):

    ls -alF /dev/disk/by-uuid
    sudo dd if=/dev/disk/by-uuid/THE-UUID of=/dev/null count=1 skip=$RANDOM
    
  2. Edite root ' crontab para (substitua THE-UUID pelo UUID real):

    * * * * * /bin/bash -c 'dd if=/dev/disk/by-uuid/THE-UUID of=/dev/null count=1 skip=$RANDOM'
    
por Chai T. Rex 15.11.2016 / 04:18