PROGRAMAÇÃO EM LINUX
Usuário Avançado
Ulisses Thadeu V Guedes
SERVIÇOS DE SISTEMA PROGRAMÁVEIS




Cron
O serviço at
Aplicações em BackGround
A estrutura hierárquica de diretórios
1/5
PROGRAMAÇÃO EM LINUX
Usuário Avançado
Ulisses Thadeu V Guedes
CRON
CRON é um serviço Linux de execução repetitiva de aplicações em “hora marcada” com
resolução de minutos. O arquivo de “controle” do serviço é o crontab, normalmente localizado
no diretório /etc, para as definições de aplicações do sistema ou em algum diretório sob
responsabilidade do usuário. Neste último caso, o serviço deve usar a opção -u
A documentação do cron está disponível e bem detalhada em man cron e man crontab.
AT
O atd é um serviço de execução de jobs em hora marcada. Um job somente é executado em
instantes ociosos do sistema.
APLICAÇÔES EM BACKGROUND
Não é incomum a execução de aplicações em background. Tem-se visto em listas de discussão
e em foruns de suporte de distribuições, a demanda sobre o seguinte problema:
“Gostaria de executar uma aplicação em background, através de script em shell bash.
Acontece que assim que comando o logout da sessao aquela aplicação também pára. Tem
como mantê-la em execução?”
Tal questionamento indica que o usuário ainda não entendeu o que é um ambiente shell em
Linux. O ambiente shell captura para si todo o sistema de arquivo, incluindo o padrão de
entrada, saída, erros e impressão (stdin, stdout, stderr e stdprn). Ao sair da sessão todo
ambiente é desativado. Para que as aplicações não permaneçam sem um processo PAI (o
Shell!), o kernel força o encerramento daquelas aplicações enviando o sinal SIGHUP para todo
o grupo pertencente ao ambiente shell..
O que falta é desacoplar a execução da aplicação do ambiente shell e atrelá-la ao kernel.
Como o kernel está presente e em execução indiferentemente de uma sessão de usuário, e
sendo ele o PAI (não importa se é ADOTIVO ou VERDADEIRO), não há mais motivos para o
“sacrifício” da aplicação, via sinal SIGHUP.
Como fazer o Kernel ADOTAR a aplicação em background?
Sempre que iniciar uma aplicaçao em background (aplicação &) observe o PID mostrado. Não
confundir o PID com o número do JOB do processo. Informe ao shell a intenção de desacoplar
aquele PID através do comando embutido do shell, denominado disown, na sintaxe:
disown -h PID
Exemplo:
[root@torrinha Inspector]# bash /root/Documents/Inspector/Inspector.sh 1 &
2/5
PROGRAMAÇÃO EM LINUX
Usuário Avançado
Ulisses Thadeu V Guedes
[1] 23682
[root@torrinha Inspector]# disown -h 23682
Pronto! O processo PID estará fora da tabela de jobs sob custódia do ambiente shell e não
receberá o sinais destinados ao grupo de aplicações do shell (inclusive). A partir de então,
aquele processo só será interrompido se receber um sinal SIGHUP (kill -SIGHUP PID),
especificamente destinado a ele.
3/5
PROGRAMAÇÃO EM LINUX
Usuário Avançado
Ulisses Thadeu V Guedes
A ESTRUTURA HIERÁRQUICA DE DIRETÓRIOS
Há um consenso entre distribuições, desenvolvedores de pacotes, e implementadores de
sistemas sobre o FHS (Filesystem Hierarchy Standard) em sistemas Unix e clones. A última
versão (2.3) foi adotada em 2004 e a versão anterior (2.2) em 2001. O FHS proposto satisfaz
os padrões BSD e SystemV.
Apesar do esforço de uma padronização, algumas distribuições apresentam tendências no FHS
conforme a sua origem:
modelo original do Linux - Debian, slackware, Camberra, etc
e
derivadas da RedHat Linux - Mandriva, Suse, etc
O Modelo FHS de consenso pode ser obtido em http://www.pathname.com/fhs/
sugestões de correção estão em http://bugs.freestandards.org/ (2)
(1)
e as
Em (1) o FHS é descrito em detalhes, com o propostas de localização das aplicações do
sistema, bibliotecas, aplicações adicionais e de usuário.
OS PACOTES DE DISTRIBUIÇÃO
Há, pelo menos, três tipos de estruturas de pacotes de distribuição:
- Aplicações em arquivos comprimidos em tar.gz
- Debian, com extensão “.deb”
- RPM, padrão de empacotamento desenvolvido pela RedHat (RedHat Package Management)
A URL http://tldp.org/HOWTO/RPM-HOWTO/build.html descreve os procedimentos necessários
para criar um pacote rpm. As distribuições que seguem este modelo de empacotamento
seguem o FHS porém concentram as bibliotecas em /usr/lib e /lib. Somente os pacotes
opcionais, aqueles fornecidos por fabricantes, é que são instalados em /opt ou,
eventualmente, em /usr/local.
Em http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/ tem-se os
procedimentos para o formato debian .deb. A distribuição Gentoo, derivada do Debian/Linux
distribui somente os pacotes com fontes, resultando num core otimizado para o hardware do
computador do usuário. Ambas seguem o FHS.
A distribuição Slackware usa o .tgz como formato de empacotamento de binários e fontes. É
uma distribuição bastante estável e não se preocupa em prover “facilidades” administrativas
nem adaptações ou correções exclusivas no Kernel-Linux, como acontece com outras
distribuições. Os arquivos seguem a estrutura FHS, explorando com mais ênfase o diretório
4/5
PROGRAMAÇÃO EM LINUX
Usuário Avançado
Ulisses Thadeu V Guedes
/usr/local e núcleo original.
Há alguma discussão para unificar os formatos de empacotamento. Minha modesta opinião é:
“o formato a ser escolhido deve ser o mais simples possível”.
5/5
Download

PROGRAMAÇÃO EM LINUX Usuário Avançado