Exemplos úteis de linha de comando Bash e truques - Parte 6

Exemplos úteis de linha de comando Bash e truques - Parte 6

Neste artigo, temos uma olhada na obtenção de algumas informações básicas de hardware, sistema e configuração do sistema operacional diretamente do prompt de comando no seu terminal. Ter essas informações e saber onde encontrá -las, geralmente ajuda ao configurar um sistema, pesquisar soluções ideais de hardware e software e geralmente no controle do sistema Linux que você possui ou gerencia.

Vamos nos concentrar principalmente nas informações diárias, do tipo necessário regularmente. Ficar mais aprofundado geralmente requer algumas pesquisas on-line para primeiro definir melhor o alinhamento e, muitas vezes, requer habilidades adicionais para interpretar os resultados ou a saída mostrada.

Por exemplo, não estaremos analisando a saída de vmstat, Embora possamos descobrir como descobrir o que é a CPU em seu sistema sem abrir o capô. Também examinaremos algumas variáveis ​​de limite de recursos básicas e preocupações circundantes. O público -alvo deste artigo é, portanto, iniciante para médio avançado.

Este artigo faz parte da série de dicas e truques da linha de comando BASH.

Neste tutorial, você aprenderá:

  • Dicas úteis da linha de comando Bash, truques e métodos
  • Como interagir com a linha de comando Bash de maneira avançada
  • Como aprimorar suas habilidades de bash em geral e se tornar um usuário de bash mais proficiente
Exemplos úteis de linha de comando Bash e truques - Parte 6

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição Linux
Programas Linha de comando Bash, sistema baseado em Linux
Outro Qualquer utilidade que não esteja incluída no shell bash por padrão pode ser instalada usando sudo apt-get install utility-name (ou yum install para sistemas baseados em redhat)
Convenções # - requer que o Linux -Commands seja executado com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

Exemplo 1: O que CPU está em seu sistema?

Freqüentemente, queremos descobrir rapidamente o que é a CPU no sistema, sem abrir a caixa. Abrir o computador físico também é um pouco difícil se você estiver gerenciando um servidor do outro lado do planeta. Descobrir os detalhes da CPU é fácil e direto:

$ cat /proc /cpuinfo | Grep 'Nome do modelo' | Cabeça -n1 Nome do modelo: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHz $ CAT /PROC /CPUINFO | Grep 'Nome do modelo' | WC -l 16 

No primeiro comando, consultamos a dinâmica /proc/cpuinfo Arquivo que lista a CPU atual, conforme detectado pelo sistema operacional. Existem 16 linhas (como visto no segundo comando) exatamente da mesma saída, por isso listamos apenas a primeira linha usando o Cabeça -n1 comando. Observe que também poderíamos escrever estes comandos da seguinte maneira:

$ grep 'nome do modelo' /proc /cpuinfo | Cabeça -n1 Nome do modelo: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHz $ grep 'nome do modelo' /proc /cpuinfo | WC -l 16 


Você pode, no entanto, usar o gato Método para explorar a saída completa (gato /proc /cpuinfo) como há muitas informações interessantes exibidas sobre seu processador. A contagem 16 se deve ao fato de haver 16 fios nesta CPU em particular, então o sistema operacional o vê como 16 processadores individuais ou tópicos, para usar.

Descobrindo seu sistema operacional e liberação

