我想通过
anacron
设置一个定时任务,但我希望在用户模式下进行。我该如何实现这个目标?.anacron
的文件夹,并在其中创建两个子文件夹:etc
和spool
:mkdir -p ~/.anacron/{etc,spool}
~/.anacron/etc/anacrontab
的新文件,内容类似于以下内容:# /etc/anacrontab: anacron的配置文件
# 有关详细信息,请参阅anacron(8) 和 anacrontab(5)。
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
crontab -e
将以下行添加到您的crontab中:@hourly /usr/sbin/anacron -s -t $HOME/.anacron/etc/anacrontab -S $HOME/.anacron/spool
whoami
命令会返回用户名称? - Christophanacron
;它似乎只运行一次然后退出。系统的anacron
每小时调用一次。我想在这里使用类似的策略,即从用户的crontab
中调用用户的anacron
。 - Sparhawk/etc/apm/event.d/anacron
和/etc/init/anacron.conf
来处理重启。 - Ciro Santilli OurBigBook.com01 * * * * /usr/sbin/anacron -t /home/user/.anacron/etc/anacrontab -S /home/user/.anacron/spool
。 - Simon Woodsidecrontab -e
命令替换成了我的~/.profile
文件中的一个条目。 - Razor.profile
条目没有起作用:anacron
在登录时没有运行。我每次都需要使用sudo
来执行此操作,需要输入密码。 - stucash〜/ .profile
中:〜/ .profile
仅在bash启动登录交互式shell时由bash引用(即使〜/ bashrc
也不太有用,因为只有在bash启动交互式shell时才会被引用)。.profile
文件中的那行命令对我来说一直都很好用(我在这里使用的是Ubuntu 12.04)。 - Glutanimate# /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"。
还有另一个问题:如果计算机没有全天运行,那么就无法控制每天脚本运行的时间。我有一个网页抓取脚本,我希望它在上午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}"
anacrontab
中的任务前面加上sudo -u <user>
。 - Karthik T