Guia do Desenvolvedor de Empacotamento de Aplicativos

Modificando arquivos crontab durante a instalação

Este estudo de caso modifica arquivos crontab durante a instalação do pacote.

Técnicas

Este estudo de caso demonstra as seguintes técnicas:

Abordagem

A forma mais eficiente de editar mais de um arquivo durante a instalação é definir uma classe e fornecer um script de ação de classe. Se você usou a abordagem da classe build, será necessário distribuir um script de classe build para cada arquivo crontab editado. A definição de uma classe cron proporciona uma abordagem mais geral. Para editar arquivos crontab com esta abordagem, você deve:

Arquivos de estudo de caso

Os scripts i.cron e r.cron descritos abaixo são executados pelo superusuário. A edição de outro arquivo crontab do usuário como superusuário pode ter conseqüências imprevisíveis. Se necessário, altere a seguinte entrada em cada script de:

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

para

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

O comando pkginfo

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

O arquivo prototype

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

O script de ação de classe de instalação 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

O script de ação de classe de remoção 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 

Arquivo 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

Arquivo 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

Observação –

Se a edição de um grupo de arquivos for aumentar o tamanho total do arquivo em mais de 10K, forneça um arquivo space para que o comando pkgadd possa permitir esse aumento. Para mais informações sobre o arquivo space, consulte Reservando espaço adicional em um sistema de destino.