summaryrefslogtreecommitdiff
path: root/cleopatre/application/fw_wd/fwwatchd-clean
blob: a28c87e45885172d881c1023821931e5895e399e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh

# Trace folder.
TRACE_FOLDER=/usr/local/trace/
# Trace basename.
TRACE_BASENAME=trace_

# Load personnalize preferences.
test -f /etc/default/fwwatchd && . /etc/default/fwwatchd

# Return true if traces use too much space.
should_clean () {
	if [[ -n "$TRACE_SIZE_LIMIT_KB" ]]; then
		set -- $(du -ks "$TRACE_FOLDER")
		[[ $1 -gt "$TRACE_SIZE_LIMIT_KB" ]] && return 0
	fi
	if [[ -n "$TRACE_FREE_LIMIT_KB" ]]; then
		set -- $(df -k "$TRACE_FOLDER" | tail -n 1)
		[[ $4 -lt "$TRACE_FREE_LIMIT_KB" ]] && return 0
	fi
	return 1
}

# Remove oldest trace, or return an error if nothing to remove.
clean_oldest_trace () {
	old_trace=$(ls -1 $TRACE_FOLDER/$TRACE_BASENAME[0-9]*.gz 2>/dev/null \
		| sort -n -k 2 -t _ | head -n 1)
	[[ -z "$old_trace" ]] && return 1
	rm "$old_trace"
}

# Clean up old traces if needed.
while should_clean; do
	clean_oldest_trace || break
done