linuxOS_AP06/device/rockchip/common/overlays/rootfs/fstrim/S99fstrim
2025-06-03 12:28:32 +08:00

55 lines
950 B
Bash
Executable File

#!/bin/sh -e
### BEGIN INIT INFO
# Provides: fstrim
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Description: Discard unused blocks on all filesystems
### END INIT INFO
PID_FILE=/var/run/fstrim.pid
INTERVAL=$((60 * 60)) # 1 hour
fstrim_stop()
{
PID=$(cat $PID_FILE 2>/dev/null || true)
[ "$PID" ] || return 0
logger -s -t fstrim "Stopping fstrim process ($PID)..."
kill -9 -$PID 2>/dev/null || true
rm -f "$PID_FILE"
}
fstrim_start()
{
fstrim_stop
{
trap 'rm -f "$PID_FILE"' EXIT QUIT TERM INT
echo $$ > $PID_FILE
logger -s -t fstrim "Starting fstrim process ($$)..."
while true; do
cut -d' ' -f2 /proc/mounts | \
xargs -n 1 /sbin/fstrim -v 2>/dev/null | \
logger -t fstrim || true
sleep $INTERVAL
done
}&
}
case "$1" in
start|restart|reload|force-reload|"") fstrim_start ;;
stop) fstrim_stop ;;
status)
# No-op
;;
*)
echo "Usage: start" >&2
exit 3
;;
esac
: