Comandos do Linux e Unix: Sistema; Processos; Sistema de Arquivos; Rede; SSH SCP; VPN com SSH; RSYNC; SUDO; Arquivos Encriptados; Partições Encriptadas; Certificados SSL; CVS; SVN; Comando Úteis; Instalar Software; Converter Mídia; Impressão; Banco de Dados; Quota de Disco; Shells; Scripting; Programação

Comandos Sistema Linux

Rodando o kernel e informações do sistema

    # uname -a                           # Obter versão do kernel (e versão do BSD também)
    # lsb_release -a                     # Informação completa de lançamento de qualquer distribuição LSB
    # cat /etc/SuSE-release              # Obter versão do SuSE
    # cat /etc/debian_version            # Obter versão do Debian

Utilize /etc/DISTR-release com DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris), e assim por diante. veja também /etc/issue.

    # uptime         # Exibir a quanto tempo o sistema está rodando + carga
    # hostname       # Host name do sistema
    # hostname -i    # Exibir o endereço de IP do host. (somente para Linux)
    # man hier       # Descrição da hierarquia do sistema de arquivo
    # last reboot    # Exibir histórico de reboot do sistema

Informações de Hardware

Hardware detectado pelo kernel

# dmesg                              # Hardware detectado e mensagens de boot
# lsdev                              # Informação a respeito do hardware instalado
# dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 # Lê BIOS

Linux

# cat /proc/cpuinfo               # Modelo do CPU
# cat /proc/meminfo               # Memória do Hardware
# grep MemTotal /proc/meminfo     # Exibir a memória física
# watch -n1 'cat /proc/interrupts'# Observar interrupções alteráveis continuadamente
# free -m                         # Memória utilizada e livre (-m para MB)
# cat /proc/devices               # Dispositivos configurados
# lspci -tv                       # Exibir dispositivos PCI
# lsusb -tv                       # Exibir dispositivos USB
# lshal                           # Exibir uma lista de todos os dispositivos com suas propriedades
# dmidecode                       # Exibir DMI/SMBIOS: hw info da BIOS

FreeBSD

# sysctl hw.model         # Modelo do CPU
# sysctl hw               # Dá um monte de informações de hardware
# sysctl hw.ncpu          # Número de CPUs ativos instalados
# sysctl vm               # Uso de memória
# sysctl hw.realmem       # Memória do hardware
# sysctl -a | grep mem    # Configurações de memória do kernel e informações
# sysctl dev              # Dispositivos Configurados
# pciconf -l -cv          # Exibir dispositivos PCI
# usbdevs -v              # Exibir dispositivos USB
# atacontrol list         # Exibir dispositivos ATA
# camcontrol devlist -v   # Exibir dispositivos SCSI

Carga, estatísticas e mensagens

Os comandos a seguir são úteis para descobrir o que está acontecendo no sistema.

# top                           # Exibe e atualiza o top dos processos do cpu
# mpstat 1                      # Exibe estatísticas relacionadas ao processador
# vmstat 2                      # Exibe estatísticas da memória virtual
# iostat 2                      # Exibe estatísticas de I/O (intervalos de 2 s)
# systat -vmstat 1              # Resume estatísticas do sistema BSD (intervalos de 1 segundo)
# systat -tcp 1                 # Conexões TCP BSD (tente também -ip)
# systat -netstat 1             # Conexões de rede ativa BSD
# systat -ifstat 1              # Tráfego de rede BSD pelas interfaces ativas
# systat -iostat 1              # CPU BSD e rendimento de disco
# ipcs -a                       # Informações de interprocessos no System
# tail -n 500 /var/log/messages # Últimas 500 mensagens kernel/syslog
# tail /var/log/warn            # Mensagens de aviso do sistema; veja syslog.conf

Usuários

    # id                                 # Exibe id do usuário ativo com login e group
    # last                               # Exibe os últimos logins no sistema
    # who                                # Exibe quem está logado no sistema
    # groupadd admin                     # Adiciona grupo "admin" e usuário colin (Linux/Solaris)
    # useradd -c "Colin Barschel" -g admin -m colin
    # usermod -a -G <group> <user>       # Adiciona usuário existente ao grupo (Debian)
    # groupmod -A <user> <group>         # Adiciona usuário existente ao grupo (SuSE)
    # userdel colin                      # Remove o usuário colin (Linux/Solaris)
    # adduser joe                        # FreeBSD adicionar usuário joe (interativo)
    # rmuser joe                         # FreeBSD remove usuário joe (interativo)
    # pw groupadd admin                  # Utilize pw no FreeBSD
    # pw groupmod admin -m newmember     # Adicione um novo membro ao grupo
    # pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh 
    # pw userdel colin; pw groupdel admin

