linux Anacron不会运行来自python/bash脚本的通知

qxsslcnc  于 2022-12-29  发布在  Linux
关注(0)|答案(1)|浏览(134)

∮最基本的∮
我尝试将桌面通知添加到一些使用anacron运行的相当简单的脚本中,只是为了让我知道它们何时运行以及何时完成。由于某种原因,脚本确实运行了,但通知从未发送。如果我手动运行脚本(也就是说,使用./bash_test.sh而不是sudo anacron -fdn testing),通知发送得很好。

剧本

我尝试运行的bash脚本如下所示:

#!/bin/bash

python -c 'import notifications; notifications.clamstart()'

#some clamav scanning stuff happens in here, this bit runs fine

python -c 'import notifications; notifications.clamfinish()'

对应的notifications.py文件如下所示:

from plyer import notification

def clamstart():
    notification.notify(
        message="Security script has started running.",
        app_name="Clam Scan Daily",
        hints={"desktop-entry":"clamtk"}
    )

def clamfinish():
    notification.notify(
        message="Security script has finished running.",
        app_name="Clam Scan Daily",
        hints={"desktop-entry":"clamtk"}
    )

补充信息

  • 这两个文件在同一个目录中,所以据我所知,import语句应该工作正常(当我使用./bash_test.sh运行它时,它们确实工作正常)
  • 我已经尝试过使用notify-send,这是我最初设置的,它也遇到了同样的问题,这就是为什么我决定尝试切换到python的plyer notify(),看看是否有效。
  • 所有这些组件单独运行都很好,只有当我尝试使用sudo anacron -fdn testing的anacron运行它们时,它们才会停止工作
  • 我相信anacrontab设置正确,因为它运行除了通知位,但以防万一,我会在这里添加它:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
1       10      backup-script   /home/glottophilos/backup_daily.sh
7       15      virus-scan      /home/glottophilos/clamscan_daily.sh
1       10      testing         /home/glottophilos/testscript.sh
  • 我还应该指出,我非常反对使用cron而不是anacron的想法,因为这是一个个人钻机的设置,并不是所有的时间。如果有另一种方法来处理调度,虽然根本不需要anacron,我很乐意探索这个选项!
xsuvu9jc

xsuvu9jc1#

溶液

好的,按照@Nick ODell在原始文件的注解中的指示,解决方案似乎已经在etc/anacrontab文件中完成了这一操作:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
1       10      backup-script   sudo -u glottophilos DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /home/glottophilos/backup.sh>
7       15      virus-scan      sudo -u glottophilos DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /home/glottophilos/clamscan-daily.sh>
1       10      testing         sudo -u glottophilos DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /home/glottophilos/testscript.sh>

然后在bash脚本中使用此格式(完全避免使用python):

notify-send --app-name="Clam Scan Daily" --hint=string:desktop-entry:clamtk "Security script is running."

相关问题