如何使用 cron 运行注销?

如何使用 cron 运行注销?

我正在创建一些东西来允许我设置每个用户会话所花费的时间限制:我创建了一个计划任务工作:

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

我想跑步logout(可能关闭因为设置了 BIOS 密码),有人能告诉我如何通过计划任务?。

答案1

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

工作正常。

答案2

作为帕维尔·谢利瓦诺夫指出这一点文章需要从 cronjob设置DBUS_SESSION_BUS_ADDRESS并启用与 GUI 相关的任务。DISPLAY

他编写了一个 shell 脚本,该脚本适用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" "$@"

然后,可以使用 crontab 语法创建按给定时间表运行的用户 cronjob。例如,在 22:00 到 05:59 之间每 15 分钟运行一次:

$ 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

相关内容