【问题标题】:Raspberry Pi OS - at command does nothingRaspberry Pi OS - at 命令什么都不做
【发布时间】:2021-11-05 11:10:15
【问题描述】:

我有一个带有 Pi OS 的 Pi 3B+ (PRETTY_NAME="Raspbian GNU/Linux 10 (buster)")

我想在某个时间运行一个脚本,使用 at 命令。

出于测试目的,我制作了一个 test1.sh,以使用 pyautogui 打开 Chromium 浏览器。

此文件位于 /home/pi/test1.sh 并包含以下内容:

#!/usr/bin/python3
import pyautogui
pyautogui.click(67, 20) #click Chromium icon

当在 GUI 中单击以及在终端中键入 ./test1.sh 运行它时,此 .sh 执行良好。

尝试使用 at 命令不起作用并产生以下结果:

pi@raspberrypi:~ $ at 11:50
warning: commands will be executed using /bin/sh
at> ./test1.sh
at> < EOT> (Here is where I type ctrl+D)
job 11 at Fri Nov  5 11:50:00 2021

在指定的时间,什么都没有发生。我知道这一定是我做错了什么,但对于我的生活,我无法弄清楚它是什么。帮忙?

编辑:

帖子中缺少shebang中的第一个/,但文件中没有。

atq 什么都不返回

ps ax 返回下面的文本(为简洁起见)

 PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:05 /sbin/init splash
    2 ?        S      0:00 [kthreadd]
    3 ?        I<     0:00 [rcu_gp]

date 返回准确的日期和时间

cat /var/mail/pi 返回以下内容:

Subject: Output from your job       11
To: pi@raspberrypi
Message-Id: <E1miwnI-0000tR-83@raspberrypi>
From: pi@raspberrypi
Date: Fri, 05 Nov 2021 11:50:00 +0100

sh: 49: ./test1.sh: not found

From pi@raspberrypi Fri Nov 05 12:05:00 2021
Return-path: <pi@raspberrypi>
Envelope-to: pi@raspberrypi
Delivery-date: Fri, 05 Nov 2021 12:05:00 +0100
Received: from pi by raspberrypi with local (Exim 4.92)
    (envelope-from <pi@raspberrypi>)
    id 1mix1o-0000xA-KG
    for pi@raspberrypi; Fri, 05 Nov 2021 12:05:00 +0100

这表明该文件不存在,但是当我输入 ls 时,它清楚地显示出来了。

使用完整路径 /home/pi/test1.sh 也不会返回任何内容,但收到的邮件声明如下:

Subject: Output from your job       13
To: pi@raspberrypi
Message-Id: <E1mjHmv-0000NT-4B@raspberrypi>
From: pi@raspberrypi
Date: Sat, 06 Nov 2021 10:15:01 +0100

Traceback (most recent call last):
  File "/home/pi/test1.sh", line 3, in <module>
    import pyautogui
  File "/home/pi/.local/lib/python3.7/site-packages/pyautogui/__init__.py", line 249, in <module>
    import mouseinfo
  File "/home/pi/.local/lib/python3.7/site-packages/mouseinfo/__init__.py", line 223, in <module>
    _display = Display(os.environ['DISPLAY'])
  File "/usr/lib/python3.7/os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'DISPLAY'

【问题讨论】:

  • 缺少#!usr/bin/python3 (-> #!/usr/bin/python3) 中的第一个斜线?
  • 您提交到 at(1) 的作业是指当前目录 ("./test...")。但是当作业启动时,当前目录是什么?尝试写下完整路径。
  • 检查您是否收到at工作后的任何邮件:cat /var/mail/pi
  • 您的时区设置正确吗? date 打印出正确的当地时间吗?
  • @linuxfansaysReinstateMonica: at 将使用调用at 的同一工作目录执行作业。这是记录在案的行为。因此,如果 ./test1.sh 在给定目录中工作,那么在同一目录中运行 at 并输入 ./test1.sh 也应该可以工作。

标签: linux raspberry-pi at-utility


【解决方案1】:

正如@linuxfan 在 cmets 中指出的那样:

DISPLAY 变量未设置。

通过执行以下操作解决了问题:

pi@raspberrypi:~ $ at now + 1 minute
warning: commands will be executed using /bin/sh
at> export DISPLAY=:0.0
at> /home/pi/test1.sh
at> <EOT>
job 17 at Sun Nov  7 10:55:00 2021

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 2017-03-22
    • 1970-01-01
    • 2014-11-17
    • 2013-05-01
    • 1970-01-01
    • 2012-11-14
    • 2012-06-10
    相关资源
    最近更新 更多