Redirecionamento, Pipes
e Processos
Fábio dos Reis - Bóson Treinamentos
Arquivos de Dispositivos
Em Linux e Unix, tudo são arquivos; drives de
disco, partições, terminais, áudio, etc., são
mapeados para o sistema de arquivos.
Desta forma os programas podem interagir
com muitos dispositivos da mesma maneira.
Esses dispositivos são chamados de arquivos de
dispositivos, que são objetos do sistema que
oferecem uma interface para o dispositivo.
Fábio dos Reis - Bóson Treinamentos
Arquivos de Dispositivos
O kernel do Linux associa os drivers de
dispositivos (módulos) aos arquivos de
dispositivos, de modo que os dispositivos
podem ser acessados como se fossem arquivos.
Fábio dos Reis - Bóson Treinamentos
Descritores Padrões de Arquivos
É uma abstração de uma identificação para
acessar um arquivo.
Quando um processo quer manipular um
arquivo, ele usa um valor inteiro que é um dos
três descritores de arquivos existentes.
Quando um programa é iniciado, ele recebe
automaticamente os três descritores de
arquivos a seguir:
Fábio dos Reis - Bóson Treinamentos
Descritores Padrões de Arquivos
Entrada Padrão (Standard Input, stdin)
Saída Padrão (Standard Output, stdout)
Erro Padrão (Standard Error, stderr)
Fábio dos Reis - Bóson Treinamentos
Entrada Padrão
Stream para entrada de texto.
Por padrão, vinculado ao teclado.
Ao digitar em um programa interativo, os
caracteres são enviados para a entrada padrão
É o Descritor de Arquivos 0.
Fábio dos Reis - Bóson Treinamentos
Saída Padrão
Stream de Saída de texto para a saída normal
dos programas.
Vinculado por padrão ao terminal ou janela de
terminal.
A saída gerada pelos comandos é escrita na
saída padrão.
É o Descritor de Arquivos 1.
Fábio dos Reis - Bóson Treinamentos
Erro Padrão
Stream de saída de texto, usado
exclusivamente para erros ou infos não
relacionadas à saída normal dos comandos.
Vinculado por padrão ao terminal.
Descritor de arquivos 2.
Fábio dos Reis - Bóson Treinamentos
Pipes
Para os programas, é a mesma coisa ler dados
a partir de um arquivo ou a partir do teclado.
Idem para escrever em arquivos e terminais.
Desta forma, é possível enviar a saída de um
programa para a entrada de outro.
Para isso usamos um 'pipe', simbolizado por |,
o que nos permite juntar dois ou mais
comandos.
Ex.: ls -l | less
Fábio dos Reis - Bóson Treinamentos
Pipes
Podem ser usados em uma série de vários
comandos.
Se forem usados mais de dois comandos, a
operação resultante recebe o nome de
pipeline ou stream de texto.
ls /etc | sort -r | less
Fábio dos Reis - Bóson Treinamentos
Redirecionamento
O pipe foi utilizado para redirecionar a saída
de um comando para a entrada de outro.
Podemos também redirecionar a saída para e
de arquivos.
Para isso usamos o operador de
redirecionamento >
ls -i > inodes.txt
Fábio dos Reis - Bóson Treinamentos
Redirecionamento
As saídas redirecionadas para um arquivo não
são exibidas na tela, exceto os erros padrão.
O operador > cria arquivos, portanto toda vez
que for usado o arquivo será criado se não
existir, e substituído se não existir.
Para anexar conteúdo a arquivos existentes
use o operador de redirecionamento >>
echo "Essa foi a lista de inodes" >> inodes.txt
Fábio dos Reis - Bóson Treinamentos
Redirecionamento
É possível também redirecionar a entrada
padrão, para que os comandos leiam a partir
de um arquivo em vez de a partir do teclado.
Fábio dos Reis - Bóson Treinamentos
Exemplos de Redirecionamento
ls -zz 2> erro.txt # Redireciona o erro gerado pela opção
inválida -zz para o arquivo erro.txt (por padrão iria para o terminal)
ls -zz 2>> erro.txt #Anexa o erro gerado a erro.txt.
cat < /etc/group > /tmp/grupos 2> /tmp/erro
# Redireciona a entrada de cat a partir de /etc/group, a saída do
comando para grupos e a saída padrão para erro.
Fábio dos Reis - Bóson Treinamentos
Comando tee
Permite enviar a saída de um comando para
um arquivo e para a tela ao mesmo tempo.
Sintaxe:
tee [opções] arquivos
-a Anexa aos arquivos, em vez de
sobrescrevê-los.
ls -l | tee arquivo # Mostra na tela a saída de ls -l e também
a grava em arquivo
ls -l | tee arquivo | less # Mostra na tela a saída de ls -l
paginado por less e também a grava em arquivo
Fábio dos Reis - Bóson Treinamentos
Comando tee
Fábio dos Reis - Bóson Treinamentos
Fonte da imagem: Wikimedia Commons
Processos
Todo programa rodando no sistema é um
processo.
Um comando, um aplicativo e o próprio Shell
são processos dos sistema.
Todo processo possui atributos e conceitos
associados a ele.
Fábio dos Reis - Bóson Treinamentos
Conceitos e Atributos de Processos
Tempo de vida - Extensão de tempo que ele leva
para executar.
PID - Número do ID do processo
UID e GID - IDs do usuário e grupo associados ao
processo.
Processo-pai - Processo que criou um outro
processo.
PPID - Número do ID do processo-pai
Diretório de Trabalho Atual - Diretório padrão
associado ao processo.
Fábio dos Reis - Bóson Treinamentos
Gerenciamento de Processos
Comandos úteis:
ps
pstree
fuser
lsof
kill
bg / fg
jobs
nohup
nice / renice
Fábio dos Reis - Bóson Treinamentos
Comando ps
Gera um instantâneo dos processos atuais no
terminal.
Sintaxe:
ps [opções]
-a Mostra processos de propriedade de outros usuários e vinculados a um terminal
-l Formato longo, incluindo prioridade, PPID, etc.
-u Formato de usuário, com nomes de usuário e hora de início dos processos
-x Inclui processos sem terminal de controle (daemons, etc.)
-U usuário Exibe processos de propriedade do usuário.
Fábio dos Reis - Bóson Treinamentos
Exemplos do comando ps
ps Gera uma lista de processos de sua
propriedade e vinculados a seu terminal
ps -aux Inclui processos de outros usuários,
não-vinculados a um terminal e no modo
usuário.
ps -U mario Exibe os processos do usuário
mario.
Fábio dos Reis - Bóson Treinamentos
Comando pstree
Exibe uma lista hierárquica de processos no
formato de árvore.
pstree [opções]
pstree -p Inclui PIDs na saída
pstree 100 Exibe a subárvore de processos sob
o processo de PID 100
Fábio dos Reis - Bóson Treinamentos
Sinais de Processos
Os sinais são meios usados para que os
processos possam se comunicar e para que o
sistema possa interferir em seu
funcionamento.
Quando um processo recebe um determinado
sinal e conta com instruções sobre o que fazer
com ele, tal ação é colocada em prática.
Se não houver instruções pré-programadas, o
próprio Linux pode executar a ação de acordo
com suas rotinas.
Fábio dos Reis - Bóson Treinamentos
Lista de Sinais
STOP - esse sinal tem a função de interromper a execução
de um processo e só reativá-lo após o recebimento do sinal
CONT;
CONT - esse sinal tem a função de instruir a execução de um
processo após este ter sido interrompido;
SEGV - esse sinal informa erros de endereços de memória;
TERM - esse sinal tem a função de terminar completamente
o processo, ou seja, este deixa de existir após a finalização;
ILL - esse sinal informa erros de instrução ilegal, por
exemplo, quando ocorre divisão por zero;
KILL - esse sinal tem a função de "matar" um processo e é
usado em momentos de criticidade (cód. 9).
Fábio dos Reis - Bóson Treinamentos
Comando kill
Permite enviar sinais a um processo.
Sintaxe:
kill [sinal] PID
Fábio dos Reis - Bóson Treinamentos
Comando kill - Exemplos
Suponha que você deseja interromper
temporariamente a execução do processo de PID
4220. Para isso, use o comando:
kill -STOP 4220
Para que o processo 4220 volte a ser executado,
basta usar o comando:
kill -CONT 4220
Para "matar" um processo, use:
kill -9 [PID]
Fábio dos Reis - Bóson Treinamentos

