托管服务器大多时候是为了安全需要走数据备份,但是人工做又耗费时间,如何省时让系统自动备份?使用Crontab就能实现,Crontab是一个系统下的常用的定时执行工具,可以在无需人工干预的情况下运行指定作业,Crontab可用于设置周期性被执行的指令,下面我们就详细介绍一下Crontab的安装及使用方法:
一、Crontab的安装
1、CentOS下面安装Crontab
yum install vixie-cron crontabs //安装Crontabchkconfig crond on //设为开机自启动service crond start //启动
说明:vixie-cron软件包是cron的主程序;crontabs软件包是用来安装、卸装、 或列举用来驱动 cron 守护进程的表格的程序。
2、Debian下面安装Crontab
apt-get install cron //大部分情况下Debian都已安装。/etc/initd/cron restart //重启Crontab
二、Crontab使用方法
1、查看crontab定时执行任务列表
crontab -l
2、添加crontab定时执行任务
crontab -e
输入crontab任务命令时可能会因为crontab默认编辑器的不同。
crond是什么?
crond 和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的 *** 作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。
而crond正是它的守护进程。cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。
linux定时任务分为两种
1)系统自身轮训的任务,比如定时(5天或者一周)备份/var/log/message等日志文件(系统的定时任务一般分为七段或者八段(centos6以下),以空格分割)
系统轮训的配置文件/etc/logrotateconf (centos7以下的在/etc/crondaily/logrotate/logrotateconf )
2)用户执行的定时任务(用户的定时任务一般分为六段)
at适合执行一次就结束的调度任务
anacrontab适合于非724小时开机的服务器准备的,是以天为单位执行的,不能指定以分钟的定时任务,在停机期间没有任务执行,可以开机时执行。
cron服务是Linux的内置服务,但它不会开机自动启动,可以每分钟执行任务。可以用以下命令启动和停止服务:
以上1-5行分别为启动、停止、重启服务和重新加载配置、查看服务状态
把cron设为在开机的时候自动启动
crontab *** 作
基本格式
基本使用
Oracle中通过命令行实现定时 *** 作详解 Oracle中通过命令行实现定时 *** 作详解 Oracle基础
众所周知 一般 *** 作系统会提供定时执行任务的方法 例如 Unix平台上提供了让系统定时执行任务的命令Crontab 但是 对于某些需求 例如 一些对数据库表的 *** 作 最为典型的是证券交易所每日收盘后的结算 它涉及大量的数据库表 *** 作 如果仍然利用 *** 作系统去定时执行 不仅需要大量的编程工作 而且还会出现用户不一致等运行错误 甚至导致程序无法执行
一 分析问题
事实上 对于以上需求 我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现 任务队列管理器允许用户提前调度和安排某一任务 使其能在指定的时间点或时间段内自动执行一次或多次 由于任务在数据库中被执行 所以执行效率很高
任务队列管理器允许我们定制任务的执行时间 并提供了灵活的处理方式 还可以通过配置 安排任务在系统用户访问量少的时段内执行 极大地提高了工作效率 例如 对于数据库日常的备份 更新 删除和复制等耗时长 重复性强的工作 我们就可以利用任务队列管理器去自动执行以减少工作量
目前 拥有此项功能的数据库有许多 最有代表性的是SQL Server Oracle 等 但是 要让任务队列管理器工作 还需要我们加以配置才能实现 SQL Server的功能配置是在一个图形化界面(GUI)中实现的 非常简单 利用OEM客户端管理工具 Oracle的配置也可以在一个图形界面中完成 然而大多数的用户更习惯于命令行的方式去 *** 纵数据库 本文介绍如何通过命令行实现这种配置
二 实现步骤
.确保Oracle的工作模式允许启动任务队列管理器
Oracle定时执行 Job Queue 的后台程序是SNP进程 而要启动SNP进程 首先要确保整个系统的模式是可以启动SNP进程的 这需要以DBA的身份去执行如下命令
svrmgrl> alter system enable restricted session; 或sql> alter system disenable restricted session;
利用如上命令更改系统的会话方式为disenable restricted 为SNP的启动创造条件
.确保Oracle的系统已经配置了任务队列管理器的启动参数
SNP的启动参数位于Oracle的初始化文件中 该文件放在$ORACLE_HOME/dbs路径下 如果Oracle的SID是myora 的话 则初始化文件就是initmyora ora 在文件中对SNP启动参数的描述部分如下
job_queue_process=n job_queue_interval=N
第一行定义SNP进程的启动个数为n 系统缺省值为 正常定义范围为 ~ 根据任务的多少 可以配置不同的数值
第二行定义系统每隔N秒唤醒该进程一次 系统缺省值为 秒 正常范围为 ~ 秒 事实上 该进程执行完当前任务后 就进入睡眠状态 睡眠一段时间后 由系统的总控负责将其唤醒
如果该文件中没有上面两行 请按照如上配置添加 配置完成后 需要重新启动数据库 使其生效 注意 如果任务要求执行的间隔很短的话 N的配置也要相应地小一点
.将任务加入到数据库的任务队列中
调用Oracle的dbms_job包中的存储过程 将任务加入到任务队列中
dbms_job submit( job out binary_integer what in archar next_date in date interval in varchar no_parse in boolean)
其中
●job 输出变量 是此任务在任务队列中的编号
●what 执行的任务的名称及其输入参数
●next_date 任务执行的时间
●interval 任务执行的时间间隔 下面详细讨论一下dbms_job submit中的参数interval 严格地讲 interval是指上一次执行结束到下一次开始执行的时间间隔 当interval设置为null时 该job执行结束后 就被从队列中删除 假如我们需要该job周期性地执行 则要用 sysdate+m 表示
将任务加入到任务队列之前 要确定执行任务的数据库用户 若用户是scott 则需要确保该用户拥有执行包dbms_job的权限 若没有 需要以DBA的身份将权利授予scott用户
svrmgrl> grant execute on dbms_job to scott;
.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段
例如 我们已经建立了一个存储过程 其名称为my_job 在sql/plus中以scott用户身份登录 执行如下命令
sql> variable n number; sql> begin dbms_job submit(:n my_job; sysdate sysdate+ / ); mit; end; /
系统提示执行成功
Sql> print :n;
系统打印此任务的编号 例如结果为
如上 我们创建了一个每隔 分钟执行一次的任务号为 的任务 可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况
sql> select job next_date next_sec failures broken from user_jobs;
执行结果如下
job next_date next_sec failures broken / / : : N
这表示任务号为 的任务 下一次将在 / / : : 执行 此任务的执行失败记录为 次 注意 当执行job出现错误时 Oracle将其记录在日志里 失败次数每次自动加 当执行失败次数达到 时 Oracle就将该job标志为broken 此后 Oracle不再继续执行它 直到用户调用过程dbms_job broken 重新设置为not broken 或强制调用dbms_job run来重新执行它
lishixinzhi/Article/program/Oracle/201311/17096
在计算机中心机房的计算机运行管理中,经常遇到日常每天需要在指定时间重复进行某些 *** 作,如何将这些 *** 作自动化,以减少计算机运行管理的工作量,是计算机中心机房管理人员经常遇到的问题,本文将主要针对windows 98 *** 作系统列举一些应用实例,说明如何实现计算机管理的自动化,另外对UNIX *** 作系统下如何实现计算机管理的自动化也进行了介绍,以起到抛砖引玉的作用。
一、文件的自动传输
假如在计算机A中,每天会产生一些很重要的数据文件,为了预防计算机A由于系统崩溃造成这些重要数据文件的丢失,每天需要将这些重要数据文件传输到另外一台计算机B中进行保存,做为备份。如果用人工方法进行数据传输,不仅繁琐而且工作量大,并且有时难免会忘记,采用文件自动传输方法,可以很好解决这个问题,具体方法如下:
1、在计算机A的windows *** 作系统下,建立批处理程序文件ftpobat,该文件内容如下:
ftp -n <<fttxt
fttxt文件的内容如下:
open 16738120
user backup cjy
ascii
cd cb2000
put initlhrwtxt
bye
!
这里,16738120是计算机B的IP地址,backup是计算机B的FTP用户名,cjy是计算机B的FTP密码,ascii是文件传输方式,如果是传输二进制文件,如exe(可执行程序文件)、zip(压缩文件)等,则ascii要换成binary,initlhrwtxt是要传输的文件,cd cb2000是转到计算机B中FTP用户backup下的目录。
通过在计划任务程序中,将该批处理程序增加到计划任务中,就可以实现文件的定时自动传输。
小知识:在unix *** 作系统下,用ftp传输文件的方法如下:
编写shell 文件ftsh,内容如下:
ftp -n <<!
open 16738120
user backup cjy
ascii
cd cb2000
get initlhrwtxt
bye
!
将该文件权限设置为可执行,然后执行ftsh文件即可。
二、利用屏幕保护程序来实现实时自动提示功能
在计算机中心机房的日常计算机运行管理中,常常会遇到在某些特定的日期,需要或不需要进行某些 *** 作,由于运行管理和 *** 作人员可能不是一个人,而是几个人轮流值班进行管理和 *** 作,这样有可能会出现在这些特定日期运行管理和 *** 作人员会忘记这些特定的事项,从而影响到业务的正常开展,采用计算机自动提示的方法,可以很好地解决这个问题,具体方法如下:
1、在windows 98 的“开始”-----à“程序”------à“附件”-----à“系统工具”--------à“计划任务”中添加下列任务:
任务命令:c:\cjy\bat1bat
bat1bat批处理程序内容如下:
@echo off
copy c:\windows\control1ini c:\windows\controlini > null
copy c:\windows\system1ini c:\windows\systemini > null
c:\windows\notepadexe d:\cjy\notetxt
start c:\windows\system\滚动字幕scr
其中notetxt文件中就是要进行自动提示的内容。
“滚动字幕scr”中的文字内容也同此,文字内容存放在c:\windows\control1ini文件中。通过改变systemini文件,可以改变屏幕保护所用的scr文件(条件是计算机的屏幕保护未设置为“无”)。
2、设置平时计算机处于空闲(未 *** 作)状态后15分钟进入“黑屏”保护状态,并且设置计算机屏幕及硬盘为“从不”关闭。
3、设定好计划任务中的计划任务的时间及日期,当时间到了预定的时间,屏幕就会立即显示给定的文字提示。
4、再增加一个计划任务,执行下列命令:ctrl1bat,内容为:
@echo off
copy c:\windows\systemsini c:\windows\systemini > null
start c:\windows\system\黑屏scr
这个计划任务的作用是将屏幕保护程序由“滚动字幕”变为“黑屏”,从而达到当时间过了自动提示的时间后,取消提示内容的显示。
这里,system1ini中有关屏幕保护程序的设置为:
SCRNSAVEEXE=C:\WINDOWS\SYSTEM\滚动字幕SCR
systemsini中有关屏幕保护程序的设置为:
SCRNSAVEEXE=C:\WINDOWS\SYSTEM\黑屏SCR
这里,control1ini中有关自动提示的文字内容和显示的字体、颜色、大小,显示速度的设置为:
[屏幕保护程序。字幕]
Text=提示:今天是1日,要把O-yyyymmdd-1406-0000zip文件从会计报表服务器邮箱中转发给分行会计结算处,晚班人员晚上7:00要做电费统计。安全员要通过NOTES发送安全报表
Font=宋体
Size=72
BackgroundColor=0 0 0
TextColor=255 0 0
Speed=60
Attributes=00011
CharSet=134
注意:如果在平时把计算机屏幕保护程序设置为“无”,则即使把systemnini用system1ini来代替,也无法自动把屏幕保护程序从“无”变为“滚动字幕”。
三、计算机自动校时
在计算机中心机房中,常常会有很多计算机工作站和服务器,随着时间的推移,这么多计算机的系统时间与北京标准时间相比往往会出现差异,有的计算机系统时间会变快,有的计算机系统时间会变慢,如果靠人工定期进行校准,不仅工作量大,而且不可能及时对每一台计算机的系统时间进行及时的校准,如果采用计算机自动校时,则可以解决这个问题,具体方法如下:
1、选一台计算机(为叙述方便,设为计算机A,该计算机走时要相对准确,在需要校时时必须是处于开机状态),定期调准时间,作为时间标准;
2、在通过局域网与计算机A相连的其他计算机B上,建一个批处理程序time_dsbat(该文件要放在windows *** 作系统的安装目录下),内容为:
net time \\servername /set /yes
其中,servername为计算机A的计算机名;
3、将time_dsbat文件保存到windows目录中,并对该程序属性设置为“最小化”和“退出时关闭”,这样在相同目录下,就会生成time_dspif文件,将该文件加入到启动组中。这样可以保证计算机B在开机时自动与计算机A校时)。
4、通过在计划任务程序中,将该批处理程序增加到计划任务中,就可以实现计算机定时自动校时。
用命令 net time \\servername /set /yes 不仅能够对时间进行同步,而且也包括对日期(年、月、日)进行同步。
四、文件的自动压缩
假如在计算机A中,每天会产生一些字节数很大的数据文件,占用大量的计算机硬盘空间,为了节约计算机的硬盘空间,需要每天对这些数据文件进行压缩,如果采用人工方法进行处理,不仅繁琐而且工作量大,有时由于忘记进行压缩,造成计算机硬盘空间不够,使得计算机死机甚至崩溃,采用文件的自动压缩,可以很好解决这个问题,具体方法如下:
在计算机A的windows 98 *** 作系统下,建立批处理程序文件job1bat,该文件内容如下:
d:\winrar\winrarexe M e:\abpzip c:\ptas\backup\backup\dmp
这里,abpzip是压缩后产生的文件,dmp是要进行压缩的文件,M表示将原文件移到e:\abpzip进行压缩(即压缩后自动删除原文件)。
通过在计划任务程序中,将该批处理程序增加到计划任务中,就可以实现文件的定时自动压缩。
五、业务终端的自动激活和自动终止
在银行的大量业务网点中,有很多业务终端,这些终端由于所办理的业务不同,其管理要求也不同,如果通过人工方法对这些终端进行管理,不仅繁琐而且工作量大,而且由于要管理的终端数量多,有时难免会忘记对某些终端及时进行终止,从而存在安全隐患,如果对这些业务终端采用自动激活和自动终止的办法进行管理,则可以很好地解决这些问题。由于银行网点所用的终端都是在UNIX *** 作系统下工作,在UNIX *** 作系统下, *** 作系统同样也提供了定时自动运行指定程序的功能,下面就如何利用UNIX *** 作系统提供的这一功能,实现在UNIX *** 作系统下定时自动激活和自动终止指定终端的方法做一介绍。
首先,要用超级用户登录系统,然后在/usr/spool/cron/crontabs目录下,找到文件名为root的文件(在UNIX *** 作系统下,通常在该目录下都会有该文件,如果没有该文件,则可以创建一个),然后用vi编辑器,在该文件中,按照下面的格式,添加所要计划运行的任务:
20 17 3,5 /usr/cite/uptty_tsh 4 tty67h
#30 18 /usr/cite/shell/killttysh tty67h
0 16 1-5 /usr/cite/shell/killttysh tty65h
上面的每一行代表一个任务,每行有六个字段组成,每个字段间用空格分开,前5个字段由整数表示,为时间,最后一个字段为要运行的程序,顺序为:
分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-6) 要运行的程序
每个字段可用“-”号连接两个数表示一个范围,或用“,”分开几个数,表示任一数确定的时间;或用“”表示该段省缺,即该字段所有有效值都合法。
每行最前面的#号表示该行是注释行。星期字段中0代表星期天,6代表星期六。
添加完所要增加的计划任务后,保存并退出vi编辑器。然后执行下列命令:
crontab root
这个命令把root文件中的内容复制到crontab文件中,一次只能有一个crontab文件。注意,root文件按要求输入并保存好后,一定要执行上面的命令,否则所添加的计划任务不会按要求执行。在某些系统中,并不是所有用户都能使用crontab。目录/etc/crond 或 /usr/lib/cron中的cronallow文件列出了可以使用crontab的用户登录名,如果没有这个文件,则文件/usr/lib/cron/crondeny中列出了不可以使用crontab的用户名。如果该文件存在,但文件是空的,则每个人都可以使用crontab。如果两个文件都不存在,则只有系统超级用户可以使用crontab。
在使用上面方法进行定时自动运行指定程序的时候,要注意在被执行的程序中,要用cd命令将工作目录切换到指定目录下,否则程序有可能运行不正常。
六、过期文件的自动删除
假如每天要在18:30自动删除/usr/switch/BACKUP/DB/FULL目录下的当前计算机系统日期前2天产生的所有文件(包括该目录下所有子目录里前2天产生的所有文件),则要在/usr/spool/cron/crontabs/root文件中添加下列一行:
30 18 /usr/spool/cron/crontabs/cjsh
添加完上面一行后,保存退出vi编辑器,然后执行下列命令:
crontab root
这样每天18:30系统就会自动删除/usr/switch/BACKUP/DB/FULL目录下的当前计算机系统日期前2天产生的所有文件(包括该目录下所有子目录里前2天产生的所有文件)。
可执行文件cjsh存放在/usr/spool/cron/crontabs目录下,注意该文件必须被赋予执行权。该文件的内容为:
cd /usr/switch/BACKUP/DB/FULL
find -type d -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;
find -type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;
cp /usr/spool/cron/crontabs/db_seriodat
cp /usr/spool/cron/crontabs/ftptmp
cp /usr/spool/cron/crontabs/backuphead
chmod 777 ftptmp
chmod 777 backuphead
chown switch
chgrp informix
注意:在该被执行的程序cjsh中,用cd /usr/switch/BACKUP/DB/FULL
命令将工作目录切换到了指定目录下,保证程序中第二行语句和第三行语句find -type d -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;和find –type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;能正确执行。
在find -type f -atime +2 -exec /bin/rm -r '{}' 2>/dev/null \;语句中,选项-atime +2是表示找出最近2天前访问过的文件(日期从运行可执行程序cjsh时的那个时间算起,从该时间起24小时以内算当天),该选项还可以有下列值:
-ctime n: 找出n天前、后或n天改变的文件,包括权限改变的文件;
-mtime n: 找出n天前、后和当天修改或写入的文件。
选项 –exec 命令 ‘{}’ \; 对每个匹配的文件运行命令。指定的命令必须跟换义分号(\;)。在命令运行时, ‘{}’变元替换当前文件名。该选项也可以用下列值:
-ok 命令 ‘{}’ \;同 –exec,但执行命令前先要用y响应。
选项 -type f 是查找普通文件;选项 –type d 是查找目录。
命令 /bin/rm –r在这里是删除指定目录/usr/switch/BACKUP/DB/FULL下的文件或目录(由选项 –type f 或-type d来指定),如果是删除普通文件(由选项 –type f指定),则包括该目录下所有子目录里满足指定时间的文件。
以上列举了几个应用实例,说明了在计算机中心机房的计算机运行管理中,如何实现计算机运行管理的自动化。另外也可以利用计划任务程序,实现诸如定时自动整理、组织硬盘文件等,在此不一一列举。
以上就是关于如何使用Crontab在Unix/Linux系统下实现自动备份全部的内容,包括:如何使用Crontab在Unix/Linux系统下实现自动备份、Centos7 利用crontab定时执行任务及配置方法、Oracle中通过命令行实现定时 *** 作详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)