如何编写一个每天午夜运行脚本的 cron?
我听说 crontab 是一个不错的选择,但是我该如何编写该行以及将其放在服务器上的哪里?
I have heard crontab is a good choice, but how do I write the line and where do I put it on the server?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这里有一个很好的教程,介绍什么是 crontab 以及如何在 Ubuntu 上使用它。您的 crontab 行将如下所示:(
00 00
表示午夜 - 0 分钟和 0 小时 -*
表示每个月的每一天。)Here's a good tutorial on what crontab is and how to use it on Ubuntu. Your crontab line will look something like this:
(
00 00
indicates midnight--0 minutes and 0 hours--and the*
s mean every day of every month.)从手册页
最好注意可以使用的特殊“昵称”(在手册页中记录),特别是“@reboot”,它没有时间和日期替代项。
您还可以使用此技巧每分钟多次运行 cron 作业。
要添加 cron 作业,您可以执行以下三件事之一:
将命令添加到用户的 crontab,如上所示(以及来自 crontab,第 5 节,手册页)。
crontab -e -u
编辑用户的 crontabcrontab -e
编辑当前用户的 crontabEDITOR
环境变量设置编辑器env EDITOR=nano crontab -e -u <用户名>
导出 EDITOR=vim
crontab -e
chmod a+x使脚本可执行
/etc/cron.*ly
目录chmod a+x /etc/cron.daily/script_runs_daily.sh
-- 使其可执行man anacron
chmod a+x使脚本可执行
/etc/crontab
或/etc/anacrontab
中配置为在设定时间运行/etc/anacrontab
中定义此项,并在/etc/cron.d/0hourly
中定义 cron.hourly代码>或者,可以在
/etc/cron.d
中创建系统crontables。/etc/cron.d
的文件不需要是可执行的。someuser
身份执行的示例作业,并强制使用/bin/bash
作为 shell。from the man page
It is good to note the special "nicknames" that can be used (documented in the man page), particularly "@reboot" which has no time and date alternative.
You can also use this trick to run your cron job multiple times per minute.
To add a cron job, you can do one of three things:
add a command to a user's crontab, as shown above (and from the crontab, section 5, man page).
crontab -e -u <username>
crontab -e
EDITOR
environment variableenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
create a script/program as a cron job, and add it to the system's anacron
/etc/cron.*ly
directorieschmod a+x /etc/cron.daily/script_runs_daily.sh
-- make it executableman anacron
chmod a+x <file>
/etc/crontab
or/etc/anacrontab
to run at a set time/etc/anacrontab
, and define cron.hourly in/etc/cron.d/0hourly
Or, One can create system crontables in
/etc/cron.d
./etc/cron.d
do not need to be executable.someuser
, and the use of/bin/bash
as the shell is forced.设置 cron 作业的快速指南
创建一个新的文本文件,例如:mycronjobs.txt
对于每个日常作业(00:00、03:45),保存计划行mycronjobs.txt
将作业发送到 cron(每次运行此命令时,cron 都会删除已存储的内容并使用 mycronjobs.txt 中的新信息进行更新)
额外有用信息
查看当前的 cron 作业
删除所有 cron 作业
Quick guide to setup a cron job
Create a new text file, example: mycronjobs.txt
For each daily job (00:00, 03:45), save the schedule lines in mycronjobs.txt
Send the jobs to cron (everytime you run this, cron deletes what has been stored and updates with the new information in mycronjobs.txt)
Extra Useful Information
See current cron jobs
Remove all cron jobs
有时您需要使用 crontab 和 rvm 来指定 PATH 和 GEM_PATH。
像这样:
Sometimes you'll need to specify PATH and GEM_PATH using crontab with rvm.
Like this:
您可以通过两种方式执行shell脚本,使用cron作业或编写shell脚本
让我们假设您的脚本名称是“yourscript.sh”
首先检查脚本的用户权限。
使用下面的命令检查脚本的用户权限
ll script.sh
如果脚本位于 root 中,则使用下面的命令
sudo crontab -e
其次,如果脚本拥有用户“ubuntu”,然后使用下面的命令
crontab -e
在 crontab 中添加以下行:-
55 23 * * * /path/to/yourscript.sh
另一种方法这样做是编写一个脚本并在后台运行它
这是您必须在其中放置脚本名称的脚本(例如:- youscript.sh),该脚本将在每天下午 23:55 运行
#!/bin/bash
虽然是真的
做
/home/modassir/yourscript.sh
睡眠1天
完毕
将其保存在一个文件中(让其命名为“every-day.sh”)
sleep 1d - 意味着它等待一天,然后再次运行。
现在授予您的脚本权限。使用以下命令:-
chmod +x every-day.sh
现在,使用“nohup”在后台执行此 shell 脚本。
即使您从会话注销后,这也会继续执行脚本。
使用下面的命令来执行脚本。
nohup ./every-day.sh &
注意:- 要在每天下午 23:55 运行“yourscript.sh”,您必须在下午 23:55 准时执行“every-day.sh”脚本。
You can execute shell script in two ways,either by using cron job or by writing a shell script
Lets assume your script name is "yourscript.sh"
First check the user permission of the script.
use below command to check user permission of the script
ll script.sh
If the script is in root,then use below command
sudo crontab -e
Second if the script holds the user "ubuntu", then use below command
crontab -e
Add the following line in your crontab:-
55 23 * * * /path/to/yourscript.sh
Another way of doing this is to write a script and run it in the backgroud
Here is the script where you have to put your script name(eg:- youscript.sh) which is going to run at 23:55pm everyday
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
save it in a file (lets name it "every-day.sh")
sleep 1d - means it waits for one day and then it runs again.
now give the permission to your script.use below command:-
chmod +x every-day.sh
now, execute this shell script in the background by using "nohup".
This will keep executing the script even after you logout from your session.
use below command to execute the script.
nohup ./every-day.sh &
Note:- to run "yourscript.sh" at 23:55pm everyday,you have to execute "every-day.sh" script at exactly 23:55pm.
将这句话放入 crontab 文件中:
0 0 * * * /usr/local/bin/python /opt/ByAccount.py > /var/log/cron.log 2>&1
Put this sentence in a crontab file:
0 0 * * * /usr/local/bin/python /opt/ByAccount.py > /var/log/cron.log 2>&1