アプリケーションパッケージ開発者ガイド

インストール時の crontab ファイルの変更

このケーススタディーでは、パッケージのインストール中に crontab ファイルを変更します。

手法

このケーススタディーでは、次の手法の実例を示します。

アプローチ

インストール中に複数のファイルを編集する最も効率的な方法は、クラスを定義し、クラスアクションスクリプトを作成することです。build クラスによるアプローチを使用した場合は、編集する crontab ファイルごとに 1 つの build クラススクリプトを作成する必要があります。cron クラスを定義する方法は、より汎用性のあるアプローチとなります。このアプローチで crontab ファイルを編集するには、次の作業を行う必要があります。

ケーススタディーで使用するファイル

次に示す i.cron および r.cron スクリプトは、スーパーユーザーによって実行されます。ほかのユーザーの crontab ファイルをスーパーユーザーとして編集すると、予期しない結果が生じる可能性があります。必要な場合は、各スクリプトで次に示すエントリを変更してください。

crontab $user < /tmp/$$crontab ||

から

su $user -c "crontab /tmp/$$crontab" ||

pkginfo コマンド

PKG=case7
NAME=Case Study #7
CATEGORY=application
BASEDIR=/opt
ARCH=SPARC
VERSION=Version 1.0
CLASSES=cron

prototype ファイル

i pkginfo
i i.cron
i r.cron
e cron /var/spool/cron/crontabs/root ? ? ?
e cron /var/spool/cron/crontabs/sys ? ? ?

i.cron インストールクラスアクションスクリプト

# PKGINST parameter provided by installation service
while read src dest
do
user=`basename $dest` ||
exit 2
(crontab -l $user |
sed -e "/#$PKGINST$/d" > /tmp/$$crontab) ||
exit 2
sed -e "s/$/#$PKGINST/" $src >> /tmp/$$crontab ||
exit 2
crontab $user < /tmp/$$crontab ||
exit 2
rm -f /tmp/$$crontab
done
exit 0

r.cron 削除クラスアクションスクリプト

# PKGINST parameter provided by installation service
while read path
do
user=`basename $path` ||
exit 2
(crontab -l $user |
sed -e "/#$PKGINST$/d" > /tmp/$$crontab) ||
exit 2
crontab $user < /tmp/$$crontab ||
exit 2
rm -f /tmp/$$crontab
done
exit 

crontab ファイル 1

41,1,21 * * * * /usr/lib/uucp/uudemon.hour > /dev/null
45 23 * * * ulimit 5000; /usr/bin/su uucp -c
"/usr/lib/uucp/uudemon.cleanup" >
/dev/null 2>&1
11,31,51 * * * * /usr/lib/uucp/uudemon.poll > /dev/null

crontab ファイル 2

0 * * * 0-6 /usr/lib/sa/sa1
20,40 8-17 * * 1-5 /usr/lib/sa/sa1
5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A

注 –

複数のファイルを編集することにより、ファイルの合計サイズが 10K を超えて増加する場合は、pkgadd コマンドがこの増加に対応できるように、space ファイルを作成してください。space ファイルについては、「ターゲットシステムでの追加領域の予約」を参照してください。