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)