我听说crontab是一个不错的选择,但是如何编写该行以及如何将其放在服务器上呢?
我听说crontab是一个不错的选择,但是如何编写该行以及如何将其放在服务器上呢?
Answers:
这是一个很好的教程,介绍了什么是crontab以及如何在Ubuntu上使用它。您的crontab行将如下所示:
00 00 * * * ruby path/to/your/script.rb
(00 00
表示午夜--0分钟和0小时*
-s表示每月的每一天。)
句法: mm hh dd mt wd命令 毫米分钟0-59 时数0-23 1-3月dd日 mt月1-12 wd星期几0-7(星期日= 0或7) 命令:您要运行什么 所有数值都可以用*代替,表示所有
/etc/crontab
(在Ubuntu上)允许使用用户列(在命令之前),但是在运行时,crontab -e
您正在编辑用户特定的crontab,该列不允许使用。IIRC Ubuntu不鼓励/etc/crontab
手动退出,因为它可能会被覆盖。看到这里:stackoverflow.com/questions/8475694/…–
sudo crotab -u root -e
从手册页
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
...
最好注意可以使用的特殊“昵称”(在手册页中有记录),特别是“ @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>
crontab -e
EDITOR
环境变量
设置编辑器env EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
创建脚本/程序作为cron作业,并将其添加到系统的anacron /etc/cron.*ly
目录中
chmod a+x /etc/cron.daily/script_runs_daily.sh
-使它可执行man anacron
chmod a+x <file>
/etc/crontab
或/etc/anacrontab
运行/etc/anacrontab
,并在中定义cron.hourly/etc/cron.d/0hourly
或者,可以在中创建系统crontable /etc/cron.d
。
/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
您可以通过两种方式执行Shell脚本,即使用cron作业或编写Shell脚本
假设您的脚本名称是“ yourscript.sh”
首先检查脚本的用户权限。使用以下命令检查脚本的用户权限
ll script.sh
如果脚本在根目录下,则使用以下命令
须藤crontab -e
第二,如果脚本包含用户“ ubuntu”,则使用以下命令
crontab -e
在crontab中添加以下行:
55 23 * * * /path/to/yourscript.sh
另一种方法是编写脚本并在背景中运行
这是您必须在其中放置脚本名称(例如:-youscript.sh)的脚本,该脚本名称每天每天23:55运行
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
将其保存在文件中(将其命名为“ every-day.sh”)
睡眠1天-表示它等待一天,然后再次运行。
现在将权限授予您的脚本。使用以下命令:-
chmod + x every-day.sh
现在,使用“ nohup”在后台执行此shell脚本。即使您从会话中注销,这也将继续执行脚本。
使用以下命令执行脚本。
nohup ./every-day.sh&
注意:-要每天在23:55 pm运行“ yourscript.sh”,您必须在23:55 pm恰好执行“ every-day.sh”脚本。