任务计划
来自 PostgreSQL Wiki
跳到导航跳到搜索总体情况
我们将了解如何配置操作系统,以一种非常方便的方式执行定期任务。我们有两个基本机制来计划任务
-.crontab: nos permite programar tareas que queremos repetir de forma periódica. -.at: nos permite realizar una tarea a una hora determinada pero sólo una vez.
Crontab
crontab 命令 (cron) 允许我们定时计划任务和/或执行命令,以某些小时、星期中的某些天、月份、年份等等。借助于此命令,每个管理员数据库都可以定义他们自己的计划任务。
基本语法
* crontab -l Mostrar las tareas programadas por el usuario. * crontab -e Editar el fichero crontab. Con esto editaremos el fichero de configuración de crontab de cada usuario para poder modificar las tareas programadas. * crontab -r Eliminar el fichero crontab corriente. * crontab -u <usuario> Aplicar una de las opciones anteriores para un usuario determinado. Sólo root puede hacerlo.
守护程序 cron 在
* el archivo /etc/crontab (tables for cron). * los archivos ubicados en el directorio /etc/cron.d * los archivos /var/spool/cron/crontabs/<usuario>
编辑 crontab 文件
gilbertoc@gilbertoc:~$ crontab -e
crontab 文件内容
类似于
# m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root cd / && run-parts --report /etc/cron.daily 47 6 * * 7 root cd / && run-parts --report /etc/cron.weekly 52 6 1 * * root cd / && run-parts --report /etc/cron.monthly # Hacer una copia de seguridad del directorio documentos cada día a las 00:00 0 0 * * * tar -czf docs-`date -I`.tar.gz ~/documentos/ (el símbolo ~ es equivalente a $HOME, y a /home/usuario/) # Hacer una copia de seguridad de la Base de datos cada día a las 07:30 y 21:30 30 7 * * 1-5 /var/respaldos/scripts/mantenimiento_postgresql.sh 30 21 * * 1-5 /var/respaldos/scripts/mantenimiento_postgresql.sh * m: minuto [0-59]. * h: hora [0-23]. * dom: día del mes [1-31]. * mon: mes [1-12]. * dow: día de la semana [0-7] (0 ó 7 es Domingo). * user: usuario. * command: comando.
在表达分钟、小时、天、月和年时,我们可以使用列表:3,23,43;时间范围:1-5;步长:2-6/2 (= 2,4,6);和 *(任何值)。
/etc/crontab 包含指导 cron 执行目录中脚本的指令
* /etc/cron.hourly * /etc/cron.daily * /etc/cron.weekly * /etc/cron.monthly
为我们要计划的每个任务添加一行。我们可以编写我们的脚本并让 crontab 执行它们,以便执行更复杂的任务计划。
在需要重启服务的情况下,可以执行
gilbertoc@gilbertoc:~$ service crond restart O gilbertoc@gilbertoc:~$ /etc/init.d/crond restart
at
此命令允许我们仅执行一次任务计划,在特定时间执行。
* <hora><dia> Para especificar la fecha por completo.
El parámetro <hora> es obligatorio. Podemos ingresar valores de la forma 1800,18:00,0600pm, o bien uno de los 3 valores especiales: noon (mediodia), teatime (16:00) o midnight (00:00). El parámetro <dia> es opcional. Podemos especificarlo de las siguientes maneras: 12/23/2005 (notación americana), 23.12.2005 (notación europea). Podemos omitir el año, pero entonces sólo podemos usar la notación europea (por ejemplo: 23.12). También podemos especificar el mes abreviado como: Dec 23 o bien como 23 Dec.
规范
* now + <intervalo> Donde intervalo es: <n> (minutos|horas|días|semanas|mes).
选项
* -l Para mostrar la lista de tareas que tenemos programadas. * -d <num_tarea> Para eliminar la tarea que queramos. Cada tarea tiene asociado un número que podemos ver con la opción anterior.
示例 1
$ at 5:30pm
或者
$ at 17:30
一旦我们执行此操作,将会出现 at 提示符,让我们输入我们的命令或任务,我们希望在那个时间执行。
at> gmessage "Comienza la salva de datos!!"
一旦我们输入完命令,我们将按 Control + D 退出 at。
示例 2
计划在 3 小时后的任务
$ at now + 3 hours