aboutsummaryrefslogtreecommitdiff
path: root/bin/nicely
blob: d062f02dda254b73b5087e706047c3f8d7f175e9 (plain) (blame)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/sh
set -eu

usage() {
	cat <<-'EOF'
		Usage:
		  nicely COMMAND...
		  nicely -h
	EOF
}

help() {
	cat <<-'EOF'


		Options:
		  -h, --help    show this message

		  COMMAND       the command to be wrapped


		Wrap COMMAND in nice(1) and ionice(1) calls, so that it gets low
		priority from the OS scheduler and has low disturbance regarding
		CPU usage and disk IO bandwidth.


		Examples:

		  Make the backup low priority:

		    $ nicely backup
	EOF
}


for flag in "$@"; do
	case "$flag" in
		(--)
			break
			;;
		(--help)
			usage
			help
			exit
			;;
		(*)
			;;
	esac
done

while getopts 'h' flag; do
	case "$flag" in
		(h)
			usage
			help
			exit
			;;
		(*)
			usage >&2
			exit 2
			;;
	esac
done
shift $((OPTIND - 1))


ionice -c3 nice -n19 "$@"