Exercício Prático LPIC 07

Publicado por Wagner Souza em 25/02/2015

[ Hits: 3.640 ]

Blog: https://medium.com/@souzaw

 


Exercício Prático LPIC 07



LPIC 1:
  • Tópico 103 - Comandos GNU e Unix (Peso 26);
  • Tópico 105 - Shells, Scripts e administração de Dados (Peso 10);

Você tem a tarefa de criar um script que permita alterar a prioridade de execução de um programa. Na execução deste script, deve ser passado como parâmetros o nome do programa, bem como o seu novo valor de prioridade de execução no sistema.

Solução

Na administração de um sistema Linux, é muito importante estar atento no quesito de prioridade de execução do aplicativos, para não ocorrerem problemas de um determinado aplicativo ter mais prioridade em relação a outro de atividade mais crítica.

Ou, em situações em que um programa desnecessário esteja consumido recursos de hardware, podendo deixar o sistema lento ou inoperante.

Cada programa executado no Linux possui um PID, um identificador, através de um número, do processo em execução. Este pode ter algumas instâncias, threads, relacionadas. Como exemplo, posso citar um navegador que ao ser aberto recebe um PID, porém, caso seja aberto mais uma aba, gera uma nova instância deste e que também receberá um outro PID. Isso é o caso do Chrome. Outros aplicativos podem fazer a mesma coisa ou não.

Caso seja preciso identificar o(s) número(s) do PID de um processo, é utilizado o comando pidof. Para alterar a prioridade de um aplicativo, o ideal é usar o renice. Sendo assim, vamos combinar estes dois para a solução do exercício de hoje.

O interessante é que o script ficará mais dinâmico, pois, as informações serão passadas como parâmetro na hora da execução sem a necessidade de opções de perguntas a quem executa.

Esses parâmetros armazenam as informações em variáveis, que são: $1, $2, $3... $n.

Crie um arquivo vazio e insira o código abaixo:

#!/bin/bash

# Declaração das variaveis

PIDOF=$(which pidof)
RENICE=$(which renice)

# Recebe o comando pidof e o parâmetro passado pelo usuário

PID=$($PIDOF $1)
CONT=0

# A saída do comando pidof mostra os valores de PID do programa em uma mesma
# linha. Então uso o sed para substituir o espaço por uma quebra de linha e
# em seguida o comando wc -l para a contagem de todos os valores

echo "O aplicativo $1, possui um total de threads encontrados: " `$PIDOF $1 | sed 's/ /\n/g' | wc -l`

echo

# Aqui é criado um loop para alterar a prioridade de cada PID encontrado
# a variável $2 representa o novo valor de prioridade passado pelo usuário
# usei um contador para saber o total de todos os processos que tiveram o
# o valor de prioridade alterado. Isso é apenas de cunho didático para entender
# as várias possibilidades de fazer isso

for i in $PID;
do
   $RENICE +$2 -p $i
   CONT=$((CONT+1))
done

echo "Total de processos: " $CONT

Salve-o e dê-lhe permissão de execução:

# chmod +x script.sh

Para executar o script, você deverá informar o nome do programa ao qual quer mudar a prioridade e o valor:

./script chrome 5

Observações:
  • A prioridade de execução de um processo pode variar de -20 (maior prioridade) a 19 (menor prioridade). Por padrão, a prioridade dos processos é zero.
  • Quando o valor de ajuste da prioridade não é definido junto com o comando nice, o sistema assume o valor de ajuste igual a 10.
  • Se nenhum argumento é fornecido com o comando nice, o sistema exibe a prioridade padrão atualmente em uso (valor zero).

Bom gente é isso!
Aprofunde-se mais nestes assuntos, que é questão certa nas provas da LPIC.

Até o próximo exercício!

Outras dicas deste autor

Trabalhando com datas no LibreOffice

Navegação anônima

Exercício Prático LPIC 04

Erro de chave pública ao atualizar Chrome no Fedora 22

Exercício Prático LPIC 06

Leitura recomendada

Efeitos 3D do desktop no Fedora 8 Werewolf

Programa de Educação em Software Livre (PESL)

Conectividade Social e Squid

Reproduzir arquivos MKV e MP4 no openSUSE

Instalação do Beryl no Debian Etch

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts