Como executar o logout com o cron?

1

Estou criando algo que me permite definir limites de tempo gasto por sessão do usuário: criei um trabalho cron :

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

e eu quero rodar logout (e possivelmente shutdown como existe uma senha para BIOS), alguém poderia me dizer como rodar os dois via cron ? .

    
por Kieran 01.03.2015 / 13:53

2 respostas

3

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

Funciona bem.

    
por Kieran 01.03.2015 / 19:04
1

Como Pavel Selivanov aponta neste article é necessário definir DBUS_SESSION_BUS_ADDRESS e DISPLAY para ativar tarefas relacionadas a gui a partir de um cronjob.

Ele escreveu um shell script, que obtém o DBUS_SESSION_BUS_ADDRESS para o XFCE, o Gnome, o Unity, o Cinnamon e o KDE. Posso confirmar que funciona em 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" "$@"

Em seguida, pode-se criar um cronjob do usuário que é executado por um determinado cronograma com a sintaxe crontab. Aqui, por exemplo, a cada 15 minutos entre 22:00 e 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
    
por swiesend 18.06.2017 / 15:39