问题描述
我听说crontab是一个不错的选择,但是如何编写该行以及如何将其放在服务器上呢?
最佳思路
Here’s a good tutorial是什么crontab以及如何在Ubuntu上使用它。您的crontab行将如下所示:
00 00 * * * ruby path/to/your/script.rb
(00 00
表示午夜–0分钟和0小时-*
表示每月的每一天。)
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
次佳思路
从手册页
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
...
最好注意可以使用的特殊”nicknames”(在手册页中记录),尤其是没有时间和日期替代的”@reboot”。
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
您还可以使用此技巧每分钟多次运行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
要添加cron作业,您可以执行以下三种操作之一:
-
将命令添加到用户的crontab中,如上所示(以及crontab的第5节,手册页)。
-
使用
crontab -e -u <username>
以root身份编辑用户的crontab -
或仅使用
crontab -e
编辑当前用户的crontab -
您可以使用
EDITOR
环境变量设置编辑器-
env EDITOR=nano crontab -e -u <username>
-
或为整个shell会话设置EDITOR的值
-
export EDITOR=vim
-
crontab -e
-
-
-
使用
chmod a+x <file>
使脚本可执行
-
-
创建一个脚本/程序作为cron作业,并将其添加到系统的anacron
/etc/cron.*ly
目录中-
anacron /etc/cron.*ly目录:
-
/etc/cron.daily
-
/etc/cron.hourly
-
/etc/cron.monthly
-
/etc/cron.weekly
-
-
如:
-
/etc/cron.daily/script_runs_daily.sh
-
chmod a+x /etc/cron.daily/script_runs_daily.sh
-使其可执行
-
-
另请参见anacron手册页:
man anacron
-
使用
chmod a+x <file>
使脚本可执行 -
这些cron。* ly脚本何时运行?
-
对于RHEL /CentOS 5.x,它们在
/etc/crontab
或/etc/anacrontab
中配置为在设置的时间运行 -
RHEL /CentOS 6.x +和Fedora 17+ Linux系统仅在
/etc/anacrontab
中定义此定义,并在/etc/cron.d/0hourly
中定义cron.hourly
-
-
-
或者,可以在
/etc/cron.d
中创建系统crontable。-
将先前描述的crontab语法(另外为用户提供了执行每个作业的方式)放入文件中,然后将该文件放入/etc/cron.d目录。
-
这些在系统包装(例如RPM软件包)中易于管理,因此通常可能是特定于应用程序的。
-
语法差异在于,必须在时间/日期字段之后和要执行的命令之前为cron作业指定用户。
-
添加到
/etc/cron.d
的文件不需要可执行。 -
这是一个以用户
someuser
的身份执行的示例作业,并且强制使用/bin/bash
作为 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
第三种思路
有时您需要使用带有rvm的crontab来指定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
第四种思路
设置Cron作业的快速指南
创建一个新的文本文件,例如:mycronjobs.txt
对于每个日常工作(00:00,03:45),将计划行保存在mycronjobs.txt中
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
将作业发送给cron(每次运行时,cron都会删除已存储的内容,并使用mycronjobs.txt中的新信息进行更新)
crontab mycronjobs.txt
额外有用的信息
查看当前的cron工作
crontab -l
删除所有cron作业
crontab -r