Redirecionamento, pipes e processos linux

  • 1.
    Redirecionamento, Pipes e Processos Fábiodos Reis - Bóson Treinamentos
  • 2.
    Arquivos de Dispositivos EmLinux e Unix, tudo são arquivos; drives de disco, partições, terminais, áudio, etc., são mapeados para o sistema de arquivos. Desta forma os programas podem interagir com muitos dispositivos da mesma maneira. Esses dispositivos são chamados de arquivos de dispositivos, que são objetos do sistema que oferecem uma interface para o dispositivo. Fábio dos Reis - Bóson Treinamentos
  • 3.
    Arquivos de Dispositivos Okernel do Linux associa os drivers de dispositivos (módulos) aos arquivos de dispositivos, de modo que os dispositivos podem ser acessados como se fossem arquivos. Fábio dos Reis - Bóson Treinamentos
  • 4.
    Descritores Padrões deArquivos É uma abstração de uma identificação para acessar um arquivo. Quando um processo quer manipular um arquivo, ele usa um valor inteiro que é um dos três descritores de arquivos existentes. Quando um programa é iniciado, ele recebe automaticamente os três descritores de arquivos a seguir: Fábio dos Reis - Bóson Treinamentos
  • 5.
    Descritores Padrões deArquivos Entrada Padrão (Standard Input, stdin) Saída Padrão (Standard Output, stdout) Erro Padrão (Standard Error, stderr) Fábio dos Reis - Bóson Treinamentos
  • 6.
    Entrada Padrão Stream paraentrada de texto. Por padrão, vinculado ao teclado. Ao digitar em um programa interativo, os caracteres são enviados para a entrada padrão É o Descritor de Arquivos 0. Fábio dos Reis - Bóson Treinamentos
  • 7.
    Saída Padrão Stream deSaída de texto para a saída normal dos programas. Vinculado por padrão ao terminal ou janela de terminal. A saída gerada pelos comandos é escrita na saída padrão. É o Descritor de Arquivos 1. Fábio dos Reis - Bóson Treinamentos
  • 8.
    Erro Padrão Stream desaída de texto, usado exclusivamente para erros ou infos não relacionadas à saída normal dos comandos. Vinculado por padrão ao terminal. Descritor de arquivos 2. Fábio dos Reis - Bóson Treinamentos
  • 9.
    Pipes Para os programas,é a mesma coisa ler dados a partir de um arquivo ou a partir do teclado. Idem para escrever em arquivos e terminais. Desta forma, é possível enviar a saída de um programa para a entrada de outro. Para isso usamos um 'pipe', simbolizado por |, o que nos permite juntar dois ou mais comandos. Ex.: ls -l | less Fábio dos Reis - Bóson Treinamentos
  • 10.
    Pipes Podem ser usadosem uma série de vários comandos. Se forem usados mais de dois comandos, a operação resultante recebe o nome de pipeline ou stream de texto. ls /etc | sort -r | less Fábio dos Reis - Bóson Treinamentos
  • 11.
    Redirecionamento O pipe foiutilizado para redirecionar a saída de um comando para a entrada de outro. Podemos também redirecionar a saída para e de arquivos. Para isso usamos o operador de redirecionamento > ls -i > inodes.txt Fábio dos Reis - Bóson Treinamentos
  • 12.
    Redirecionamento As saídas redirecionadaspara um arquivo não são exibidas na tela, exceto os erros padrão. O operador > cria arquivos, portanto toda vez que for usado o arquivo será criado se não existir, e substituído se não existir. Para anexar conteúdo a arquivos existentes use o operador de redirecionamento >> echo "Essa foi a lista de inodes" >> inodes.txt Fábio dos Reis - Bóson Treinamentos
  • 13.
    Redirecionamento É possível tambémredirecionar a entrada padrão, para que os comandos leiam a partir de um arquivo em vez de a partir do teclado. Fábio dos Reis - Bóson Treinamentos
  • 14.
    Exemplos de Redirecionamento ls-zz 2> erro.txt # Redireciona o erro gerado pela opção inválida -zz para o arquivo erro.txt (por padrão iria para o terminal) ls -zz 2>> erro.txt #Anexa o erro gerado a erro.txt. cat < /etc/group > /tmp/grupos 2> /tmp/erro # Redireciona a entrada de cat a partir de /etc/group, a saída do comando para grupos e a saída padrão para erro. Fábio dos Reis - Bóson Treinamentos
  • 15.
    Comando tee Permite enviara saída de um comando para um arquivo e para a tela ao mesmo tempo. Sintaxe: tee [opções] arquivos -a Anexa aos arquivos, em vez de sobrescrevê-los. ls -l | tee arquivo # Mostra na tela a saída de ls -l e também a grava em arquivo ls -l | tee arquivo | less # Mostra na tela a saída de ls -l paginado por less e também a grava em arquivo Fábio dos Reis - Bóson Treinamentos
  • 16.
    Comando tee Fábio dosReis - Bóson Treinamentos Fonte da imagem: Wikimedia Commons
  • 17.
    Processos Todo programa rodandono sistema é um processo. Um comando, um aplicativo e o próprio Shell são processos dos sistema. Todo processo possui atributos e conceitos associados a ele. Fábio dos Reis - Bóson Treinamentos
  • 18.
    Conceitos e Atributosde Processos Tempo de vida - Extensão de tempo que ele leva para executar. PID - Número do ID do processo UID e GID - IDs do usuário e grupo associados ao processo. Processo-pai - Processo que criou um outro processo. PPID - Número do ID do processo-pai Diretório de Trabalho Atual - Diretório padrão associado ao processo. Fábio dos Reis - Bóson Treinamentos
  • 19.
    Gerenciamento de Processos Comandosúteis: ps pstree fuser lsof kill bg / fg jobs nohup nice / renice Fábio dos Reis - Bóson Treinamentos
  • 20.
    Comando ps Gera uminstantâneo dos processos atuais no terminal. Sintaxe: ps [opções] -a Mostra processos de propriedade de outros usuários e vinculados a um terminal -l Formato longo, incluindo prioridade, PPID, etc. -u Formato de usuário, com nomes de usuário e hora de início dos processos -x Inclui processos sem terminal de controle (daemons, etc.) -U usuário Exibe processos de propriedade do usuário. Fábio dos Reis - Bóson Treinamentos
  • 21.
    Exemplos do comandops ps Gera uma lista de processos de sua propriedade e vinculados a seu terminal ps -aux Inclui processos de outros usuários, não-vinculados a um terminal e no modo usuário. ps -U mario Exibe os processos do usuário mario. Fábio dos Reis - Bóson Treinamentos
  • 22.
    Comando pstree Exibe umalista hierárquica de processos no formato de árvore. pstree [opções] pstree -p Inclui PIDs na saída pstree 100 Exibe a subárvore de processos sob o processo de PID 100 Fábio dos Reis - Bóson Treinamentos
  • 23.
    Sinais de Processos Ossinais são meios usados para que os processos possam se comunicar e para que o sistema possa interferir em seu funcionamento. Quando um processo recebe um determinado sinal e conta com instruções sobre o que fazer com ele, tal ação é colocada em prática. Se não houver instruções pré-programadas, o próprio Linux pode executar a ação de acordo com suas rotinas. Fábio dos Reis - Bóson Treinamentos
  • 24.
    Lista de Sinais STOP- esse sinal tem a função de interromper a execução de um processo e só reativá-lo após o recebimento do sinal CONT; CONT - esse sinal tem a função de instruir a execução de um processo após este ter sido interrompido; SEGV - esse sinal informa erros de endereços de memória; TERM - esse sinal tem a função de terminar completamente o processo, ou seja, este deixa de existir após a finalização; ILL - esse sinal informa erros de instrução ilegal, por exemplo, quando ocorre divisão por zero; KILL - esse sinal tem a função de "matar" um processo e é usado em momentos de criticidade (cód. 9). Fábio dos Reis - Bóson Treinamentos
  • 25.
    Comando kill Permite enviarsinais a um processo. Sintaxe: kill [sinal] PID Fábio dos Reis - Bóson Treinamentos
  • 26.
    Comando kill -Exemplos Suponha que você deseja interromper temporariamente a execução do processo de PID 4220. Para isso, use o comando: kill -STOP 4220 Para que o processo 4220 volte a ser executado, basta usar o comando: kill -CONT 4220 Para "matar" um processo, use: kill -9 [PID] Fábio dos Reis - Bóson Treinamentos