如何在用户模式下运行 anacron?

如何在用户模式下运行 anacron?

我想通过设置计划任务,anacron但我想在用户模式下进行设置。我该如何实现?

答案1

您可以设置一个单独的 anacron 实例以在用户模式下运行:

  1. .anacron在主目录中创建一个文件夹并在其中创建两个子文件夹,etc然后spool

    mkdir -p ~/.anacron/{etc,spool}
    
  2. 创建一个新文件~/.anacron/etc/anacrontab,其内容类似于以下内容:

    # /etc/anacrontab: configuration file for anacron
    
    # See anacron(8) and anacrontab(5) for details.
    
    SHELL=/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    # period  delay  job-identifier  command
    1         10     testjob         test.sh
    
  3. 使用以下行添加到你的 crontab 中crontab -e

    @hourly /usr/sbin/anacron -s -t $HOME/.anacron/etc/anacrontab -S $HOME/.anacron/spool
    

答案2

这对我有用(谢谢),但我没有使用答案中给出的最后一步:

然后将以下行添加到您的~/.profile

我正在使用 Ubuntu Studio 12.10 Quantal,在我的例子中,我没有执行最后一步,而是在此处输入了一行代码:“应用程序菜单”→“设置”→“设置管理器”,然后在设置管理器中的“会话和启动”下,选择“应用程序自动启动”选项卡。

这是为我们这些 GUI 用户准备的,因为~/.profile只有在 bash 启动登录交互式 shell 时才会提供它(甚至~/bashrc不是那么有用,因为它只有在 bash 启动交互式 shell 时才会提供它)。

答案3

上面显示的 anacrontab 存在问题:anacron 仅在 PATH 指定的目录中查找可执行文件。因此它找不到 test.sh。

更好的解决方案是使用命令 run-parts:

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# period  delay  job-identifier  command
1         10     dailyjob        run-parts ${HOME}/.anacron/daily/

这要求我们每天创建目录:

mkdir -p ~/.anacron/{etc,spool,daily}

run-parts 不会执行名称中带有“.”的脚本,例如“test.sh”,因此请将脚本重命名为“my-test”。

还有另一个问题:如果计算机不是 24/7 全天候运行,那么就无法控制每日脚本的运行时间。我有一个网页抓取脚本,我想在上午 11 点左右或当天晚些时候运行。我通过在“at”设施中安排网页抓取作业(sudo apt install at)来解决这个问题。

所以我有一个 daily/crawl 脚本,如下所示:

#!/bin/bash

preferred_time="11:15"
scheduled_time="${preferred_time}"
preferred_time_as_number="${preferred_time/:/}"
current_time_as_number=$(date +%H%M)
if [ "${current_time_as_number}" -ge "${preferred_time_as_number}" ]; then
    scheduled_time="NOW"
fi
at -M -f "${HOME}/bin/crawl-dagpris.sh" "${scheduled_time}"

相关内容