我一直在研究任务调度之类的东西。我偶然发现了 crontab 命令功能。
crontab 是一个创建的文件还是一个命令?
如果是文件,那么一个用户可以拥有多少个文件?它们是用户特定的还是系统特定的(例如,如果我使用 crontab 创建任务,当另一个用户登录系统时,该任务是否会执行?)
如果它是一个命令,那么它将执行任务的信息存储在哪里?
答案1
该命令crontab -e
将创建一个文件,但您不需要知道这一点,并且永远不要手动编辑它。
man crontab
向您展示各种选项,其中最重要的是:
crontab -e
编辑crontab -l
列表
请注意,作为 cron 作业的环境与您在交互式 shell 中习惯的环境完全不同。最简单的检查方法是按如下方式设置 cron 作业:
* * * * * set > /tmp/environment.log
# | | | \day of week 0-7 (0 or 7 is Sun, or use names)
# | | \--month 1-12 (or names, see below)
# | \----day of month 1-31
# \------hour 0-23
#\--------minute 0-59
有关 crontab 本身的语法,请检查man 5 crontab
。
然后等待一分钟并再次删除 cronjob,因为否则这个无意义的作业将每分钟运行一次。
set
然后检查交互式 shell (只需输入) 和 cronjob (只需输入cat /tmp/environment
)之间的区别。特别是PATH
和SHELL
可能会让你感到惊讶。
答案2
如果你对按常规安排任务感兴趣用户Ubuntu 中的帐户(即你没有做系统范围的事情,因为根),则应跳过 、 、 和 的cron
所有crontab
具体at
内容anacron
。
相反,看看计划任务应用程序可通过 Unity Dash 或类似的应用程序菜单在 Ubuntu 中使用。它极大地简化了安排项目的工作。它的使用存在一些“陷阱”,但这样您就不必在命令行中执行任何操作。
例如,我有一个小备份脚本,我定期使用它运行计划任务(该程序基本上将项目插入到您的 crontab 等中。)
计划任务提供两种不同的视图。一种视图经过简化,如下所示:
另一个视图显示了 crontab 将显示的内容:
其中一个“陷阱”是您的正常“PATH”不适用于特定的计划项目,因此您需要明确要运行什么命令。
cron
无论如何,、、和crontab
的细节都太宽泛,无法特定于 Ubuntu。 at
anacron