tv xkiller: init
This commit is contained in:
parent
7c84b32f2d
commit
e0bbedff27
25
tv/5pkgs/simple/xkiller.nix
Normal file
25
tv/5pkgs/simple/xkiller.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ pkgs }:
|
||||
pkgs.writeDash "xkiller" ''
|
||||
set -efu
|
||||
exec >&2
|
||||
${pkgs.iproute}/bin/ss -lp src unix:/tmp/.X11-unix/X* |
|
||||
${pkgs.gnused}/bin/sed -n '
|
||||
s|.*/tmp/.X11-unix/X\([0-9]\+\)\>.*("X[^"]*",pid=\([0-9]\+\)\>.*|\1 \2|p
|
||||
' |
|
||||
while read -r display pid; do
|
||||
{
|
||||
exit_code=$(
|
||||
DISPLAY=:$display ${pkgs.coreutils}/bin/timeout 1 \
|
||||
${pkgs.xorg.xset}/bin/xset q >/dev/null 2>&1 &&
|
||||
echo 0 || echo $?
|
||||
)
|
||||
if test $exit_code = 124; then
|
||||
echo "X on display :$display is locked up; killing PID $pid..."
|
||||
${pkgs.coreutils}/bin/kill -SIGKILL "$pid"
|
||||
else
|
||||
echo "X on display :$display is healthy"
|
||||
fi
|
||||
} &
|
||||
done
|
||||
wait
|
||||
''
|
Loading…
Reference in New Issue
Block a user