Как я могу получить время простоя через dbus во время работы из /etc/rc.local?

#bash #dbus #ubuntu-21.04

Вопрос:

У меня есть рудиментарный скрипт bash, который проверяет, не простаивала ли система более часа, и если да, то выключает ее:

 #!/bin/bash

while true; do
get_idle_time=`dbus-send --print-reply --dest=org.gnome.Mutter.IdleMonitor /org/gnome/Mutter/IdleMonitor/Core org.gnome.Mutter.IdleMonitor.GetIdletime`
idle_time=$(echo $get_idle_time | awk '{print $NF}')
if [[ $idle_time -ge 3600000 ]]; then
shutdown
fi
done
 

Я добавил этот скрипт /etc/rc.local , чтобы он всегда был активным:

 #!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

bash /home/paulky/shutdown.sh

exit 0
 

Хотя bash /home/paulky/shutdown.sh с терминала работает, пока я вхожу в систему, выполнение этого с /etc/rc.local , похоже, не позволяет Ubuntu попасть на экран входа в систему и F2показывает, что это сообщение об ошибке повторяется бесконечно:

Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.

Я пробовал предварять export DISPLAY=:0 начало сценария, но безрезультатно.

Комментарии:

1. bash /home/paulky/shutdown.sh amp; ?

2. @Cyrus bash home/paulky/shutdown.sh — это все, что мне нужно было сделать, чтобы успешно запустить скрипт с терминала, поэтому у меня сложилось впечатление, что этого также будет достаточно для rc.local ?