计划任务服务程序
# 学习目标
配置计划任务
# 业务场景
在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
# 学习内容
计划任务分为一次性计划任务与长期性计划任务,大家可以按照如下方式理解。
一次性计划任务:今晚 11 点 30 分开启网站服务。
长期性计划任务:每周一的凌晨 3 点 25 分把/home/wwwroot 目录打包备份为 backup.tar.gz。
顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求。我们可以用 at 命令实现这种功能,只需要写成“at 时间”的形式就可以。如果想要查看已设置好但还未执行的一次性计划任务,可以使用“at -l”命令;要想将其删除,可以用“atrm 任务序号”。在 使用 at 命令来设置一次性计划任务时,默认采用的是交互式方法。例如,使用下述命令将系统设置为在今晚 23:30 分自动重启网站服务。
```
[root@kingdee ~]# at 23:30
at> systemctl restart httpd
at> 此处请同时按下 Ctrl + D 组合键来结束编写计划任务
job 1 at Sun Dec 10 23:30:00 2023
[root@kingdee ~]# at -l
1 Sun Dec 10 23:30:00 2023 a root
```
![image.webp](/download/0100a3cb75241e244cb7b8d1635379bfea8d.webp)
如果想挑战一下难度更大但简捷性更高的方式,可以把管道符放到两条命令之间,让 at 命令接收前面 echo 命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的。
![image.webp](/download/0100f20d9920525b4e4a8f578bc00de11e2c.webp)
如果我们不小心设置了两个一次性计划任务,可以使用下面的命令轻松删除其中一个:
![image.webp](/download/0100abe9434918134ff9b3bcb175613acfa5.webp)
如果我们希望 Linux 系统能够周期性地、有规律地执行某些具体的任务,那么 Linux 系统中默认启用的 crond 服务简直再适合不过了。创建、编辑计划任务的命令为“crontab -e”,查看当前计划任务的命令为“crontab -l”,删除某条计划任务的命令为“crontab -r”。另外,如果您是以管理员的身份登录的系统,还可以在 crontab 命令中加上-u 参数来编辑他人的计划任务。
这是使用 crond 服务设置任务的参数格式。
![image.webp](/download/01004aa2441108464889950558ba2b361f22.webp)
需要注意的是,如果有些字段没有设置,则需要使用星号(*)占位,如下图所示。
![image.webp](/download/01006bd8db51a1114616856e7ee3b8faa4c3.webp)
假设在每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把某个网站的数据目录进 行打包处理,使其作为一个备份文件。我们可以使用 crontab -e 命令来创建计划任务。为自己创建计划任务无需使用-u 参数,具体的实现效果的参数如 crontab -l 命令结果所示:
![image.webp](/download/01009d48658c08374f39aba3651f80c9a1fa.webp)
![image.webp](/download/0100959787d5a7d4459da57daacbb9e5e842.webp)
需要说明的是,除了用逗号(,)来分别表示多个时间段,例如“8,9,12”表示 8 月、9 月 和 12 月。还可以用减号(-)来表示一段连续的时间周期(例如字段“日”的取值为“12-15”, 则表示每月的 12~15 日)。以及用除号(/)表示执行任务的间隔时间(例如“/2”表示每隔 2 分钟执行一次任务)。
如果在 crond 服务中需要同时包含多条计划任务的命令语句,应每行仅写一条。例如我们再添加一条计划任务,它的功能是每周一至周五的凌晨 1 点钟自动清空/tmp目录内的所有文件。尤其需要注意的是,在 crond 服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用 whereis 命令进行查询,rm 命令路径为下面输出信息中加粗部分。
[root@kingdee ~]# whereis rm
rm: **/usr/bin/rm** /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz
[root@kingdee ~]# crontab -e
crontab: installing new crontab
[root@kingdee ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
![image.webp](/download/0100fd85c01bf33e46c68155ae573b43ac03.webp)
![image.webp](/download/01008757b75a71e24942af439fca86b8ae73.webp)
# 常见问题举例:linux环境,如何实现oracle每天自动expdp备份?
步骤1:根据实际情况,选择备份脚本存放路径,比如/u01/expdpscript目录,并 vi expdp.sh, 增加下面内容:
```
#!/bin/bash
PATH=$PATH:$HOME/bin
ORACLE_BASE=/oracle/app/db ---请根据实际情况更改路径
ORACLE_HOME=/oracle/app/product/12.2.0/db_1 --请根据实际情况更改路径
ORACLE_SID=orcl --请根据实际情况更改实例名
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID
export PATH
NLS_LANG=AMERICAN_AMERICA.UTF8
export NLS_LANG
export BACKUPTIME=expdp_`date +%Y%m%d%H%M`
echo "Starting backup..."
echo "Backup file path $DATA_DIR/$BAKUPTIME.dmp"
expdp testuser/testuser directory=EXP dumpfile=$BACKUPTIME%U logfile=$BACKUPTIME.log schemas=testuser exclude=table:\"like \'VT%\'\",statistics parallel=5
echo "Delete 15 days before data files..."
find /data/backup/ -mtime +15 -name "expdp*.dmp" -exec rm -rf {} ; --请根据实际情况更改备份文件存放路径
find /data/backup/ -mtime +15 -name "expdp*.log" -exec rm -rf {} ; --请根据实际情况更改日志文件存放路径
```
步骤2:为目录和文件增加权限
```
chown -R oracle:oinstall /u01/expdpscript
chmod +x expdp.sh
```
![image.webp](/download/0100cbdfa21462d94d9d95004d4a7b713747.webp)
步骤3:编辑计划任务
切换oracle用户,编辑计划任务crontab -e
![image.webp](/download/01005a9001c9b6b545c5adcbe6760886eb5d.webp)
设置每天的1点10分执行备份脚本,进行备份。
10 01 * * * /u01/expdpscript/expdp.sh > /u01/expdpscript/backup.log 2>&1
![image.webp](/download/010092cef5e15bbb40379808568dd006d1bf.webp)
查看计划任务:
![image.webp](/download/01006ee4ced330204dfaabfe9ec9e3d111ef.webp)
计划任务服务程序
# 学习目标配置计划任务# 业务场景在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。# 学习内容计划任务分为一次性...
点击下载文档
本文2024-09-22 20:21:16发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113086.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章