我听说crontab是一个不错的选择,但是我该如何编写这一行,并将它放在服务器上?如何编写一个将在午夜每天运行脚本的cron?
回答
Here's a good tutorial关于crontab是什么以及如何在Ubuntu上使用它。你的crontab行会是这个样子:(00 00
表示午夜 - 0分钟以及0小时 - 和*
什么恶意每个月的每一天)
00 00 * * * ruby path/to/your/script.rb
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
...
这是很好的注意,可以使用特殊的“昵称”(在手册页),它没有时间和日期,尤其是“@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,人页)。
- 编辑用户以root的crontab与
crontab -e -u <username>
- 或修改当前用户的crontab只有
crontab -e
- 您可以设置编辑器与
EDITOR
环境变量env EDITOR=nano crontab -e -u <username>
- 或设置EDITOR的整个shell会话的值
export EDITOR=vim
crontab -e
- 使脚本可执行与
chmod a+x <file>
- 编辑用户以root的crontab与
创建脚本/程序作为cron作业,并把它添加到系统中的anacron的
/etc/cron.*ly
目录- anacron的/etc/cron.*ly目录:
- /etc/cron.daily
- 的/ etc/cron的。每小时
- /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
限定于此,并且限定cron运行。每小时在/etc/cron.d/0hourly
- 对于RHEL/CentOS的5.x的,它们在
- anacron的/etc/cron.*ly目录:
或者,可以在
/etc/cron.d
中创建系统crontables。- 先前描述的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
快速指南设置一个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
您的crontab语法对于03:45不正确。 crontab字段为分钟然后小时,即“45 03” - 你的帖子中有后退。 – 2014-10-14 20:47:47
感谢您的注意!更新 :) – dyltini 2014-10-16 10:11:42
有时你需要指定路径和使用crontab和rv的GEM_PATH米
像这样:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/[email protected]/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/[email protected]
# 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作业或通过编写shell脚本
让我们假设你的脚本名称有两种方式执行shell脚本“yourscript.sh”
首先检查脚本的用户权限。下面命令 使用检查脚本的用户权限
LL script.sh
如果脚本是在根,则使用下面的命令
须藤的crontab -e
其次,如果脚本拥有用户“ubuntu”,则使用以下命令:
cr ontab -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”)
睡眠1D - 意味着它等待一天,然后再次运行。
现在请允许您script.use以下命令: -
使用chmod + X every-day.sh
现在,通过使用 “nohup的” 在后台执行这个shell脚本。 即使从会话中注销后,这样也会继续执行脚本。
使用下面的命令来执行脚本。
nohup的./every-day.sh &
注: - 运行 “yourscript.sh” 23时55分日常,你正好23执行 “every-day.sh” 脚本:55pm。
- 1. 如何在每天午夜一分钟后执行cron?
- 2. 每天UTC下午1:00运行一个cron脚本
- 3. WordPress CRON每天午夜工作
- 4. Cron Scheduler每天午夜12时
- 5. Cron Expression(Quartz)为每个午夜运行一个程序
- 6. 每天午夜运行代码
- 7. 如何设置将在每个午夜运行的android任务?
- 8. 午夜运行春季cron作业
- 9. 如何上午12点每天在运行PHP脚本
- 10. Nodejs每天在午夜和一分钟创建一个cron任务
- 11. 如何在UWP的后台每天午夜运行一些代码?
- 12. 每天午夜执行任务 - Grails 3.2.2
- 13. 没有午夜的一天
- 14. 如何在每个午夜运行nodejs程序?
- 15. 如何设置每天运行的Cron脚本
- 16. 每天在午夜加最大值
- 17. cron在午夜之前到午夜之后
- 18. 如何在今天和今天午夜之间用MySQL编写查询?
- 19. 每天午夜更新布尔postgresql?
- 20. 节点cron,每半夜运行
- 21. 午夜运行windows服务
- 22. 的NSDate今天午夜
- 23. 如何每天在午夜12点旋转图像?
- 24. 春季日程安排 - 每天午夜不工作的Cron表达式?
- 25. 如何每天自动运行一个php脚本?
- 26. 如何编写一个可以每天运行一个进程的windows批处理脚本
- 27. Php脚本每天运行几次而没有CRON?
- 28. PHP每天午夜精神一小时的时间
- 29. 在每个月的最后一天运行的Cron表达式
- 30. 我应该如何每天运行我的cron,每天2小时,从下午12:30开始?
难道你不想错过'用户运行'专栏吗? – 2015-01-12 22:55:23
@LucasCimon'/ etc/crontab'(在Ubuntu上)允许用户列(在命令前面),但是当你运行'crontab -e'时,你正在编辑一个特定于用户的crontab,请允许此列。 IIRC Ubuntu不鼓励手动退出'/ etc/crontab',因为它可能被覆盖。看到这里:http://stackoverflow.com/questions/8475694/how-to-specify-in-crontab-by-what-user-to-run-script – 2015-01-13 07:30:48
@Jordan所以对根的crontab的答案是'sudo crotab -u root -e' – dashesy 2017-01-10 21:55:48