我想定期运行cron作业,这会锁定我的电脑。
我在终端中键入以下3条命令中的任何一条,它们均有效:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
xdg-screensaver lock
gnome-screensaver-command -l
当我把它们放在cron中时,什么也没发生。
我还有2个其他运行SSH的作业。他们会工作,而这一点不会。
我尝试添加环境,但这也不起作用。这是我试图使crontab看起来像的样子:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
* * * * * /usr/bin/xdg-screensaver lock
(newline,EOF)
我尝试使用和不使用命令的/usr/bin/
前缀。我尝试在有和没有cron环境的情况下进行尝试。我也尝试过SHELL=/bin/bash
。
我尝试过类似nohup xdg-screensaver lock
的操作
没有结果。
我尝试将其放入脚本中,然后通过cron运行该脚本。没有结果。
编辑:
我尝试在crontab中设置DISPLAY。当我做echo $DISPLAY
后,我得到了:1
的回报。
我将crontab更改为:
DISPLAY=:1
* * * * * /usr/bin/xdg-screensaver lock
(newline,EOF)
我的电脑仍然无法锁定。但是现在,当我用service cron status
检查cron的状态时,我看到了新事物。这些新行出现:
├─25234 /usr/sbin/cron -f
├─25852 /usr/sbin/CRON -f
├─25853 /bin/sh -c /usr/bin/xdg-screensaver lock
├─25854 /bin/sh /usr/bin/xdg-screensaver lock
├─25862 dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager
├─25863 dbus-launch --autolaunch 6cd12da16cea4d79bb7367a0f8b8bd3e --binary-syntax --close-stderr
└─25866 dbus-launch --autolaunch 6cd12da16cea4d79bb7367a0f8b8bd3e --binary-syntax --close-stderr
Jan 23 22:38:01 riff CRON[25923]: pam_unix(cron:session): session opened for user riff by (uid=0)
Jan 23 22:38:01 riff CRON[25924]: (riff) CMD (/usr/bin/xdg-screensaver lock)
Jan 23 22:38:01 riff dbus-daemon[25938]: [session uid=1000 pid=25936] AppArmor D-Bus mediation is enabled
Jan 23 22:38:04 riff dbus-daemon[25953]: [session uid=1000 pid=25951] AppArmor D-Bus mediation is enabled
Jan 23 22:38:07 riff dbus-daemon[25959]: [session uid=1000 pid=25957] AppArmor D-Bus mediation is enabled
Jan 23 22:38:10 riff CRON[25923]: (CRON) info (No MTA installed, discarding output)
Jan 23 22:38:10 riff CRON[25923]: pam_unix(cron:session): session closed for user riff
新行是以dbus-send
,dbus-launch
和dbus-daemon
开头的行
我尝试在crontab中设置SHELL = / bin / bash,但没有任何改变
...
将错误重定向到日志后,
将xdg-screensaver lock
作为cron作业运行时,出现错误:
ERROR: Unknown command 'lock'.
使用gnome-screensaver -l
出现错误:
** Message: 23:25:04.831: Failed to get session bus: Could not connect: Connection refused
使用dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
时出现错误:
Failed to open connection to "session" message bus: Failed to connect to socket /tmp/dbus-ITbw92LLaf: Connection refused
所以我尝试用root的crontab运行dbus-send ..命令。现在错误是:
Failed to open connection to "session" message bus: /usr/bin/dbus-launch terminated abnormally with the following error: No protocol specified
Autolaunch error: X11 initialization failed.
将gnome-screensaver作为root cron作业运行后出现错误:
** Message: 00:06:01.092: Failed to get session bus: Error spawning command line “dbus-launch --autolaunch=6cd12da16cea4d79bb7367a0f8b8bd3e --binary-syntax --close-stderr”: Child process exited with code 1
答案 0 :(得分:0)
xdg-screensaver
无法知道需要锁定哪个显示手柄。您需要先设置DISPLAY。
在您当前的外壳中显示
echo $DISPLAY
然后将您的显示添加到crontab
DISPLAY=:0.1 # <-- Example Display
使用以下命令将输出重定向到日志文件
* * * * * /usr/bin/xdg-screensaver lock >/your/log/path.log 2>&1