シェルの '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 env を設定して、sqlplus 実行可能ファイルへのパスを含める必要があります。
次に、cron 機能にアクセスできるユーザー ID が必要です。「vi」エディタの使い方を知っていますか? を呼び出すとcrontab
、現在のユーザーのスケジュールされたジョブが表示され、「vi」コマンドでファイルを操作する必要があります。(使用するエディターをオーバーライドすることは可能かもしれませんが、お勧めしません)
cron の man ページを読む必要があり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
その後、すべての出力がユーザーのローカル メールボックスに送信されます。
これが役立つことを願っています。