[Linux]Crond configuration in Ubuntu

来源:互联网 发布:房屋租赁软件 编辑:程序博客网 时间:2024/06/05 06:30
 
1.进到cisco_phase1.sql存放的目录下,使用svn add cisco_phase1.sql命令在svn上创建好cisco_phase1.sql
2.在/etc/cron.daily下创建了mysql文件,内容如下:
mysqldump -ucisco -pcisco cisco_phase1 > /opt/cruisecontrol-bin-2.8.2/projects/CeoPhase1/db/mysql/cisco_phase1.sql
cd /opt/cruisecontrol-bin-2.8.2/projects/CeoPhase1/db/mysql
svn ci -m "create a mysql databse back-up" cisco_phase1.sql
这个文件的作用就是,每天就创建从mysql数据库备份一次,并且上传到svn
3.crontab -e 编辑增加任务。
# m h  dom mon dow   command
6 6 * * * /etc/cron.daily/mysql
每天早上6点6分执行/etc/cron.daily/mysql脚本
4.crontab -l 查看我们的任务。
5.sudo /etc/init.d/cron restart 重启crond。
 
 
有些命令保存 crontab 文件需要你的用户有root许可。如果你想要定期运行更大权限的命令, 请设置根 crontab 文件:
sudo crontab -e
比方说重启openvpn,一开始用crontab -e总是不能完成,改用sudo crontab -e就ok了
=========================================================================
以下部分摘自网络
=========================================================================

1.cron介绍

cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做crontab的命令允许用户提交、编辑或删除相应的作业。下面是crontab的格式:
分< >时< >日< >月< >星期< >要运行的命令

crontab命令的一般形式为:
crontab[-u user] -e -l -r
其中:
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。

分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:

每天早上6点

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

1月1日早上4点

0 4 1 1 * command line

每 次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件 中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文 件修改后不需要重新启动cron服务。

2.mysqldump介绍

--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除。

--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作

-c
这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。

--delayed-insert
在INSERT命令中加入DELAY选项

-F
使用这个选项,在执行导出之前将会刷新MySQL服务器的log.

-f
使用这个选项,即使有错误发生,仍然继续导出

-l
使用这个选项,导出表的时候服务器将会给表加锁。

-t
这个选项使的mysqldump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。

-d
这个选项使的mysqldump命令不创建INSERT语句。

--opt
此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。

-q
这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。

-T path
这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命 名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。

-w "WHERE Clause" or -where = "Where clause "
使用这一选项来过筛选将要放到 导出文件的数据

3.进行备份

建立备份文件夹 /mysqlbak

在 /usr/sbin 文件下建立bakmysql脚本
#!/bin/sh
name=$(date +%Y-%m-%d)
mysqldump database  -ubackup -p123456 |gzip>/mysqldata/mysql$name.gz

在ubuntu下下可以选择两种任务方案
第一:
查看 /etc/crontab 文件
# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
第一个是指每个小时的第17分执行/etc/cron.hourly下的所有任务,后面的都类似。
m   分钟
h   小时
dom   即day of month吧,就是日期
mon   即month,月份
dow   即day of week 星期
run-parts 是执行后面指定的目录下的任务,不指定这个参数则为执行单个指定的文件。
根据这些我们就可以很轻松的进行任务,直接把我们的脚本根据自己的需求放入到其中的文件夹中即可。

第二:
1.crontab -e 编辑增加任务。
0 0  *    *   *    /usr/sbin/bakmysql
表示在每天的0点0分执行/usr/sbin/bakmysql脚本。
2.crontab -l 查看我们的任务。
3./etc/init.d/cron restart 重启crond。