Freqüentemente, ao gerenciar um servidor remoto, queremos garantir que ele seja corrigido para a revisão correta de um sistema operacional. Para descobrir mais qual sistema operacional sua máquina está usando e em que revisão está, basta executar gato /etc /*liberação*:

$ cat /etc /* release* distrib_id = ubuntu distrib_release = 20.04 distrib_codename = focal distrib_description = "Ubuntu 20.04.1 lts "name =" ubuntu "versão =" 20.04.1 LTS (fossa focal) "id = ubuntu id_like = debian pretty_name =" ubuntu 20.04.1 lts "versão_id =" 20.04 "home_url =" https: // www.Ubuntu.com/"support_url =" https: // ajuda.Ubuntu.com/"bug_report_url =" https: // bugs.plataforma de lançamento.net/ubuntu/"privacy_policy_url =" https: // www.Ubuntu.com/jurídico/termos e políticas/privacidade-policy "version_codename = focal ubuntu_codename = focal 

Para comparar, aqui está a saída do mesmo comando em um Raspberry Pi 4: baseado em Raspbbian:

$ cat/etc/* release* pretty_name = "raspbian gnu/linux 10 (buster)" name = "raspbian gnu/linux" versão_id = "10" versão "10 (buster)" versão_codename = buster id = raspbian id_like = debian) Home_url = "http: // www.Raspbian.org/"support_url =" http: // www.Raspbian.org/raspbianforums "bug_report_url =" http: // www.Raspbian.Org/Raspbianbugs " 


Depois de se lembrar dessa abreviação, você logo se encontrará usando muitas situações. Os arquivos reais mostrados aqui, pelo menos no Ubuntu, são: /etc/lsb-lançamento e /etc/os liberação. Em Raspbian, existe apenas /etc/os liberação.

Limites operacionais vs do sistema

Muitos limites do sistema operacional são implementados por padrão no Linux. Eles são definidos de uma maneira astuta, pois você geralmente não os encontra até que seja um DevOps ou Engenheiro similar, maximizando a taxa de transferência de um conjunto de servidores remotos.

Alterar essas variáveis ​​do sistema operacional requer algum conhecimento sobre cada uma delas, e defini -las às vezes pode exigir alguns testes para estabelecer limites razoáveis.

Outra consideração aqui é que os limites do sistema podem ser atingidos muito antes de um limite configurado do sistema operacional ser atingido, e isso é especialmente verdadeiro se você definir esses limites do sistema operacional para um número muito alto. É também por isso que esses limites do sistema operacional estão lá em primeiro lugar: limitar o sistema operacional de perder o controle sobre um recurso do sistema físico (disco, ram, memória, CPU) devido a um limite / limite mal gerenciado gerenciado.

Assim, a alteração dos limites baseados no sistema operacional vem com vários riscos. Não é apenas fácil defini -los muito grandes, resultando no sistema operacional muitas vezes perdendo o controle de recursos específicos, mas alterar algumas variáveis ​​também carrega alguns riscos de segurança.

Por exemplo, digamos que um hacker jogaria uma bomba de garfo no sistema. Uma bomba de garfo não é uma bomba de verdade, mas uma exploração baseada em software que resulta no sistema de organização de novos conchas e threads em direção a um processo de organização de 'garfo'. Se o número de garfos permitidos tivesse sido modificada de alguma forma alterando uma ou mais variáveis ​​do sistema, o sistema poderá em breve ficar sem recursos da CPU tentando forçar a infinidade de bifurcação.

Outro aspecto a considerar aqui é o quão seguro o servidor ou a estação de trabalho que você está gerenciando é começar. Se estiver em uma zona DMZ em um data center, caso contrário, isolado de outros servidores e usado apenas para tarefas de baixo privilégio (como testes), pode ser bastante aceitável definir limites bastante altos. Se o mesmo servidor estivesse pressionando o código de produção e está assinando pacotes de liberação, muito mais cuidadoso o gerenciamento de recursos do sistema seria aconselhado.

Você pode ver como a mudança dessas variáveis ​​requer algum conhecimento e experiência. Ainda assim, a maioria deles é fácil de entender e tem nomes comuns em inglês.

Os mais comuns são colocados em /etc/segurança/limites.conf. Por exemplo, para aumentar bastante o número máximo de arquivos abertos para o 300000, você pode adicionar as seguintes linhas a /etc/segurança/limites.conf:

* Nofile macio 300000 * NOFILE HUSTO 300000 


Este será aberto os arquivos 300k a serem abertos de uma só vez. O máximo que pode ser definido para essas variáveis ​​é 1048576.

Observe que há uma diferença entre os limites 'suaves' e 'duros': os limites duros só podem ser elevados ainda mais raiz Acesso ao nível, enquanto qualquer processo pode diminuir o limite. Isso é ótimo para fins de segurança, pois os processos sem raios não serão capazes de ultrapassar um limite. Um limite suave pode ser alterado por um determinado processo a qualquer momento.

Existem muitas outras configurações semelhantes que podem ser alteradas dentro deste arquivo. Para ter uma ideia ampla, você pode usar ulimit -a Para ver os limites aplicáveis ​​ao seu sistema neste momento.

O próximo arquivo mais proeminente quando se trata de ajustar os recursos do sistema é /etc/sysctl.conf. Neste arquivo, é possível finalizar muitos parâmetros do kernel. Por exemplo, para definir o número máximo de PID (identificadores de processo) como 500K e o swappiness do seu sistema (com que facilidade o sistema operacional trocará informações baseadas em memória com informações baseadas em disco - também denominado 'troca') para 5 (uma configuração que restringe a troca consideravelmente), você pode adicionar o seguinte a /etc/sysctl.conf:

núcleo.pid_max = 500000 vm.Swappiness = 5 

Não recomendamos a implementação de nenhuma das configurações mostradas acima sem mais pesquisas, e sintonizando especificamente para o seu sistema. Freqüentemente, levantar uma variável para uma configuração mais alta não produzirá problemas, a menos que um evento imprevisto aconteça, como o exemplo de hacker discutido anteriormente.

Conclusão

Neste artigo, analisamos como nosso sistema operacional mantém os recursos sob controle e quais são os principais arquivos de configuração relacionados a isso. Também descobrimos como descobrir o que é a CPU no sistema e qual sistema operacional e sua versão que estamos usando. Conhecendo essas coisas básicas, pode -se explorar ainda mais em ambientes específicos feitos em /etc/segurança/limites.conf e /etc/sysctl.conf e gerenciar sistemas baseados em Linux com mais confiança. Aproveitar!

Tutoriais do Linux relacionados:

  • Exemplos úteis de linha de comando BASH - Parte 3
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Exemplos úteis de linha de comando bash e exemplos de truques - Parte 1
  • Exemplos úteis de linha de comando bash e exemplos de truques - Parte 2
  • Ubuntu 20.04 truques e coisas que você pode não saber
  • Exemplos úteis de linha de comando Bash e truques - Parte 4
  • Exemplos úteis de linha de comando BASH - Parte 5
  • Coisas para instalar no Ubuntu 20.04
  • Ubuntu 20.04 Guia
  • Mastering Bash Script Loops