crontab 防止 USB 硬盘停止旋转

crontab 防止 USB 硬盘停止旋转

我想防止我的硬盘(通过 USB 底座外部连接的内部驱动器)旋转。我看不出有任何方法可以通过 调整 APM hdparm,因此我假设它受到底座固件的限制。这将启动驱动器:

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

但是当我通过以下方式将同样的东西放入 crontab 中时

sudo crontab -e

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

什么都没发生。是的,我确实检查了驱动器是否在。我不知道这个信息是否相关,但我已经多次编辑了 crontab,每次它都建议默认保存在不同的文件中,我照做了。我不确定这是否是从随机块读取以防止从缓存读取/dev/sdc的正确用法。skip=$RANDOM

此外,我如何确保在多次启动或插入其他设备的其他顺序中始终定位正确的驱动器,而不是定位最终的驱动器/dev/sdc?我在想

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

但我不知道如何将括号语句的返回嵌套到外部语句中。即使我可以,它也会返回/dev/sdX2,其中X是它碰巧是的任何字母,并且2是唯一可用的分区。另一个是 Windows 保留的。这不如普通的优雅sdX

答案1

问题

  1. 它使用 shell 运行/bin/sh,而不是/bin/bash,所以$RANDOM可能不起作用
  2. PATH除非你在文件中设置crontab,否则它不会知道dd(或在下面的解决方案中,bash)之类的东西位于何处
  3. 如果你想使用 UUID 来实现,一个更简单的方法是使用/dev/disk/by-uuid/THE-UUID

解决方案

  1. /dev/disk/by-uuid通过查找并检查没有出现任何错误来找出下面的设备文件dd(替换THE-UUID为实际的 UUID):

    ls -alF /dev/disk/by-uuid
    sudo dd if=/dev/disk/by-uuid/THE-UUID of=/dev/null count=1 skip=$RANDOM
    
  2. 编辑rootcrontab(替换THE-UUID为实际的 UUID):

    * * * * * /bin/bash -c 'dd if=/dev/disk/by-uuid/THE-UUID of=/dev/null count=1 skip=$RANDOM'
    

相关内容