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

Você está em: PrincipalTutoriaisPaulocfarias : Linuxbasico014
Quer receber novidades e e-books gratuitos?

FILTRO DE TUTORIAIS:


Linux Básico – Parte XIV

 

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.

 

Quer receber novidades e e-books gratuitos?

 
 

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