Senhas criptografadas ficam armazenadas em /etc/shadow no Linux e Solaris e /etc/master.passwd no FreeBSD. Se o master.passwd for modificado manualmente (dizê-lo para remover uma senha), execute o # pwd_mkdb -p master.passwd para reconstruir a base de dados.

Para impedir logins temporariamente no sistema (para todos os usuários, menos para o root) utilize o nologin. A mensagem em nologin será exibida (pode não funcionar com as chaves pré-compartilhadas do ssh).

# echo "Desculpe, sem login no momento" > /etc/nologin       # (Linux)
    # echo "Desculpe, sem login no momento" > /var/run/nologin   # (FreeBSD)

Limites

Algumas aplicações requerem limites mais altos em arquivos e sockets abertos (como um servidor proxy
, banco de dados). Os limites padrões são normalmente muito baixos.

Linux

Por shell/script

Os limites do shell são governados pelo ulimit. O status é verificado
com o ulimit -a. Por exemplo, para alterar o limite dos arquivos de
1024 para 10240, faça:

# ulimit -n 10240 # Isso é válido somente dentro do shell

O comando ulimit pode ser utilizado em um script para alterar os limites para o script somente.

Por usuário/processo

Login, usuários e aplicações podem ser configurados em /etc/security/limits.conf. Por exemplo:

# cat /etc/security/limits.conf
    *   hard    nproc   250              # Limite de processos por usuário
    asterisk hard nofile 409600          # Limite de arquivos abertos por aplicação

Sistema

Limites do kernel são configurados com o sysctl. Limites permanentes são configurados em /etc/sysctl.conf.

    # sysctl -a                          # Visualiza todos os limites do sistema
    # sysctl fs.file-max                 # Visualiza limite máximo de arquivos abertos
    # sysctl fs.file-max=102400          # Altera o limite de máximo de arquivos abertos
    # echo "1024 50000" > /proc/sys/net/ipv4/ip_local_port_range  # Alcance de porta
    # cat /etc/sysctl.conf
    fs.file-max=102400                   # Entrada permanente em sysctl.conf
    # cat /proc/sys/fs/file-nr           # Quantos descritores de arquivo estão em uso

FreeBSD

Por shell/script

Utilize o comando limits no csh ou no tcsh ou como no Linux, utilize ulimit em um sh ou bash shell.

Por user/processo

Os limites padrões no login são configurados em /etc/login.conf. Um valor ilimitado é ainda assim limitado pelo valor máximo do sistema.

Sistema

Limites do kernel também são configurados com o sysctl. Limites permanentes são configurados em /etc/sysctl.conf ou /boot/loader.conf. A syntax é a mesma como em Linux, mas as chaves são diferentes.

    # sysctl -a                          # Visualizar todos os limites do sistema
    # sysctl kern.maxfiles=XXXX          # Número máximo de descrições de arquivo
    kern.ipc.nmbclusters=32768           # Entrada permanente em /etc/sysctl.conf
    kern.maxfiles=65536                  # Valores típicos para Squid
    kern.maxfilesperproc=32768
    kern.ipc.somaxconn=8192              # Fila de TCP. Melhor para apache/sendmail
    # sysctl kern.openfiles              # Quantas descrições de arquivo estão em uso
    # sysctl kern.ipc.numopensockets     # Quantos sockets abertos estão em uso
    # sysctl net.inet.ip.portrange.last=50000 # O padrão é 1024-5000
    # netstat -m                         # Estatísticas de buffers de memória de rede

Veja o Capítulo 11 do FreeBSD handbookhttp://www.freebsd.org/handbook/configtuning-kernel-limits.html para mais detalhes. E também FreeBSD performance tuninghttp://serverfault.com/questions/64356/freebsd-performance-tuning-sysctls-loader-conf-kernel

Solaris

Os valores a seguir em /etc/system aumentarão o descritores máximo de arquivo por proc:

set rlim_fd_max = 4096               # Limite rígido nos descritores de arquivo para um single single proc
    set rlim_fd_cur = 1024               # Limite leve nos descritores de arquivo para um single proc

Runlevels (níveis de execução)

Linux

Uma vez inicializado, o kernel inicia o init o qual então inicia rc o qual inicia todos os scripts pertencentes a um runlevel. Os scripts são armazenados em /etc/init.d e são linkados dentro de /etc/rc.d/rcN.d com N número do runlevel.
O runlevel padrão está configurado em /etc/inittab. É normalmente o 3 ou o 5:

# grep default: /etc/inittab
    id:3:initdefault:

O The runlevel atual pode ser alterado com o init. Por exemplo, para ir do 3 para o 5:

# init 5                             # Entra o runlevel 5
  • 0       Shutdown and halt(encerrar e desligar)
  • 1       Modo Single-User (também S: Não inicia as daemons, ou seja, serviços)
  • 2       Multi-user sem rede
  • 3       Multi-user com rede
  • 5       Multi-user com X
  • 6       Reboot

(Nota do tradutor: Não foi mencionado o valor de número 4, porém não é aconselhado utilizá-lo, pois esse valor não tem definição por se tratar de uso somente para propósitos especiais.)

Use chkconfig para configurar os programas que serão inicializados ao boot em um runlevel.

    # chkconfig --list                   # Listar todos os scripts init
    # chkconfig --list sshd              # Reportar o status do sshd
    # chkconfig sshd --level 35 on       # Configura o e sshd para os nívies 3 e 5
    # chkconfig sshd off                 # Desabilitar o sshd para todos os runlevels

Debian e distribuições baseadas em Debian como o Ubuntu ou o Knoppix utilizam o comando update-rc.d para gerenciar os scripts de runlevels. O padrão é iniciar em 2,3,4 e 5 e encerrar em 0,1 e 6.

    # update-rc.d sshd defaults          # Ativar o sshd com os runlevels padrões
    # update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 .  # Com argumentos explícitos
    # update-rc.d -f sshd remove         # Desabilita o sshd para todos os runlevels
    # shutdown -h now (or # poweroff)    # Encerra e desliga o sistema

FreeBSD

A aproximação da inicialização do BSD é diferente do SysV, não há runlevels. O estado final do boot (single user, com ou sem X) é configurado em /etc/ttys. Todos os scripts do sistema operacional ficam localizados em /etc/rc.d/ e em /usr/local/etc/rc.d/ para aplicações de terceiros (third-party). A ativação do serviço é configurada em /etc/rc.conf e /etc/rc.conf.local. O comportamento padrão é configurado em /etc/defaults/rc.conf. O scripts respondem ao menos a start|stop|status.

# /etc/rc.d/sshd status
    sshd is running as pid 552.
    # shutdown now                       # Vá para o modo single-user
    # exit                               # Volta ao modo multi-user
    # shutdown -p now                    # Encerre e desligue o sistema
    # shutdown -r now                    # Reiniciar

O processo init pode também ser usado para alcançar um dos níveis estados de seguintes. Por exemplo # init 6 para reboot.

  • 0       parar (Halt) e desligar (power off) (signal USR2)
  • 1       Vai para modo single-user (signal TERM)
  • 6       Reinicia a máquina (signal INT)
  • c       Bloqueia logins futuros (signal TSTP)
  • q       Reverificar o ttys(5) file (signal HUP)

Windows

Inicia e para um serviço ou com o service name ou com "service description" (exibe o Painel de Controle de Serviços) como se segue:

net stop WSearch
    net start WSearch                    # inicia serviço de busca
    net stop "Windows Search"
    net start "Windows Search"           # mesmo que acima utilizando o descr.

Reconfigurar a senha de root

Método Linux 1

Ao carregamento de boot [boot loader (lilo or grub)], entre a opção de boot a seguir:

init=/bin/sh

O kernel montará a partição root e init iniciará o bourne shell
ao inves de rc e então um runlevel. Utilize o comando passwd no prompt e altere a senha e então reinicie. Esqueça o modo single user como se precisasse da senha para isso.
Se, depois de inicializar, a partição root estiver montada em somente leitura (read only), remonte em rw:

    # mount -o remount,rw /
    # passwd                             # ou exclua a senha do root (/etc/shadow)
    # sync; mount -o remount,ro /        # sincroniza antes para remontar em somente leitura (read only)
    # reboot

Método FreeBSD 1

No FreeBSD, inicialize em modo single user, remonte / rw e utilize passwd. Você pode selecionar o modo single user no menu de boot (opção 4) que é exibido por 10 segundos ao inicio. o modo single user lhe dará um shell root na partição /.

    # mount -u /; mount -a               # montará / rw
    # passwd
    # reboot

Método 2: Unixes e FreeBSD e Linux

