dotfiles/.local/bin/scripts/disktest
2025-02-04 11:57:49 +01:00

32 lines
1.1 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash -e
# Test disk performance
# Adapted from https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/
# Using bash because of redirects
test "$1" = "-w" && write=true && shift
disk="${1:-$(df --output=source . | tail -1)}"
if test "$write"
then exec &> >(tee ".disktest-$(date +%F)")
fi
highlight() { echo "$1"; }
highlight "Checking SMART with hdparm"
# Needs sudo for read test
sudo hdparm -MWAgt "$disk" || true
if test $# -eq 0
then highlight "Write Test"
sync
count=3000$(test $(df --output="avail" . | tail -1) -gt 999999 && echo 0 || true)
tempfile=/var/tmp/.$count
# Prevent deduplication/predictions by using random rather than zero, but since that is too slow we have to copy a previously created file
test -s $tempfile ||
( highlight "Preparing random bits:" &&
sudo dd status=progress if=/dev/urandom of=$tempfile bs=1M count=$count ) &&
sha1sum $tempfile
highlight "Copying random bits:" &&
sudo dd status=progress if=$tempfile of=.$count bs=1M count=$count
sha1sum .$count
highlight "Copying zero bits:" &&
sudo dd status=progress if=/dev/zero of=.$count bs=1M count=$count
sudo rm .$count
fi