使用 shell 'Here' 文档是通常的解决方案,即
cat MyCommand.sh
#!/bin/bash # (or ksh, sh, etc)
PATH=.../path/to/sqlplusdir:${PATH}
sqlplus username/pwd@instance <<EOS
SPOOL /home/sadmin/sqlmail/spool.out
set linesize 2000
set wrap off
@/home/sadmin/sqlmail/query.sql
SPOOL OFF
exit
EOS
mail -s "Subject" email@address.com < /home/sadmin/sqlmail/spool.out
您需要设置 PATH 环境以包含您的 sqlplus 可执行文件的路径。
然后,您需要一个可以访问 cron 工具的用户 ID。你知道如何使用“vi”编辑器吗?当您调用 时crontab
,您将查看当前用户计划的作业,并且您需要使用“vi”命令来操作该文件。(可能可以覆盖要使用的编辑器,但不推荐)
您需要阅读 cron 的手册页,即man cron
,您将被称为上面的完整脚本。一个 cron 条目看起来像
59 23 31 12 * { var=x; export var ; myCommand ; } > /tmp/myWorkDir/myCommand.trace 2>&1
min
hr
day
mon
(DayOfWeek)
日期/时间的值可以是逗号分隔的列表 (0,15,30,45),连字符分隔的范围 (4-6) 或 * 表示所有有效值。
这会将包括 stderr 在内的任何输出从 myCommand 的 1 次运行捕获到 tmpDir 中的文件中。
以上的最低版本是
59 23 12 31 * var=x; export var ; myCommand
然后将任何输出发送到用户的本地邮箱。
我希望这有帮助。