Outros Unixes podem não deixar você ir embora com um simples truque init. A solução é montar a partição root de um outro OS (como um CD de recuperação) e alterar a senha no disco.

  • Boot um live CD ou CD de instalação em modo de recuperação que lhe dará um shell.
  • Encontre a partição root com o fdisk e.g. fdisk /dev/sda (Nota do tradutor: Bom, eu em particular prefiro utilizar o fdisk -l antes disso. Assim consegue identificar quais os discos caso não saiba qual é. Muito cuidado com a manipulação do fdisk)
  • Monte-o e use o chroot:
    # mount -o rw /dev/ad4s3a /mnt
    # chroot /mnt                        # chroot no /mnt
    # passwd
    # reboot

módulos do kernel

Linux

    # lsmod                              # Listar todos os módulos carregados no kernel
    # modprobe isdn                      # Para carregar um módulo (aqui no exemplo, isdn)

FreeBSD

# kldstat                            # Listar todos os módulos carregados no kernel
    # kldload crypto                     # Para carregar um módulo (aqui no caso, crypto)

Compilar o Kernel

Linux

    # cd /usr/src/linux
    # make mrproper                      # Limpe tudo, incluindo arquivos de configuração
    # make oldconfig                     # Reutilize o antigo .config se existente
    # make menuconfig                    # ou xconfig (Qt) ou gconfig (GTK)
    # make                               # Crie uma imagem do kernel  comprimido
    # make modules                       # Compile os módulos
    # make modules_install               # Instale os módulos
    # make install                       # Instale o kernel
    # reboot

FreeBSD

Opcionalmente atualize a árvore fonte (source tree) (no /usr/src) com o csup (como do FreeBSD 6.2 ou mais recentes):

# csup <supfile>

Eu utilizo o seguinte supfile:

*default host=cvsup5.FreeBSD.org  # www.freebsd.org/handbook/cvsup.html#CVSUP-MIRRORS
    *default prefix=/usr 
    *default base=/var/db
    *default release=cvs delete tag=RELENG_7
    src-all

Para modificar e reconstruir o kernel, copie o arquivo de configuração genérica para um novo nome e edite-o como necessário (você pode também editar o arquivo GENERIC diretamente). Para reiniciar a construção depois da interrupção, adicione a opção NO_CLEAN=YES para fazer o comando evitar que limpe os objetos já construídos.

 
    # cd /usr/src/sys/i386/conf/
    # cp GENERIC MYKERNEL
    # cd /usr/src
    # make buildkernel KERNCONF=MYKERNEL
    # make installkernel KERNCONF=MYKERNEL

Para reconstruir o sistema operacional por completo:

# make buildworld                    # Construa o sistema operacional por completo, mas não o kernel
    # make buildkernel                   # Utilize KERNCONF como acima se apropriado
    # make installkernel
    # reboot
    # mergemaster -p                     # Compare somente arquivos conhecidos por serem essenciais
    # make installworld
    # mergemaster -i -U                  # Atualiza todas as configurações e outros arquivos
    # reboot

Para pequenas mudanças na fonte você pode utilizar NO_CLEAN=yes para evitar reconstruir toda a arvore (tree).

# make buildworld NO_CLEAN=yes       # Não exclua os objetos antigos
    # make buildkernel KERNCONF=MYKERNEL NO_CLEAN=yes

Reparar (concertar) o grub

Então você quebrou o grub? Inicie (boot) a partir de um live cd, [encontre sua partição Linux sob /dev e utilize fdisk para encontrara partição Linux] monte a partição linux, adicione /proc e /dev e utilize grub-install /dev/xyz. Suponha que o Linux repousa no /dev/sda6:

# mount /dev/sda6 /mnt               # monte a partição Linux em /mnt
    # mount --bind /proc /mnt/proc       # monte o subsistema dentro de /mnt
    # mount --bind /dev /mnt/dev         # monte os dispositivos dentro de /mnt
    # chroot /mnt                        # altere o root para a partição linux
    # grub-install /dev/sda              # reinstale o grub com suas configurações antigas

Misc

Desabilitar a memória virtual do OSX (repita com o load para reabilitar). Sistema mais rápido, mas um pouco arriscado.

 
    # sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
    # sleep 3600; pmset sleepnow           # vá para o modo standby dentro de uma hora (OSX)
    # defaults write -g com.apple.mouse.scaling -float 8
                                         # aceleração de mouse do OSX (utilize p -1 para reverter)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *