Как запустить выход с помощью cron?

Я создаю что-то, чтобы позволить мне устанавливать ограничения на время, затрачиваемое на сеанс пользователя: я создал задание cron:

*/120 * * * 1,2,3,4,5 /path/to/command
*/180 * * * 0,6 /path/to/command

и я хочу бежать logout (и, возможно, отключение при наличии установленного пароля BIOS), может кто-нибудь сказать мне, как запустить оба из них через cron?

2 ответа

*/150 * * * 0,6 gnome-session-quit

Работает отлично.

Как указывает Павел Селиванов в этой статье, необходимо установить DBUS_SESSION_BUS_ADDRESS а также DISPLAY чтобы включить графические задачи из cronjob.

Он написал сценарий оболочки, который получает DBUS_SESSION_BUS_ADDRESS для XFCE, Gnome, Unity, Cinnamon и KDE. Я могу подтвердить, что работает под ubuntu:16.04,

$ sudo nano /usr/local/bin/gui-cron

#!/bin/sh
[ "$#" -lt 1 ] && echo "Usage: $0 program options" && exit 1

program="$1"
shift

user=$(whoami)
env_reference_process=$( pgrep -u "$user" xfce4-session || pgrep -u "$user" cinnamon-session || pgrep -u "$user" gnome-session || pgrep -u "$user" gnome-shell || pgrep -u "$user" kdeinit )

export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/"$env_reference_process"/environ | grep -z ^DBUS_SESSION_BUS_ADDRESS= | sed 's/DBUS_SESSION_BUS_ADDRESS=//')
export DISPLAY=$(cat /proc/"$env_reference_process"/environ | grep -z ^DISPLAY= | sed 's/DISPLAY=//')
"$program" "$@"

Затем можно создать пользовательский cronjob, который запускается по заданному расписанию с синтаксисом crontab. Вот, например, каждые 15 минут с 22:00 до 05:59:

$ crontab -e

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/15 22-23,00-05 * * * gui-cron gnome-session-quit --power-off
Другие вопросы по тегам