Ubuntu crontab定时执行shell脚本

Ubuntu crontab定时执行shell脚本

  • 最近打算让服务器定时的编译项目源码,及时产生二进制文件。写好了编译脚本后,就需要用到crontab设置定时任务。(如果需要更强大的功能,就要考虑用Jenkins了)

Crontab与Cron

  • 使用crontab命令来配置cron进程。cron进程是Linux中的一个守护进程,一般用来执行系统中的周期性任务。
  • Cron服务命令
# 查看服务状态
sudo  service cron status
# 开启服务
sudo service cron start
# 停止服务
sudo service cron stop
# 重启服务
sudo service cron restart
  • 设置定时任务
# 如果服务没有开启,开启该服务
sudo service cron restart
# 输入该命令,修改crontab配置。第一次输入该命令时,会提示选择编辑工具,一般选择vim(vi)即可。
crontab –e
# 在上一步打开的终端中(第一次使用该命令的话,在选择编辑工具后),输入下面的内容
# 该内容表示,在每天的0点0分,执行脚本MakeProject.sh
0 0 * * * /home/linduo/Project/MakeProject.sh
  • Crontab定时任务命令格式
# 格式如下
# minute hour day-of-month month-of-year day-of-week commands
# 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 

# 每天0点0分,执行指定脚本
0 0 * * * /home/linduo/Project/MakeProject.sh

# 星期1到星期5,11点30分,执行指定脚本
30 11 * * 1,2,3,4,5 /home/linduo/Project/MakeProject.sh

# 星期1、星期3、星期5,23点00,执行指定脚本,并将内容重定向到文件(使用日期命名)
# 获取日期命令,必须使用如下格式,否则会导致cron执行失败。
00 23 * * 1,3,5 /home/linduo/Project/MakeProject.sh all >> "/home/linduo/Project/Build_$(date +"\%Y-\%m-\%d")".log 2>&1

相关问题

  • 打开cron.log:Unbutun默认是关闭这个log的,需要手动打开,一遍查看cron执行状态。
# 找到cron.log行,取消注释
sudo vim /etc/rsyslog.d/50-default.conf
# 重启服务
sudo  service rsyslog  restart
# 查看cron.log
vim /var/log/cron.log
  • No MTA installed, discarding output:cron默认把屏幕输出到email中,而ubuntu默认没有装MTA。导致cron执行失败,并在cron.log中输入该内容。将输出重定向到文件即可解决该问题(参见上面将内存重定向到文件的命令)
  • cron常用命令
# 查看cron任务
crontab -l
# 为指定用户配置cron任务
crontab -e -u linduo
# 删除所有cron任务
 crontab -r

你可能感兴趣的:(Linux)