Jor*_*ing 248
这是一个关于crontab是什么以及如何在Ubuntu上使用它的好教程.你的crontab行看起来像这样:
00 00 * * * ruby path/to/your/script.rb
Run Code Online (Sandbox Code Playgroud)
(00 00表示午夜 - 0分0小时 - *s表示每个月的每一天.)
Syntax: mm hh dd mt wd command mm minute 0-59 hh hour 0-23 dd day of month 1-31 mt month 1-12 wd day of week 0-7 (Sunday = 0 or 7) command: what you want to run all numeric values can be replaced by * which means all
Rus*_*aue 39
从手册页
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
Run Code Online (Sandbox Code Playgroud)
值得注意的是可以使用的特殊"昵称"(在手册页中记录),尤其是"@reboot",它没有时间和日期替代方案.
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
Run Code Online (Sandbox Code Playgroud)
您还可以使用此技巧每分钟多次运行您的cron作业.
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Run Code Online (Sandbox Code Playgroud)
要添加cron作业,您可以执行以下三种操作之一:
将命令添加到用户的crontab,如上所示(并从crontab,第5节,手册页).
crontab -e -u <username>crontab -eEDITOR环境变量
设置编辑器env EDITOR=nano crontab -e -u <username>export EDITOR=vimcrontab -echmod a+x <file>创建一个脚本/程序作为cron作业,并将其添加到系统的anacron /etc/cron.*ly目录中
chmod a+x /etc/cron.daily/script_runs_daily.sh - 使其可执行man anacronchmod a+x <file>/etc/crontab或/etc/anacrontab在设定的时间运行/etc/anacrontab,并定义了cron.hourly/etc/cron.d/0hourly或者,可以创建系统crontables /etc/cron.d.
/etc/cron.d不需要是可执行的.someuser,并/bin/bash强制使用shell作为shell. File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
Run Code Online (Sandbox Code Playgroud)
设置 cron 作业的快速指南
创建一个新的文本文件,例如:mycronjobs.txt
对于每个日常作业(00:00、03:45),将计划行保存在mycronjobs.txt中
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
Run Code Online (Sandbox Code Playgroud)
将作业发送到 cron (每次运行此命令时,cron 都会删除已存储的内容并使用mycronjobs.txt中的新信息进行更新)
crontab mycronjobs.txt
Run Code Online (Sandbox Code Playgroud)
额外有用的信息
查看当前的 cron 作业
crontab -l
Run Code Online (Sandbox Code Playgroud)
删除所有 cron 作业
crontab -r
Run Code Online (Sandbox Code Playgroud)
小智 5
有时您需要使用crontab和rvm指定PATH和GEM_PATH.
像这样:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
Run Code Online (Sandbox Code Playgroud)