NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
FILTRO DE TUTORIAIS:
7.4 – Listando a árvore de processos
Em alguns casos pode ser útil saber qual a interdepêndencia entre os processos que estão rodando no sistema. O linux possui um comando para este fim chamado pstree
A. D igite:
Figura 63 – Árvore dos processos
Observe que o init é o pai de todos os processos que estão no lado direito e que o comando pstree que acabamos de rodar tem como pai o bash ou seja o shell. O shell será o pai de qq comando que venhamos a executar.
7.5 – Ciclo de vida de um processo
Quando um processo existente faz uma cópia exata dele mesmo criando assim um novo processo, damos a esse procedimento o nome de fork. Lembrando que o processo filho tem o mesmo ambiente que o seu pai, apenas o ID é diferente.
Após esse processo o espaçamento de endereços do processo filho é alterado com os novos dados, a esse procedimento damos o nome de exec.
Os mecanismos de fork e exec subtituem o comando antigo pelo novo, enquanto que o ambiente na qual o programa roda permanece o mesmo, incluindo configurações, variáveis de ambiente e prioridade.
Esse mecanismo é usado para criação de todos os processos no Linux.
A figura abaixo ilustra esse processo.
Figura 64 – Processo de fork e exec
Há casos em que o init se torna o pai de um processo mesmo não tendo gerado o mesmo. Alguns processos usam o artificio de fazer com que seus processos flhos continuem rodando mesmo quando eles não estão mais rodando, passando o controle de seus processos filhos para o init. O processo xterm é um bom exemplo disso.
Em casos não muito comuns, um processo filho leva mais tempo para terminar sua execução do que o processo pai pode esperar, nesse caso tornando-se um processo orfão.
7.6 – Finalizando processos
Quando um processo finaliza normalmente, ele envia um status de saída para o processo pai sinalizando o seu término. Esse status de saída é um número.
Processos terminam porque eles recebem um sinal. Diversos sinais podem ser enviados para um processo, para isso usamos o comando kill. Muitos sinais são para uso interno do sistema.
Sintaxe : kill – [sinal] [pid do processo]
Para saber quais sinais podem ser usados com o comando kill, digite : kill –l. Abaixo uma relação dos sinais que podemos usar a nível de usuário.
A seguir ilustraremos o uso do comando kill.
Vamos rodar um grep e interromper sua execução.
A. Digite:
Fig 65 – Pid do processo grep
De posse do pid:
B. Digite:
Fig 66 – Processo pid interrompido
Lembrando que como estamos logados como curso só podemos interromper nossos próprios processos. A única exceção a essa regra é o root, que como superusuário pode interromper qualquer processo. Veja o que acontece quando tentamos interromper um processo do root.
C. Digite:
Vamos tentar interromper o processo 1132.
D. Digite:
Observe que a mensagem de “operação não permitida” aparece na tela.
» O kill é muito útil em casos de lentidão extrema do sistema. Nesses casos procuramos por processos que estejam consumindo muitos recursos e necessitamos interrompê-los para que o sistema volte ao seu estado normal.
7.7 – Programando execução de processos
É muito comum nos depararmos com situações em que é necessário executar uma tarefa específica em um determinado horário, ou ainda em intervalos regulares. Um bom exemplo de uma tarefa com execução programada é um backup do sistema. Para esses dois propósitos usamos os comandos at e cron respectivamente. Veremos cada um deles.
7.7.1 – Usando o at
Sintaxe: at [opção] [hora]
Usamos o at para executar uma tarefa em dia e /ou hora especifica.
Vamos programar a execução de um find para daqui a 10 min. Supondo que a hora do sistema seja 10:06AM.
A. Digite:
B. Digite:
C. Digite: find / -name n* -depth -print
D. Digite : CRTL+D. Isso finaliza o at.
Observe que o job foi programado para rodar as 10:16AM.
Supondo que nesse momento são 10:16AM, veremos se o find que programamos está mesmo rodando.
E. Digite:
Figura 67 – Verificando a execução do find
» Uma outra forma de saber se o find está rodando, seria mostrar na tela uma mensagem, ou direcionar a saída do find para um arquivo ou ainda mandar um e-mail usando a opção “m” do at. No último caso, a saída do comando programado vai para o arquivo /var/spool/mail/curso
Supondo que quisessemos executar a mesma tarefa daqui a 3 dias:
F. Digite:
Em uma data específica:
G. Digite:
7.7.1.2 – Listando jobs da fila
Podemos monitorar os jobs que estão na fila esperando para serem executados com o comando atq.
Voltando ao caso anterior veríamos:
Figura 68 – Listando jobs na fila
» Observe que o número 1 a esquerda indica o id do job.
7.7.1.3 – Removendo jobs da fila
Usamos o comando atrm para esse propósito
Sintaxe : atrm [número do job]
Para remover o job do caso anterior faríamos:
H. Digite:
7.7.2 – Usando o cron e crontab
O at possui a limitação de não permitir executar tarefas em intervalos regulares.
O cron tem essa facilidade. O sistema cron é gerenciado pelo seu daemon. Ele coleta informações sobre quais programas e quando eles deveriam ser executados, das entradas crontabs do sistema e dos usuários. Somente o root tem acesso aos crontabs do sistema.
O comando crontab serve para criar e monitorar os jobs usando as opções “e” e “l” respectivamente. O arquivo crontab possui a seguinte notação, representado por 5 campos:
(0-59) (0-23) (1-31) (1-12) (0-7) [script]
» Se houver um (*) em um dos campos, isso significa que toda a faixa é aceita.
Vamos programar uma tarefa para rodar de 20 em 20 minutos, a tarefa consiste em procurar no disco arquivos que começam pela letra t.
Primeiramente vamos criar o script que fará parte do arquivo crontab.
B. Digite:
C. Digite:
Date
Find / -name t* -depth –print
D. Salve o arquivo e saia do vi
E. Digite:
Se não fizermos isso o arquivo não poderá ser executado
Agora vamos criar o crontab file
F. Digite:
» Observe que um novo arquivo é criado usando o vi
G. Digite:
20 * * * * /home/curso/script
» Dessa forma programamos o script para rodar de 20 em 20 minutos.
H. Digite: wq
» A opção “e” serve também para editar o arquivo crontab
Para sabermos se o script está executando conforme planejado, basta listarmos as últimas inclusões no arquivo /var/spool/mail/curso com tail.
Sintaxe: tail [nome do arquivo]
Se quisessemos programar a mesma tarefa para rodar todas as terças feiras às 18 horas, o arquivo crontab seria:
* 18 * * 2 /home/curso/script
Para programar a mesma tarefa para rodar de segunda a sexta faríamos:
* 18 * * 1-5 /home/curso/script
Para programar para segundas, quartas e sextas faríamos:
* 18 * * 1,3,5 /home/curso/script
Para listar o arquivo crontab:
I. Dgite:
Para deletar o arquivo crontab:
J. Digite:
» Lembrando que um arquivo crontab pode ter várias tarefas.
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2024 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI