天天看点

Linux为用户新增定时任务(crontab命令)Linux crond服务介绍编写测试shell脚本crontab命令创建定时任务

Linux crond服务介绍

crond服务是Linux系统默认会安装的服务工具,与windows下的计划任务类似,用来周期性的执行某种任务或等待处理某些事件的一个守护进程,并且启动主机会自动默认启动crond进程,crond进程会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crond服务可以实现系统周期性所要执行的工作,比如:数据库周期性备份、重要文件异机备份、数据库过期归档日志清理、日志清理等等。

crond服务常用的启停、重启命令

#启动定时任务服务
/sbin/service crond start 
#关闭定时任务服务
/sbin/service crond stop 
#重启定时任务服务
/sbin/service crond restart 
#重新载入配置
/sbin/service crond reload 
#查看定时任务服务状态
/sbin/service crond status 
           

编写测试shell脚本

创建一个空脚本文件授权读写以及可执行权限

#创建一个空脚本文件
[[email protected] orabackup]# touch backtest.sh
#授权读写以及可执行权限
[[email protected] orabackup]# chmod 755 backtest.sh
[[email protected] orabackup]# ll
-rwxr-xr-x 1 oracle oinstall    0 11-15 10:28 backtest.sh
           

编辑测试脚本

[[email protected] orabackup]# vi backtest.sh 
#!/bin/sh
echo .........................start.........................

echo 孑木文学的博客:https://blog.csdn.net/weixin_39699061

echo .........................stop..........................
~
~
~
"backtest.sh" 6L, 193C written
           

测试脚本执行

[[email protected] orabackup]# ./backtest.sh 
.........................start.........................
孑木文学的博客:https://blog.csdn.net/weixin_39699061
.........................stop..........................
[[email protected] orabackup]#
           

crontab命令创建定时任务

crontab命令

crontab [-u username]  #省略用户表表示操作当前用户的crontab
    -e      #(编辑工作表)
    -l      #(列出工作表里的命令)
    -r      #(删除工作作)
           

切换到Oracle用户创建定时任务

#切换到Oracle用户创建定时任务(每天凌晨1点执行定时任务)
[[email protected] ~]# su - oracle
[[email protected] ~]$ crontab -e
00 1 * * *  /backup/orabackup/backtest.sh >> /backup/orabackup/bak.out 2>&1
~
~
~
~
~
           

关于cron表达式可以参考 http://cron.qqe2.com,如下图所示:

Linux为用户新增定时任务(crontab命令)Linux crond服务介绍编写测试shell脚本crontab命令创建定时任务

以下举例比较常见的表达式

0 0 1 * * ? 		#每天凌晨1点执行
0 0 1,13 * * ? 		#每天凌晨1点以及下午1点执行
0 0 0 1 * ? *		#每月1日的凌晨执行
0 0 1 1 * ? *		#每月1日的凌晨1点执行
0 0 4 L * ? 		#每月最后一天凌晨4点执行
0 15 10 15 * ?     	#每月15日上午10:15触发 
           

查看已创建的定时任务

#查看已创建的定时任务
[[email protected] ~]$ crontab -l
00 1 * * *  /backup/orabackup/backtest.sh >> /backup/orabackup/bak.out 2>&1
           

定时任务服务重启

#执行定时任务服务重启
[[email protected] ~]$ /sbin/service crond restart
rm: 无法删除 “/var/run/crond.pid”: 权限不够                [失败]

启动 crond:cardmgr 已经在运行                             [失败]

#oracle用户没有权限执行该命令,退出Oracle用户到root用户执行定时任务服务重启
[[email protected] ~]$ exit
logout
[[email protected] ~]# /sbin/service crond restart
停止 crond:                                               [确定]
启动 crond:                                               [确定]
[[email protected] ~]#
           

查看定时任务服务状态

[[email protected] ~]# /sbin/service crond status
crond (pid  24844) 正在运行...
[[email protected] ~]# 
           

定时任务实现数据库备份

参看博客:Linux定时任务实现Oracle数据库每天进行全库备份

继续阅读