|
卢卡因 上市 不久以前 有关cron和crontab的优秀教程 我认为值得分享。 Cron与Windows中的计划任务等效,只有从终端处理。 那些希望使用可视界面实现相同目标的人可以看到此 另一个项目. |
什么是cron?
cron这个名字来自希腊的chronos,意思是“时间”。 在Unix操作系统中,cron是一个常规的后台进程管理器(daemon),它定期运行进程或脚本(例如,每分钟,每天,每周或每月)。 在crontab文件中指定了必须执行的进程以及必须执行的时间。
科莫funciona
cron守护程序从 /etc/rc.d/中 o /etc/init.d中 取决于分布。 Cron在后台运行,每分钟检查一次crontab任务表 / etc / crontab Ø连接 / var / spool / cron 寻找要完成的任务。 作为用户,我们可以添加带有任务的命令或脚本以进行cron自动化某些流程。 例如,这对于自动化系统或良好备份系统的更新很有用。
什么是Crontab?
Crontab是一个简单的文本文件,存储了在用户指定的时间要执行的命令列表。 Crontab将检查应该执行脚本或命令的日期和时间,执行权限,并将在后台执行。 每个用户可以拥有自己的crontab文件,实际上 / etc / crontab 假定它是root用户的crontab文件,当普通用户(甚至root)想要生成自己的crontab文件时,我们将使用crontab命令。
Crontab是在多用户系统上以简单系统用户或root用户身份管理cron任务的最简单方法。
使用crontab
我们从一个简单的例子开始。
我们将使系统更新自动化,以消除“我总是必须更新,但我不喜欢那样的东西!”的烦恼。
首先,我们将编写一个脚本。 此脚本将由cron调用,并将包含我们希望它执行的所有指令,因此在将它包含在cron中之前,有必要以几种情况和几种方式对其进行测试,这是一个简单的更新脚本,如下所示:
#!/ bin / bash#脚本更新示例#选择您的发行版#debian-ubuntu#apt-get更新&apt-get -y升级#fedora #yum -y update #Arch #pacman --noconfirm -Syu
从发行行中删除#。 如果是Ubuntu / Debian,则以apt-get开头。
我们将脚本另存为update.sh(例如,脚本目录位于您的家)。 我们使用以下命令更改所述脚本的执行权限:
chmod a + x〜/脚本/ update.sh
我们运行了几次脚本,以验证一切运行顺利,我们修改了必要的内容(不应包含错误,否则cron只会一遍又一遍地重复一个错误)。 现在将任务添加到我们的crontab中。
将任务添加到crontab
我们使用crontab -e执行crontab的版本,在某些发行版(例如Ubuntu)中,它为我们提供了选择所需文本编辑器的选项,其余的则留给vi。 crontab文件将如下所示。
#mh dom mon dow用户命令
其中:
- m 对应于脚本执行的分钟,取值范围为0到59
- h 确切时间,将处理24小时格式,值的范围是0到23是午夜0:12。
- 礼物 指的是一个月中的某天,例如,如果您想每15天运行一次,则可以指定15
- 窗口 表示星期几,可以是数字(0到7,其中0和7是星期日)或英语中一天的前3个字母:mon,tue,wed,thu,fri,sat,sun。
- 用户 定义将执行命令的用户,可以是root用户,也可以是其他用户,只要他们有权执行脚本即可。
- 命令 指要执行的命令或脚本的绝对路径,例如: /home/usuario/scripts/update.sh,如果它调用脚本,那么它必须是可执行的
为了清楚起见,下面介绍了一些cron任务示例:
15 10 * * *用户/home/user/scripts/update.sh
它将在每天上午10:15运行update.sh脚本
15 22 * * *用户/home/user/scripts/update.sh
它将在每天晚上10:15运行update.sh脚本
00 10 * * 0 root apt-get -y update根用户
它将在每个星期日的上午10:00运行更新
45 10 * * sun root apt-get -y更新
根用户将在每个星期日(星期日)上午10:45运行更新
30 7 20 11 *用户/home/usuario/scripts/update.sh
20月7日30:XNUMX,用户将运行脚本
30 7 11 11 sun用户/home/usuario/scripts/pastel_con_velitas.sh
在11月7日上午30:XNUMX(即星期日),用户将庆祝其sysadmin(即我)
01 * * * *用户/home/usuario/scripts/molestorecordatorio.sh
每天每时每刻的烦人提醒(不建议使用)。
他们仍然可以处理 特殊范围:
30 17 * * 1,2,3,4,5
从星期一到星期五,每天下午5:30。
00 12 1,15,28 **
每个月的第一个,第十五和第12日中午28点(理想的工资单)
如果这令人困惑,则crontab处理 特殊字符串定义这些范围.
@reboot在启动时运行一次
@yearly每年仅运行一次:0 0 1 1 *
@每年与@yearly相同
@monthly每月运行一次,第一天:0 0 1 * *
@weekly每周每周第一个小时的第一分钟。 0 0 * * 0''。
每天@上午12:00 0 0 * * *
@midnight与@daily相同
每小时的第一分钟@hourly:0 * * * *
它的使用非常简单。
@hourly用户/home/user/scripts/molestorecordatorio.sh @monthly用户/home/user/scripts/backup.sh @daily root apt-get更新&& apt-get -y升级
最后但并非最不重要的:
Cron工作管理
crontab文件
用用户定义的文件替换现有的crontab文件
crontab -e命令
编辑用户的crontab文件,每一行将是一个新的crontab任务。
crontab -l
列出所有用户的crontab任务
crontab的-d
删除用户的crontab
crontab -c目录
定义用户的crontab目录(此目录必须具有用户的写入和执行权限)
crontab -u用户
处理另一个用户的crontab的前缀,例如:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u用户
与许多其他工具一样,可以在以下位置更深入,更详细地了解该工具: