|
@@ -0,0 +1,69 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# Just die if not root.
|
|
|
|
+if [ ${UID} -ne 0 ]; then
|
|
|
|
+ echo "FATAL: Need to run as root."
|
|
|
|
+ exit 1
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# Die if not running with CAP_SYS_PACCT
|
|
|
|
+if [ -z "$(capsh --decode=$(cat /proc/self/status | grep ^CapEff | cut -f2) | grep sys_pacct)" ]; then
|
|
|
|
+ echo "FATAL: Need CAP_SYS_PACCT to run."
|
|
|
|
+ exit 1
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# Announce collection period.
|
|
|
|
+PERIOD=10
|
|
|
|
+if [ -n "$1" ]; then
|
|
|
|
+ PERIOD=$1
|
|
|
|
+fi
|
|
|
|
+echo "Reporting on process activity every ${PERIOD} seconds."
|
|
|
|
+
|
|
|
|
+# Did someone ask for cumulative stats?
|
|
|
|
+case ${CUMULATIVE:-0} in
|
|
|
|
+ 1|yes|true)
|
|
|
|
+ echo "Gathering cumulative accounting data since container start."
|
|
|
|
+ CUMULATIVE=1
|
|
|
|
+ ;;
|
|
|
|
+ *)
|
|
|
|
+ echo "Clearing accounting data between snapshots."
|
|
|
|
+ CUMULATIVE=0
|
|
|
|
+ ;;
|
|
|
|
+esac
|
|
|
|
+
|
|
|
|
+# Clean up /var/account/pacct on startup if so requested.
|
|
|
|
+case ${STARTUP_SCRATCH:-0} in
|
|
|
|
+ 1|yes|true)
|
|
|
|
+ echo "Removing existing accounting data due to scratch-on-startup being ${STARTUP_SCRATCH}..."
|
|
|
|
+ rm -rf /var/account
|
|
|
|
+ ;;
|
|
|
|
+ *)
|
|
|
|
+ echo "Skipping scratch-on-startup..."
|
|
|
|
+ ;;
|
|
|
|
+esac
|
|
|
|
+
|
|
|
|
+# Make sure we have everything
|
|
|
|
+echo "Making sure /var/account/pacct is ready..."
|
|
|
|
+/usr/libexec/psacct/accton-create
|
|
|
|
+
|
|
|
|
+# Start accounting
|
|
|
|
+/usr/sbin/accton /var/account/pacct
|
|
|
|
+
|
|
|
|
+# Do the loop
|
|
|
|
+while [ 1 ]; do
|
|
|
|
+ sleep ${PERIOD}
|
|
|
|
+
|
|
|
|
+ # Report after waking up.
|
|
|
|
+ /usr/sbin/sa -ajlp > /var/account/dump-all
|
|
|
|
+ /usr/sbin/dump-acct /var/account/pacct > /var/account/dump-raw
|
|
|
|
+
|
|
|
|
+ # Could make a CSV out of the above "sa":
|
|
|
|
+ # | tr -s' ' | sed 's/^ //; s/ /,/g'
|
|
|
|
+
|
|
|
|
+ # Did we say NOT cumulative data?
|
|
|
|
+ if [ ${CUMULATIVE} -eq 0 ]; then
|
|
|
|
+ echo -n > /var/account/pacct
|
|
|
|
+ fi
|
|
|
|
+done
|
|
|
|
+
|
|
|
|
+# End of entrypoint-psacct.sh
|