crontab

##Crontab

###介绍:

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρόνος),原意是时间。

通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

我们Rails里面一个gem whenever用的就是crontab功能

###How to

crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。

例如ubuntu /etc/crontab就是对于整个系统crobtab文件

View Crontab help:

1
crontab -h

Edit Your Crontab:

1
crontab -e

View Users Cronjob:

1
crontab -u userName -l

View Root User Cronjob:

1
crontab -l

View /etc/crontab:

A cronjob can be also run from /etc/crontab file. To view it, enter:

1
less /etc/crontab

View Daily Cronjob:

Type the following commands:

1
2
3
cd /etc/cron.daily/
ls -l
cat filename

View Hourly Cronjobs:

Type the following commands:

1
2
3
4
cd /etc/cron.hourly/
ls -l
cat filename
View Weekly Cronjobs

View Weekly Cronjobs:

Type the following commands:

1
2
3
4
cd /etc/cron.weekly/
ls -l
cat filename
View Monthly Cronjobs

View Monthly Cronjobs:

Type the following commands:

1
2
3
cd /etc/cron.monthly/
ls -l
cat filename

View Software (Package) Specific Cronjobs:

Type the following commands:

1
2
3
cd /etc/cron.d/
ls -l
cat filename

###操作符号

在一个区域里填写多个数值的方法

1
2
3
4
5
- 逗号,分开的值,例如 1,3,4,7,8
- 连词符-制定值的范围,例如 1-6,意思等同于1,2,3,4,5,6
- 星号*代表任何可能的值。例如,在“小时域” 里的星号等于是“每一个小时”,等等

某些cron程序的扩展版本也支持斜线 ('/') 操作符,用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数;

###时间设置

1
2
3
4
5
6
7
8
# 文件格式说明
#  ——分钟 (0 - 59)
# |  ——小时 (0 - 23)
# | |  ——日   (1 - 31)
# | | |  ——月   (1 - 12)
# | | | |  ——星期 (0 - 7)(星期日=0或7)
# | | | | |
# * * * * * 被执行的命令

注: 在“星期域”(第五个域),0和7都被视为星期日。 不很直观的用法:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。请参考下例。 前5个域称之分时日月周,可方便个人记忆。 从第六个域起,指明要执行的命令。

###Example

1
2
3
4
5
6
7
8
9
10
11
 #===========================================================
 #      SYSTEM ACTIVITY REPORTS
 #  8am-5pm activity reports every 20 mins during weekdays.
 #  activity reports every hour on Saturday and Sunday.
 #  6pm-7am activity reports every hour during weekdays.
 #  summary prepared at 18:05 every weekday.
 #===========================================================
 0,20,40 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 &
 0 * * * 0,6 /usr/lib/sa/sa1 &
 0 18-7 * * 1-5 /usr/lib/sa/sa1 &
 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm &

###实际使用

上面介绍完crontab一些知识以及怎样使用,接下去就来一个比较具体例子,在我们的app里面,当然会涉及到数据库备份,而且往往是放在凌晨来备份,好吧,那我们就定在凌晨一点整时间来备份数据库

首先,我们写一个数据库导出的bash脚本:

1
2
touch backup_mysql.sh
vim backup_mysql.sh

在backup_mysql.sh里面填入以下内容:

1
2
3
4
#!/bin/bash

backup="/#{path}/dump_`date +%d-%m-%Y`.sql"
/usr/bin/mysqldump -u#{user} -p#{user_password} databse_name | gzip > $backup.gz

接下去,我们就可以使用crontab job来帮我们定时1点执行:

注意!backup_mysql.sh必须是要有可执行权限哦

打开crontab编辑:

1
crontab -e

然后选择你需要编辑模式,定时执行backup_mysql.sh:

1
0 1 * * * /bin/bash -l -c 'bash /#{path}/backup_mysql.sh'

好了,接下去你就可以1点整时看看是否有备份;当然其他命令都是这样来使用crontab。如果觉得自己手动写crontab太过麻烦,觉得时间那些都比较难写,用Rails的童鞋们,建议使用下面这个gem whenever

https://github.com/javan/whenever

Cron Wiki:

http://zh.wikipedia.org/wiki/Cron

定制我们自己的 JQuery 插件

### 介绍---一直来使用过的 JQuery 插件很多,也写过一些 JQuery 库的扩展。然而要真正了解插件如何扩展 JQuery 库需要对 JavaScript prototype 属性有一些基本的了解。虽然说不直接使用,但是 JavaScript prototype...… Continue reading

HTML INPUT TYPE

Published on July 26, 2015

HTTP 信封里的文档

Published on July 16, 2015