Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / system / membyuser @ 4b400a73

Historique | Voir | Annoter | Télécharger (1,28 ko)

1
#!/bin/bash
2
#
3
# Plugin to monitor Memory usage inspired by cpubyuser 
4
# 
5
# 2012-05-23 Sebastien Campion
6

    
7
LU=`ps auh | cut -d' ' -f 1  | sort -u`
8
USERS=`echo $LU`
9

    
10
if [ "$1" = "autoconf" ]; then
11
	if [ -n "$USERS" ]; then
12
		echo "yes"
13
	else
14
		echo "\$USERS not defined."
15
	fi
16
	exit
17
fi
18

    
19
if [ "$1" = "config" ]; then
20
	echo "graph_args --base 1000 -r --lower-limit 0"
21
	echo "graph_title Memory usage, by user"
22
	echo "graph_category memory"
23
	echo "graph_info This graph shows memory usage, for monitored users."
24
	echo "graph_vlabel KB"
25
	echo "graph_scale no"
26
	echo "graph_period second"
27
	_USERS=${USERS//[-.]/_}
28
	echo "graph_order $_USERS others"
29
	FIRSTUSER=1;
30
	for USER in $USERS "others"; do
31
		_USER=${USER//[-.]/_}
32
		echo "${_USER}.label $USER"
33
		echo "${_USER}.info Memory used by user $USER"
34
		echo "${_USER}.type GAUGE"
35
		if [ $FIRSTUSER -eq 1 ]; then
36
			echo "${_USER}.draw AREA"
37
			FIRSTUSER=0
38
		else
39
			echo "${_USER}.draw STACK"
40
		fi
41
	done
42
	exit
43
fi
44

    
45
ps -e -o "%z%U" | \
46
	awk -v USERS="$USERS" '
47
		{ if ($2 != "USER") MEM_USER[$2]+=$1 }
48
		END {
49
			others_sum = 0
50
			for (user in MEM_USER) {
51
				m = match(USERS,user)
52
				if (m != 0) {
53
					_user=user
54
					gsub(/[-.]/,"_", _user);
55
					print _user".value", MEM_USER[user]
56
				} else
57
					others_sum += MEM_USER[user]
58
			}
59
		print "others.value", others_sum;
60
	}'