Ubuntu 如何编写每天午夜运行脚本的cron?
我听说crontab是一个不错的选择,但是我该如何写这行代码,以及把它放在服务器上的什么地方呢?关于什么是crontab以及如何在Ubuntu上使用它。您的crontab行将如下所示:Ubuntu 如何编写每天午夜运行脚本的cron?,ubuntu,cron,Ubuntu,Cron,我听说crontab是一个不错的选择,但是我该如何写这行代码,以及把它放在服务器上的什么地方呢?关于什么是crontab以及如何在Ubuntu上使用它。您的crontab行将如下所示: 00 00 * * * ruby path/to/your/script.rb (00表示午夜--0分钟零小时--*s表示每月的每一天。) 语法: mm hh dd mt wd命令 毫米分钟0-59 小时0-23 第1-31月的dd日 mt第1-12个月 第0-7周的wd日(星期日=0或7) 命令:您想要运行什
00 00 * * * ruby path/to/your/script.rb
(00
表示午夜--0分钟零小时--*
s表示每月的每一天。)
语法:
mm hh dd mt wd命令
毫米分钟0-59
小时0-23
第1-31月的dd日
mt第1-12个月
第0-7周的wd日(星期日=0或7)
命令:您想要运行什么
所有数值都可以替换为*表示所有
从手册页
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-e-u
- 或者使用
crontab-e
- 您可以使用
环境变量设置编辑器编辑器
env EDITOR=nano-crontab-e-u
- 或者为整个shell会话设置编辑器的值
export EDITOR=vim
crontab-e
chmod a+x使脚本可执行
/etc/cron.*ly
目录中
- anacron/etc/cron.*ly目录:
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
- 例如:
- /etc/cron.daily/script\u runs\u daily.sh
——使其可执行chmoda+x/etc/cron.daily/script\u runs\u daily.sh
- 另请参见anacron手册页:
man-anacron
- 使用
chmod a+x使脚本可执行
- 这些cron.*ly脚本何时运行?
- 对于RHEL/CentOS 5.x,它们在
或/etc/crontab
中配置为在设定的时间运行/etc/anacrontab
- RHEL/CentOS 6.x+和Fedora 17+Linux系统仅在
中定义此项,并在/etc/anacrontab
中定义cron.hourly/etc/cron.d/0hourly
- 对于RHEL/CentOS 5.x,它们在
/etc/cron.d
中创建系统crontable
- 前面描述的crontab语法(另外还提供了一个用户来执行每个作业)被放入一个文件中,该文件被放到/etc/cron.d目录中
- 这些在系统打包(例如RPM包)中易于管理,因此通常可能是特定于应用程序的
- 语法上的区别在于,必须在时间/日期字段之后和要执行的命令之前为cron作业指定一个用户
- 添加到
的文件不需要是可执行的/etc/cron.d
- 下面是一个作为用户
执行的示例作业,以及强制使用shell时的someuser
/bin/bash
设置cron作业的快速指南 创建一个新的文本文件,例如:mycronjobs.txt 对于每个日常作业(00:00、03:45),将计划行保存在mycronjobs.txt中 将作业发送给cron(每次运行此操作时,cron都会删除已存储的内容,并使用mycronjobs.txt中的新信息进行更新) 额外有用信息 请参阅当前的cron作业
crontab -l
crontab -r
删除所有cron作业
crontab -l
crontab -r
有时,您需要使用带有rvm的crontab指定路径和GEM_路径 像这样:
# 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
您可以通过两种方式执行shell脚本,一种是使用cron作业,另一种是编写shell脚本 假设脚本名为“yourscript.sh” 首先检查脚本的用户权限。 使用下面的命令检查脚本的用户权限 ll script.sh 如果脚本位于根目录中,则使用以下命令 sudo crontab-e 第二,如果脚本包含用户“ubuntu”,则使用下面的命令 crontab-e 在crontab中添加以下行:- 55 23***/path/to/yourscript.sh 另一种方法是编写脚本并在后台运行 下面是脚本,您必须在其中输入脚本名(例如:-youscript.sh),该脚本将在每天晚上23:55运行
#!/bin/bash
虽然是真的
做
/home/modassir/yourscript.sh
睡眠1d
完成
将其保存在文件中(将其命名为“everyday.sh”)
sleep 1d-表示它等待一天,然后再次运行
现在为脚本授予权限。使用以下命令:-
chmod+x每天。sh
现在,在后台使用“nohup”执行这个shell脚本。
即使在您从会话注销后,这也将继续执行脚本
使用下面的命令执行脚本
nohup./every-day.sh&
注意:-要在每天晚上23:55运行“yourscript.sh”,您必须在晚上23:55执行“everyday.sh”脚本。将这句话放在crontab文件中:
0***/usr/local/bin/python/opt/ByAccount.py>/var/log/cron.log 2>&1您的crontab语法对于03:45不正确。crontab字段是分钟,然后是小时,即“45 03”-您的帖子中有它。您是否错过了“以用户身份运行”列?@lucasimon用户列(位于命令之前)在
/etc/crontab
(在Ubuntu上)中是允许的,但是当您运行crontab-e
时,您正在编辑一个特定于用户的crontab,这不允许使用此列。IIRC U
crontab -r
# 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