Использование оболочки «Здесь» - это обычное решение, т. Е.
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.Вы знаете, как использовать редактор '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 в файл в tmpDir.
Минимальная версия вышеупомянутого будет
59 23 12 31 * var=x; export var ; myCommand
и затем любой вывод отправляется в локальный почтовый ящик пользователя.
Надеюсь, это поможет.