Reviewed-by: Aleix Boné <abonerib@bsc.es> Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es>
		
			
				
	
	
		
			27 lines
		
	
	
		
			778 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			778 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
# Locate nix daemon pid
 | 
						|
nd=$(pgrep -o nix-daemon)
 | 
						|
 | 
						|
# Locate children of nix-daemon
 | 
						|
pids1=$(tr ' ' '\n' < "/proc/$nd/task/$nd/children")
 | 
						|
 | 
						|
# For each children, locate 2nd level children
 | 
						|
pids2=$(echo "$pids1" | xargs -I @ /bin/sh -c 'cat /proc/@/task/*/children' | tr ' ' '\n')
 | 
						|
 | 
						|
cat <<EOF
 | 
						|
HTTP/1.1 200 OK
 | 
						|
Content-Type: text/plain; version=0.0.4; charset=utf-8; escaping=values
 | 
						|
 | 
						|
# HELP nix_daemon_build Nix daemon derivation build state.
 | 
						|
# TYPE nix_daemon_build gauge
 | 
						|
EOF
 | 
						|
 | 
						|
for pid in $pids2; do
 | 
						|
  name=$(cat /proc/$pid/environ 2>/dev/null | tr '\0' '\n' | rg "^name=(.+)" - --replace '$1' | tr -dc ' [:alnum:]_\-\.')
 | 
						|
  user=$(ps -o uname= -p "$pid")
 | 
						|
  if [ -n "$name" -a -n "$user" ]; then
 | 
						|
    printf 'nix_daemon_build{user="%s",name="%s"} 1\n' "$user" "$name"
 | 
						|
  fi
 | 
						|
done
 |