Thursday 10 August 2017

Processo Médio De Movimento Médio


Htop explicou Explicação de tudo o que você pode ver no htoptop no Linux Última atualização em 2 de janeiro de 2017 1 no Hacker News em 2 de dezembro de 2016 1 no rsysadmin em 2 de dezembro de 2016 2 no rlinux em 2 de dezembro de 2016 Por mais tempo que fiz Não sei o que tudo significava no htop. Eu pensei que a média de carga 1.0 na minha máquina de dois núcleos significa que o uso da CPU está em 50. Isso não é bastante correto. E também, por que diz 1,0 eu decidi olhar tudo e documentá-lo aqui. Eles também dizem que a melhor maneira de aprender algo é tentar ensinar isso. Índice htop no Ubuntu Server 16.04 x64 Aqui está uma captura de tela do htop que vou descrever. Uptime mostra quanto tempo o sistema está funcionando. Você pode ver a mesma informação executando o tempo de atividade: como o programa de uptime sabe que lê as informações do arquivo procuptime. O primeiro número é o número total de segundos em que o sistema foi ativado. O segundo número é o quanto desse tempo a máquina passou ocioso, em segundos. O segundo valor pode ser maior do que o tempo total de funcionamento do sistema em sistemas com múltiplos núcleos, pois é uma soma. Como eu sabia que eu olhei para quais arquivos o programa de uptime abre quando ele é executado. Podemos usar a ferramenta Strace para fazer isso. Haverá muitos resultados. Nós podemos grep para a chamada de sistema aberta. Mas isso não funcionará realmente, uma vez que Strace produz tudo para o fluxo de erro padrão (stderr). Podemos redirecionar o stderr para o fluxo de saída padrão (stdout) com 2gtamp1. Nossa saída é esta: que contém o arquivo procuptime que mencionei. Acontece que você também pode usar strace - e abrir o tempo de atividade e não incomodar com a salpicadura. Então, por que precisamos do programa de tempo de atividade se pudermos apenas ler o conteúdo do arquivo. O tempo de atividade está bem formatado para humanos, enquanto o número de segundos é mais útil para usar em seus próprios programas ou scripts. Além do tempo de atividade, houve também três números que representam a média da carga. Eles são retirados do arquivo procloadavg. Se você dar uma olhada na saída do Strace, você verá que esse arquivo também foi aberto. As primeiras três colunas representam a carga média do sistema nos últimos períodos de 1, 5 e 15 minutos. A quarta coluna mostra o número de processos em execução e o número total de processos. A última coluna exibe o último ID de processo usado. Let39s começam com o último número. Sempre que você inicia um novo processo, é atribuído um número de identificação. As IDs de processo geralmente estão aumentando, a menos que tenham sido exaustados e estão sendo reutilizados. O ID do processo 1 pertence ao sbininit que é iniciado no momento da inicialização. Vamos ver o conteúdo procloadavg novamente e, em seguida, iniciar o comando sleep em segundo plano. Quando iniciado em segundo plano, o ID do processo será exibido. Então, o 1123 significa que há um processo em execução ou pronto para ser executado neste momento e 123 são processados ​​no total. Quando você executa o htop e vê apenas um processo em execução, significa que é o próprio processo do htop. Se você executar o sono 30 e executar htop novamente, você notará que ainda há apenas 1 processo de execução. Isso porque o sono não está funcionando, está dormindo ou está em marcha lenta ou, em outras palavras, esperando que algo aconteça. Um processo em execução é um processo que está atualmente sendo executado na CPU física ou espera sua vez de ser executado na CPU. Se você executar o devurandom gt devnull que gera repetidamente bytes aleatórios e os grava em um arquivo especial que nunca é lido, você verá que existem agora dois processos em execução. Portanto, agora existem dois processos em execução (geração de números aleatórios e o gato que lê o conteúdo do procloadavg) e você também notou que as médias da carga aumentaram. A média de carga representa a carga média do sistema ao longo de um período de tempo. O número da carga é calculado contando o número de execução (atualmente em execução ou aguardando a execução) e processos ininterruptos (aguardando a atividade do disco ou da rede). Então, é simplesmente uma série de processos. As médias de carga são então o número médio desses processos durante os últimos 1, 5 e 15 minutos, certo. Acontece que não é tão simples quanto isso. A média de carga é a média móvel amortizada exponencialmente do número de carga. Da Wikipédia: Matemática falando, todos os três valores sempre média toda a carga do sistema desde o início do sistema. Todos eles se deterioram exponencialmente, mas eles se deterioram a uma velocidade diferente. Assim, a média de carga de 1 minuto somará 63 da carga do último minuto, mais 37 da carga desde o início, excluindo o último minuto. Portanto, não é tecnicamente preciso que a média de carga de 1 minuto inclua apenas a atividade dos últimos 60 segundos (uma vez que ainda inclui 37 atividades do passado), mas isso inclui principalmente o último minuto. É isso que você esperava que os Estados Unidos retornassem à nossa geração de números aleatórios. Embora tecnicamente não correto, é assim que simplifico as médias de carga para facilitar a raciocínio sobre elas. Neste caso, o processo de geração de números aleatórios é ligado à CPU, de modo que a média de carga no último minuto é 1,00 ou, em média, 1 processo de execução. Uma vez que existe apenas uma CPU no meu sistema, a utilização da CPU é 100, pois minha CPU pode executar apenas um processo por vez. Se eu tivesse dois núcleos, o uso da CPU seria 50, pois meu computador pode executar dois processos ao mesmo tempo. A média de carga de um computador com 2 núcleos que tenha uma utilização de 100 CPU seria 2,00. Você pode ver o número de seus núcleos ou CPUs no canto superior esquerdo do htop ou executando nproc. Como o número de carga também inclui processos em estados ininterruptos que não têm muito efeito na utilização da CPU, não é correto inferir o uso da CPU a partir de médias de carga como acabei de fazer. Isso também explica por que você pode ver médias de alta carga, mas não muito carga na CPU. Mas existem ferramentas como mpstat que podem mostrar a utilização instantânea da CPU. Por que usamos médias de carga, então, no canto superior direito, htop mostra o número total de processos e quantos deles estão sendo executados. Mas diz que tarefas não são processos. Por que outro nome para um processo é uma tarefa. O kernel do Linux refere-se internamente a processos como tarefas. O htop usa Tarefas em vez de Processos provavelmente porque é mais curto e economiza espaço na tela. Você também pode ver os tópicos no htop. Para alternar a visibilidade dos tópicos, pressione Shift H no seu teclado. Se você ver tarefas: 23, 10 thr. Isso significa que eles são visíveis. Você também pode ver os segmentos do kernel com o Shift K. Quando eles estiverem visíveis, eles dirão Tarefas: 23, 40 kthr. PID ID de processo Cada vez que um novo processo é iniciado, é atribuído um número de identificação (ID) que é chamado ID de processo ou PID para breve. Se você executar um programa em segundo plano (amp) do bash. Você verá o número do trabalho entre colchetes e o PID. Se você perdeu, você pode usar a variável em bash que se expandirá para o último ID de processo em background. O ID do processo é muito útil. Pode ser usado para ver detalhes sobre o processo e para controlá-lo. Procfs é um sistema de arquivos pseudo que permite que os programas do userland obtenham informações do kernel lendo arquivos. Geralmente é montado no proc e para você parece um diretório regular que você pode navegar com ls e cd. Todas as informações relacionadas a um processo estão localizadas em procltpidgt. Por exemplo, procltpidgtcmdline dará o comando que foi usado para iniciar o processo. Ugh, isso não está certo. Acontece que o comando está separado pelo 0 byte. Que podemos substituir por um espaço ou nova linha O diretório de processo de um processo pode conter links. Por exemplo, os pontos cwd para o diretório de trabalho atual e exe são o binário executado. Então, é assim que htop. topo. Ps e outros utilitários de diagnóstico obtêm suas informações sobre os detalhes de um processo: eles o lêem de procltpidgtltfilegt. Quando você inicia um novo processo, o processo que lançou o novo processo é chamado de processo pai. O novo processo agora é um processo filho para o processo pai. Esses relacionamentos formam uma estrutura em árvore. Se você atingiu F5 no htop. Você pode ver a hierarquia do processo. Você também pode usar a opção f com ps Se você já se perguntou por que você geralmente vê bash ou sshd como pais de alguns de seus processos, aqui é por quê. Isto é o que acontece quando você corre, digamos, data do seu shell bash: bash cria um novo processo que é uma cópia de si mesmo (usando uma chamada do sistema fork), ele carregará o programa a partir do arquivo executável se liga na memória (usando um Chamada de sistema exec) bash, pois o processo pai aguardará a saída do filho. Então, o sbininit com uma ID de 1 foi iniciado no arranque, o que gerou o SSD daemon sshd. Quando você se conecta ao computador, o sshd gerará um processo para a sessão, que por sua vez iniciará o shell bash. Eu gosto de usar essa exibição de árvore no htop quando eu também estou interessado em ver todos os tópicos. Cada processo é de propriedade de um usuário. Os usuários são representados com uma ID numérica. Você pode usar o comando id para descobrir o nome desse usuário. Acontece que essa ID obtém essa informação dos arquivos etcpasswd e etcgroup. Isso porque o arquivo de configuração do Serviço de Nome de Serviço (NSS) etcnsswitch. conf diz usar esses arquivos para resolver nomes. O valor de compat (modo de compatibilidade) é o mesmo que os arquivos, exceto que outras entradas especiais são permitidas. Arquivos significa que o banco de dados é armazenado em um arquivo (carregado por libnssfiles. so). Mas você também pode armazenar seus usuários em outros bancos de dados e serviços ou usar Lightweight Directory Access Protocol (LDAP), por exemplo. Etcpasswd e etcgroup são arquivos de texto simples que mapeiam IDs numéricos para nomes legíveis para humanos. Passwd. Mas, onde estão as senhas, eles estão realmente em etcshadow. O que é esse gibberish 6 é o algoritmo de hashing de senha usado, neste caso ele representa sha512 seguido de sal gerado aleatoriamente para proteger contra ataques de tabela de arco-íris e, finalmente, o hash de sua senha sal Quando você executa um programa, ele será executado como seu usuário . Mesmo que o arquivo executável não seja de sua propriedade. Se você gostaria de executar um programa como root ou outro usuário, esse é o que o sudo é para. Mas e se você quiser fazer login como outro usuário para lançar vários comandos Use sudo bash ou sudo - u usuário bash. Você poderá usar o shell como esse usuário. Se você não gosta de ser requisitado a senha do root o tempo todo, você pode simplesmente desativá-lo, adicionando seu usuário ao arquivo etcsudo. Certo, apenas a raiz pode fazê-lo. O que acontece aqui é que você está executando o comando echo como root, mas adicionando a linha ao arquivo etcsudoers ainda como seu usuário. Há geralmente duas maneiras em torno dele: echo quotUSER ALL (ALL) NOPASSWD: ALLquot sudo tee - a etcsudoers sudo bash - c quotecho 39USER ALL (ALL) NOPASSWD: ALL39 gtgt etcsudoersquot No primeiro caso, tee - a anexará sua entrada padrão Para o arquivo e nós executamos esse comando como root. No segundo caso, executamos bash como root e pedimos que ele execute um comando (-c) e o comando inteiro será executado como root. Observe o negócio interessante do quot 39 aqui que ditará quando a variável USER será expandida. Se você der uma olhada no arquivo etcsudoers, você verá que ele começa com It39s um aviso útil que diz que você deve editar este arquivo com sudo visudo. Ele validará o conteúdo do arquivo antes de salvar e impedirá que cometa erros. Se você não usa o visudo e cometer um erro, pode bloqueá-lo do sudo. O que significa que você não conseguirá corrigir seu erro. A Let39 diz que deseja alterar sua senha. Você pode fazê-lo com o comando passwd. Será, como vimos anteriormente, salvar a senha no arquivo etcshadow. Este arquivo é sensível e somente gravável por root: então, como é possível que o programa passwd que é executado por um usuário regular pode escrever em um arquivo protegido, eu disse anteriormente que, quando você inicia um processo, é de sua propriedade, mesmo que O proprietário do arquivo executável é outro usuário. Acontece que você pode alterar esse comportamento alterando as permissões de arquivos. Deixe-nos dar uma olhada. Observe a carta de s. Foi realizado com o sudo chmod us usbinbin. Isso significa que um executável será lançado como o proprietário do arquivo que é root neste caso. Você pode encontrar os chamados executáveis ​​setuid com find bin - user root - perm - us. Note que você também pode fazer o mesmo com o grupo (gs). Nós vamos ver a coluna de estado do processo em htop, que é denotada simplesmente com a letra S. Aqui estão os valores possíveis: eu os ordenei com a frequência com que os vejo. Observe que quando você executar ps. Também mostrará subestados como Ss. R. Ss. Etc. R - executando ou executável (na fila de execução) Neste estado, o processo está sendo executado ou em uma fila de execução aguardando a execução. O que significa executar Quando você compila o código-fonte de um programa que você escreveu, esse código da máquina é instruções da CPU. É salvo em um arquivo que pode ser executado. Quando você inicia um programa, ele é carregado na memória e então a CPU executa essas instruções. Basicamente, isso significa que a CPU está executando instruções físicas. Ou, em outras palavras, números cruéis. S - sono interrompível (aguardando a conclusão de um evento) Isso significa que as instruções de código deste processo não estão sendo executadas na CPU. Em vez disso, esse processo está esperando por algo - um evento ou uma condição - para acontecer. Quando um evento acontece, o kernel define o estado como sendo executado. Um exemplo é o sono feio de coreutils. Ele dormirá por um número específico de segundos (aproximadamente). Então, isso é um sono interrompível. Como podemos interrompê-lo Ao enviar um sinal. Você pode enviar um sinal no htop pressionando F9 e depois escolher um dos sinais no menu à esquerda. Enviar um sinal também é conhecido como matar. Isso é porque kill é uma chamada de sistema que pode enviar um sinal para um processo. Há um programa binkill que pode fazer essa chamada de sistema do userland e o sinal padrão para usar é TERM que pedirá que o processo termine ou, em outras palavras, tente matá-lo. O sinal é apenas um número. Os números são difíceis de lembrar, então nós lhes damos nomes. Os nomes de sinal geralmente são escritos em letras maiúsculas e podem ser prefixados com SIG. Alguns sinais comumente usados ​​são INT. MATAR. PARE. CONT. HUP. Let39s interromper o processo de sono, enviando o INT aka SIGINT aka 2 como sinal de interrupção do terminal. Isso também é o que acontece Quando você bate em CTRL C no seu teclado. Bash irá enviar o primeiro plano processar o sinal SIGINT exatamente como acabamos de fazer manualmente. Por sinal, em bash. Kill é um comando embutido, mesmo que haja binkill na maioria dos sistemas. Por que permite que os processos sejam mortos se o limite de processos que você pode criar é alcançado. Estes comandos fazem o mesmo: matar - INT 10089 kill -2 10089 binkill -2 10089 Outro sinal útil para saber é SIGKILL aka 9. Você pode ter usado isso para matar um processo que não respondeu às suas frenéticas teclas de teclado CTRL C. Quando você escreve um programa, você pode configurar manipuladores de sinal que são funções que serão chamadas quando seu processo receber um sinal. Em outras palavras, você pode pegar o sinal e depois fazer algo, por exemplo, limpar e desligar graciosamente. Então, enviar o SIGINT (o usuário deseja interromper um processo) e o SIGTERM (o usuário deseja encerrar o processo) não significa que o processo seja encerrado. Você pode ter visto essa exceção ao executar scripts Python: Você pode dizer ao kernel para terminar com força um processo e não dar uma alteração para responder enviando o sinal KILL: D - Sono ininterrupto (geralmente IO) Ao contrário do sono interrompível, você não pode acordar Este processo com um sinal. É por isso que muitas pessoas temem ver este estado. Você pode matar esses processos porque matar significa enviar sinais SIGKILL para processos. Este estado é usado se o processo deve aguardar sem interrupção ou quando o evento deverá ocorrer rapidamente. Como ler de um disco. Mas isso só deve acontecer por uma fração de segundo. Os processos ininterruptos são USUALMENTE à espera de IO após uma falha de página. O processtask não pode ser interrompido neste estado, porque ele não pode processar quaisquer sinais se o fizesse, outra falha na página aconteceria e seria de volta onde estava. Em outras palavras, isso pode acontecer se você estiver usando o Network File System (NFS) e leva um tempo para ler e escrever a partir dele. Ou na minha experiência também pode significar que alguns dos processos estão trocando muito, o que significa que você tem pouca memória disponível. Vamos tentar obter um processo para entrar no sono ininterrupto. 8.8.8.8 é um servidor DNS público fornecido pelo Google. Eles não têm um NFS aberto lá. Mas isso não nos pára. Como descobrir o que causou essa estraga Let39s strace o comando na saída de ps acima. Portanto, a chamada do sistema mount está bloqueando o processo. Se você está se perguntando, você pode executar o mount com uma opção intr para executar como interrompível: sudo mount 8.8.8.8:tmp tmp - o intr. Processo Z-defunct (quotzombiequot), terminado, mas não colhido por seu pai. Quando um processo termina por saída e ainda possui processos filho, os processos filho tornam-se processos zumbis. Se os processos zumbis existem por um curto período de tempo, é perfeitamente normal. Os processos Zombie que existem por um longo período de tempo podem indicar um erro em um programa Os processos Zombie não consomem memória, apenas um ID do processo. Você pode matar um processo zumbi. Você pode pedir bem aos pais Processo para colher os zumbis (o sinal SIGCHLD) Você pode matar o processo pai dos zombies para se livrar do pai e seus zumbis, vou escrever algum código C para mostrar isso. Aqui está o nosso programa. Let39s instalar o GNU C Compiler (GCC). Compile-o e depois execute-o Olhe para a árvore do processo Nós temos o nosso zumbi Quando o processo dos pais está pronto, o zumbi desapareceu. Se você substituiu o sono (20) por enquanto (verdadeiro), o zumbi desapareceria imediatamente. Com saída. Toda a memória e os recursos associados a ela são desalocados para que possam ser usados ​​por outros processos. Por que manter os processos do zumbi em torno de então O processo pai tem a opção de descobrir seu código de saída do processo filho (em um manipulador de sinal) com a chamada do sistema de espera. Se um processo está dormindo, então ele precisa esperar para que ele acorde. Por que não simplesmente acorde com força e mate-o Pelo mesmo motivo, você não joga seu filho no lixo quando estiver cansado disso. Podem acontecer coisas ruins. T - parado pelo sinal de controle de trabalho Eu abri duas janelas de terminal e eu posso olhar para os processos do meu usuário com ps u. Eu omitirei os processos - bash e ps u da saída abaixo. Agora execute devurandom gt devnull em uma janela de terminal. Seu estado é R, o que significa que ele está sendo executado. Pressione CTRL Z para parar o processo. Seu estado é agora T. Execute o fg no primeiro terminal para retomá-lo. Outra maneira de parar um processo como este é enviar o sinal STOP com kill para o processo. Para retomar a execução do processo, você pode usar o sinal CONT. T - parado pelo depurador durante o rastreamento Primeiro, instale o depurador GNU (gdb) Execute um programa que escute conexões de rede recebidas na porta 1234. Está dormindo, o que significa que está aguardando dados da rede. Execute o depurador e anexe-o ao processo com ID 3905. Você verá que o estado é t, o que significa que esse processo está sendo rastreado no depurador. O Linux é um sistema operacional multitarefa, o que significa que mesmo quando você possui uma única CPU, você pode executar vários processos ao mesmo tempo. Você pode se conectar ao seu servidor via SSH e ver a saída do htop enquanto o seu servidor web está entregando o conteúdo do seu blog aos seus leitores pela internet. Como é possível quando uma única CPU só pode executar uma instrução de cada vez. A resposta é o compartilhamento de tempo. Um processo é executado por um pouco de tempo, então ele é suspenso, enquanto os outros processos aguardam a correr se revezam correndo por um tempo. O tempo que um processo executa é chamado de fatia de tempo. A fatia de tempo geralmente é de alguns milissegundos, então você realmente não percebeu isso muito quando seu sistema não está sob carga elevada. (Isso seria realmente interessante para descobrir quanto tempo as fatias geralmente estão no Linux.) Isso deve ajudar a explicar por que a média de carga é o número médio de processos em execução. Se você tem apenas um núcleo e a média de carga é 1,0. A CPU foi utilizada em 100. Se a média de carga for superior a 1,0. Isso significa que o número de processos que deseja executar é maior do que a CPU pode ser executada para que você possa enfrentar atrasos ou atrasos. Se a carga for inferior a 1,0. Isso significa que a CPU às vezes é ociosa e não faz nada. Isso também deve dar uma pista porque as vezes o tempo de execução de um processo que já foi executado por 10 segundos é maior ou menor do que exatamente 10 segundos. Processo de niceness e prioridade Quando você tem mais tarefas para executar do que o número de núcleos de CPU disponíveis, você de alguma forma tem que decidir quais tarefas executar e quais as que aguardam. Isto é o que o agendador de tarefas é responsável. O agendador no kernel do Linux é responsável por escolher qual processo em uma fila de execução para escolher em seguida e depende do algoritmo do agendador usado no kernel. Você geralmente pode influenciar o agendador, mas você pode informar quais processos são mais importantes para você e o programador pode levá-lo em consideração. Niceness (NI) é prioridade do usuário-espaço para processos, variando de -20, que é a prioridade mais alta para 19, que é a prioridade mais baixa. Pode ser confuso, mas você pode pensar que um bom processo cede a um processo menos agradável. Então, quanto mais agradável for um processo, mais cede. Pelo que eu coletei ao ler StackOverflow e outros sites, um aumento de nível de facilidade em 1 deve render mais 10 vezes de CPU para o processo. A prioridade (PRI) é a prioridade do espaço no kernel que o kernel do Linux está usando. Prioridades variam de 0 a 139 e o intervalo de 0 a 99 é em tempo real e de 100 a 139 para usuários. Você pode alterar o nicesness e o kernel leva em consideração, mas você não pode alterar a prioridade. A relação entre o bom valor e prioridade é: portanto, o valor de PR 20 (-20 a 19) é 0 a 39 que mapeia 100 a 139. Você pode definir a delicadeza de um processo antes de iniciá-lo. Altere o nicencess quando um programa já está sendo executado com renice. Veja o que significam as cores de uso da CPU: Azul: Números de baixa prioridade (bom gt 0) Verde: Roscas de prioridade normais Red: Kernel threads Uso de memória - VIRTRESSHRMEM Um processo tem a ilusão de ser o único na memória. Isso é realizado usando a memória virtual. Um processo não tem acesso direto à memória física. Em vez disso, tem seu próprio espaço de endereço virtual e o kernel traduz os endereços de memória virtual para a memória física ou pode mapear alguns deles para o disco. É por isso que pode parecer que os processos usam mais memória do que você instalou em seu computador. O ponto que eu quero fazer aqui é que não é muito fácil descobrir a quantidade de memória que um processo toma. Você também quer contar as bibliotecas compartilhadas ou a memória mapeada em disco Mas o kernel fornece e a htop mostra algumas informações que podem ajudá-lo a estimar o uso da memória. Aqui está o significado das cores de uso da memória: Verde: Memória usada Azul: Buffers Orange: Cache VIRTVSZ - Imagem virtual A quantidade total de memória virtual usada pela tarefa. Ele inclui todos os códigos, dados e bibliotecas compartilhadas, além de páginas que foram trocadas e páginas que foram mapeadas, mas não utilizadas. VIRT é o uso de memória virtual. Ele inclui tudo, incluindo arquivos mapeados em memória. Se um aplicativo solicitar 1 GB de memória, mas usa apenas 1 MB, então o VIRT informará 1 GB. Se o mmap é um arquivo de 1 GB e nunca o usa, o VIRT também informará 1 GB. Na maioria das vezes, este não é um número útil. RESRSS - Tamanho do residente A memória física não-trocada que uma tarefa usou. RES é o uso de memória residente, ou seja, o que está atualmente na memória física. Enquanto o RES pode ser um indicador melhor de quanto memória um processo está usando do que o VIRT. Tenha em mente que isso não inclui a memória trocada. Alguns da memória podem ser compartilhados com outros processos. Se um processo usa 1 GB de memória e ele chama fork (). O resultado da bifurcação será dois processos cujas RES são ambos de 1 GB, mas apenas 1 GB será usado, pois o Linux usa cópia-em-gravação. SHR - Shared Mem size A quantidade de memória compartilhada usada por uma tarefa. Ele simplesmente reflete memória que pode ser potencialmente compartilhada com outros processos. TODO: Eu deveria terminar isso. MEM - Uso da memória Uma tarefa usada atualmente compartilha a memória física disponível. Isso é RES dividido pela RAM total que você possui. Se o RES for 400M e você tiver 8 gigabytes de RAM, o MEM será 4008192100 4.88. Lancei uma gota de Oceano Digital com o Ubuntu Server. Quais são os processos iniciados no arranque Você realmente precisa deles Aqui estão minhas notas de pesquisa sobre os processos que são executados na inicialização em uma nova gota de Oceano Digital com o Ubuntu Server 16.04.1 LTS x64. O programa sbininit (também chamado init) coordena o resto do processo de inicialização e configura o ambiente para o usuário. Quando o comando init começa, torna-se pai ou avô de todos os processos que iniciam automaticamente no sistema. O que acontece se você matá-lo. Systemd-journald é um serviço de sistema que coleta e armazena dados de log. Ele cria e mantém periódicos estruturados e indexados com base em informações de registro recebidas de uma variedade de fontes. Uma das principais mudanças no journald foi substituir arquivos simples de log de texto simples por um formato de arquivo especial otimizado para mensagens de log. Este formato de arquivo permite que os administradores do sistema acessem mensagens relevantes de forma mais eficiente. Ele também traz parte do poder das implementações de registro centralizadas baseadas em banco de dados para sistemas individuais. Você deve usar o comando journalctl para consultar arquivos de log. Journalctl COMMsshd logs por sshd journalctl COMMsshd - o json-pretty logs por sshd no JSON journalctl - desde qu1520-01-10quot - até quot2015-01-11 03: 00quot journalctl - desde 09:00 - até quot1 hour agoquot Journalctl - desde ontem journalctl - b logs desde boot journalctl - f para seguir logs journalctl - diskecic-use journalctl --vacuum-size1G Parece que não é possível remover ou desativar este serviço, você só pode desligar o log. O daemon do lvmetad armazena metadados do LVM, de modo que os comandos do LVM podem ler metadados sem digitalizar discos. O armazenamento em cache de metadados pode ser uma vantagem porque os discos de varredura são demorados e podem interferir no trabalho normal do sistema e dos discos. Mas o que é LVM (Gerenciamento de Volume Lógico) Você pode pensar em LVM como partições quotdinâmicas, o que significa que você pode criar uma lista de quotpartitions LVM (eles são chamados de Volumesquotógico Lógico em LVM-speak) da linha de comando enquanto seu sistema Linux está sendo executado: não é necessário reiniciar O sistema para tornar o kernel ciente das partições recém-criadas ou redimensionadas. Parece que você deve mantê-lo se estiver usando o LVM. Systemd-udevd escuta os recursos do kernel. Para cada evento, o sistema-udevd executa as instruções correspondentes especificadas nas regras udev. Udev é um gerenciador de dispositivos para o kernel do Linux. Como o sucessor do devfsd e do hotplug, o udev gerencia principalmente os nós do dispositivo no diretório do dev. Então, este serviço gerencia o dev. Eu não tenho certeza se eu preciso dele executando em um servidor virtual. Systemd-timesyncd é um serviço do sistema que pode ser usado para sincronizar o relógio do sistema local com um servidor de protocolo de tempo de rede remoto. Então, isso substitui o ntpd. Se examinarmos as portas abertas neste servidor: Anteriormente no Ubuntu 14.04, foi executado o Atd - executou tarefas colocadas na fila para execução posterior. Atd executa trabalhos enfileirados por. E comandos de leitura em lote de entrada padrão ou um arquivo especificado que devem ser executados posteriormente. Ao contrário do cron, que agende trabalhos que são repetidos periodicamente, executa um trabalho em uma hora específica uma vez. Na verdade, nunca usei isso até agora. Snappy O Ubuntu Core é uma nova versão do Ubuntu com atualizações transacionais - uma imagem de servidor mínima com as mesmas bibliotecas que o Ubuntu de hoje, mas as aplicações são fornecidas através de um mecanismo mais simples. Os desenvolvedores de várias distribuições e empresas Linux anunciaram hoje a colaboração no formato de pacote Linux instantâneo, permitindo que um único pacote binário funcione de forma perfeita e segura em qualquer desktop, servidor, nuvem ou dispositivo Linux. Aparentemente, é um pacote deb simplificado e você está suposto para agrupar todas as dependências em um único toque que você pode distribuir. Nunca usei vil para implantar ou distribuir aplicativos em servidores. Na computação, o D-Bus ou o DBus é um mecanismo de comunicação entre processos (IPC) e chamada de procedimento remoto (RPC) que permite a comunicação entre vários programas de computador (isto é, processos) executados simultaneamente na mesma máquina. Meu entendimento é que você precisa Para ambientes de desktop, mas em um servidor para executar aplicativos da web, eu me pergunto o que é e se está sendo sincronizado com o NTP Oops. Provavelmente deveria manter isso. Systemd-logind é um serviço de sistema que gerencia logins de usuários. Cron-daemon para executar comandos programados (Vixie Cron) - f Fique no modo de primeiro plano, não demonstre. Você pode agendar tarefas para serem executadas periodicamente com o cron. Use crontab - e para editar a configuração para o seu usuário ou no Ubuntu Eu costumo usar o etc. cron. hudly. Etccron. daily. Etc. diretórios. Você pode ver os arquivos de log com grep cron varlogsyslog ou journalctl COMMcron ou mesmo journalctl COMMcron --sincequotdatequot --untilquotdatequot You39ll provavelmente deseja manter o cron. Mas se você não quiser, então você deve parar e desativar o serviço: porque, de outra forma, quando tentar removê-lo com apt remover o cron, ele tentará instalar o postfix. Parece que o cron precisa de um agente de transporte de correio (MTA) para enviar e-mails. O Rsyslogd é um utilitário do sistema que oferece suporte para registro de mensagens. Em outras palavras, é o que preenche arquivos de log em varlog como varlogauth. log para mensagens de autenticação, como as tentativas de login do SSH. Os arquivos de configuração estão em etcrsyslog. d. Você também pode configurar o rsyslogd para enviar arquivos de log para um servidor remoto e implementar o registro centralizado. Você pode usar o comando logger para registrar mensagens para varlogsyslog em scripts em segundo plano, como aqueles que são executados na inicialização. Certo, mas já temos o run-journald executado. Precisamos rsyslogd também Rsyslog e Journal, os dois aplicativos de registro presentes no seu sistema, têm vários recursos distintivos que os tornam adequados para casos de uso específico. Em muitas situações, é útil combinar suas capacidades, por exemplo, para criar mensagens estruturadas e armazená-las em um banco de dados de arquivos. Uma interface de comunicação necessária para essa cooperação é fornecida por módulos de entrada e saída no lado do Rsyslog e pelo soquete de comunicação do Journal39. Então, talvez eu o mantenha no caso. Acpid - Configuração avançada e evento de interface de energia o daemon acpid foi projetado para notificar programas de espaço de usuário de eventos ACPI. O acpid deve ser iniciado durante a inicialização do sistema e será executado como um processo em segundo plano, por padrão. Em computação, a especificação ACPI (Advanced Configuration and Interface) fornece um padrão aberto que os sistemas operacionais podem usar para executar a descoberta e configuração de componentes de hardware do computador, para executar o gerenciamento de energia, por exemplo, colocando componentes não utilizados para dormir e para fazer Monitoramento de status. But I39m on a virtual server that I don39t intend to suspendresume. I am going to remove it for fun and see what happens. I was able to successfully reboot the droplet but after halt Digital Ocean thought it was still on so I had to Power Off using the web interface. So I should probably keep this. Lxcfs is a fuse filesystem mainly designed for use by lxc containers. On a Ubuntu 15.04 system, it will be used by default to provide two things: first, a virtualized view of some proc files and secondly, filtered access to the hosts cgroup filesystems. In summary, on a 15.04 host, you can now create a container the usual way, lxc-create. The resulting container will have correct results for uptime, top, etc. Its basically a userspace workaround to changes which were deemed unreasonable to do in the kernel. It makes containers feel much more like separate systems than they would without it. Not using LXC containers You can remove it with The AccountsService package provides a set of D-Bus interfaces for querying and manipulating user account information and an implementation of these interfaces based on the usermod(8), useradd(8) and userdel(8) commands. When I removed DBus it broke timedatectl. I wonder what removing this service will break. mdadm is a Linux utility used to manage and monitor software RAID devices. The name is derived from the md (multiple device) device nodes it administers or manages, and it replaced a previous utility mdctl. The original name was quotMirror Diskquot, but was changed as the functionality increased. RAID is a method of using multiple hard drives to act as one. There are two purposes of RAID: 1) Expand drive capacity: RAID 0. If you have 2 x 500 GB HDD then total space become 1 TB. 2) Prevent data loss in case of drive failure: For example RAID 1, RAID 5, RAID 6, and RAID 10. You can remove it with polkitd PolicyKit daemon polkit - Authorization Framework My understanding is that this is like fine-grained sudo. You can allow non privilegded users to do certain actions as root. For instance, reboot your computer when you39re running Linux on a desktop computer. But I39m running a server. You can remove it with Still wondering if this breaks something. sshd (OpenSSH Daemon) is the daemon program for ssh. - D When this option is specified, sshd will not detach and does not become a daemon. This allows easy monitoring of sshd. iscsid is the daemon (system service) that runs in the background, acting on iSCSI configuration, and managing the connections. From its manpage: The iscsid implements the control path of iSCSI protocol, plus some management facilities. For example, the daemon could be configured to automatically re-start discovery at startup, based on the contents of persistent iSCSI database. I had never heard of iSCSI: In computing, iSCSI (Listeniaskzi eye-skuz-ee) is an acronym for Internet Small Computer Systems Interface, an Internet Protocol (IP)-based storage networking standard for linking data storage facilities. By carrying SCSI commands over IP networks, iSCSI is used to facilitate data transfers over intranets and to manage storage over long distances. iSCSI can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval. The protocol allows clients (called initiators) to send SCSI commands (CDBs) to SCSI storage devices (targets) on remote servers. It is a storage area network (SAN) protocol, allowing organizations to consolidate storage into data center storage arrays while providing hosts (such as database and web servers) with the illusion of locally attached disks. You can remove it with sbinagetty --noclear tty1 linux agetty - alternative Linux getty getty, short for quotget ttyquot, is a Unix program running on a host computer that manages physical or virtual terminals (TTYs). When it detects a connection, it prompts for a username and runs the 39login39 program to authenticate the user. Originally, on traditional Unix systems, getty handled connections to serial terminals (often Teletype machines) connected to a host computer. The tty part of the name stands for Teletype, but has come to mean any type of text terminal. This allows you to log in when you are physically at the server. In Digital Ocean, you can click on Console in the droplet details and you will be able to interact with this terminal in your browser (it39s a VNC connection I think). In the old days, you39d see a bunch of ttys started a system boot (configured in etcinittab ), but nowadays they are spun up on demand by systemd. For fun, I removed this configuration file that launches and generates agetty : When I rebooted the server, I could still connect to it via SSH but I was no longer able to log in from the Digital Ocean web console. sshd: rootpts0 amp - bash amp htop sshd: rootpts0 means that there has been an SSH session established for the user root at the 0 pseudoterminal ( pts ). A pseudoterminal emulates a real text terminal. bash is the shell that I am using. Why is there a dash at the beginning Reddit user hirnbrot helpfully explained it: There39s a dash at the beginning because launching it as quot-bashquot will make it a login shell. A login shell is one whose first character of argument zero is a -, or one started with the --login option. This will then cause it to read a different set of configuration files. htop is an interactive process viewer tool that is running in the screenshot. Sometimes looking at strace is not enough. Another way to figure out what a program does is to look at its source code. First, I need to find out where to start looking. Here we find out that uptime is actually located at usrbinuptime and that on Ubuntu it is part of the procps package. You can then go to packages. ubuntu and search for the package there. If you scroll to the bottom of the page, you39ll see links to the source code repositories: Debian Package Source Repository git:git. debian. orgcollab-maintprocps. git Debian Package Source Repository (Browsable) anonscm. debian. orgcgitcollab-maintprocps. git File descriptors and redirection When you want to redirect standard error (stderr) to standard output (stdout), is it 2ampgt1 or 2gtamp1 You can memorize where the ampersand amp goes by knowing that echo something gt file will write something to the file file. It39s the same as echo something 1gt file. Now, echo something 2gt file will write the stderr output to file . If you write echo something 2gt1. it means that you redirect stderr to a file with the name 1. Add spaces to make it more clear: echo something 2gt 1. If you add amp before 1. it means that 1 is not a filename but the stream ID. So it39s echo something 2gtamp1 . Colors in PuTTY If you have missing elements in htop when you are using PuTTY, here is how to solve it. Right click on the title bar Click Change settings. Go to Window - gt Colours Select the Both radio button Click Apply Let39s write a very simple shell in C that demonstrates the use of fork exec wait system calls. Here39s the program shell. c . Compile the program. Have you ever wondered that when you launch a process in the background you only see that it has exited only after a while when you hit Enter That39s because the shell is waiting for your input. Only when you enter a command does it check for the status of the background processes and show if they39ve been terminated. Here is what I39d like to find out more about. process state substatuses ( Ss. Ss. R. etc.) kernel threads devpts more about memory ( CODE. DATA. SWAP ) figure out time slices length Linux scheduler algorithm pinning proceses to cores write about manual pages cpumemory colors in bars process ID limit amp fork bomb lsof. ionice. schedtool Here is a list of non-minor corrections and updates since the post was published. Idle time in procuptime is the sum of all cores (Dec 2, 2016) My parentchild printf in zombie. c was reversed (Dec 2, 2016) apt remove cron installs postfix because of a dependency to an MTA (Dec 3, 2016) id can load information from other sources (via etcnsswitch. conf ), not just etcpasswd (Dec 3, 2016) Describe etcshadow password hash format (Dec 3, 2016) Use visudo to edit the etcsudoers file to be safe (Dec 3, 2016) Explain MEM (Dec 3, 2016) Rewrite the section about load averages (Dec 4, 2016) Fix: kill 1234 by default sends TERM not INT (Dec 7, 2016) Explain CPU and memory color bars (Dec 7, 2016) Please let me know if there is something wrong in this post I will gladly correct it. Related posts Recent postsMay 2015 National Occupational Employment and Wage Estimates United States These estimates are calculated with data collected from employers in all industry sectors in metropolitan and nonmetropolitan areas in every state and the District of Columbia. Additional information, including the hourly and annual 10th, 25th, 75th, and 90th percentile wages and the employment percent relative standard error, is available in the downloadable XLS file . Major Occupational Groups ( Note --clicking a link will scroll the page to the occupational group): To sort this table by a different column, click on the column header Occupation title (click on the occupation title to view its profile) (1) Estimates for detailed occupations do not sum to the totals because the totals include occupations not shown separately. Estimates do not include self-employed workers. (2) Annual wages have been calculated by multiplying the hourly mean wage by a quotyear-round, full-timequot hours figure of 2,080 hours for those occupations where there is not an hourly wage published, the annual wage has been directly calculated from the reported survey data. (3) The relative standard error (RSE) is a measure of the reliability of a survey statistic. The smaller the relative standard error, the more precise the estimate. (4) Wages for some occupations that do not generally work year-round, full time, are reported either as hourly wages or annual salaries depending on how they are typically paid. (5) This wage is equal to or greater than 90.00 per hour or 187,200 per year. Last Modified Date: March 30, 2016 Recommend this page using: Facebook Twitter LinkedIn

No comments:

Post a Comment