Original em formato texto com marcações para conversão em HTML, processo automatizado com scripts e txt2tags.
Dicas em geral sobre log, exemplos de linha de comando, script e indicações em geral.
O log é o diário de bordo do sistema.
São registros de atividades no computador, geralmente são gravados em arquivos no formato texto, de forma abreviada e algumas são até codificadas, de qualquer forma a informação está lá, são registros de ocorrência que podem facilmente serem interpretados por quem conhece e lida com o sistema, pode acessar diretamente, converter para outros formatos, utilizar ferramentas amigáveis e técnicas que variam de acordo com o conhecimento de cada um.
Esta informação é utilizada para diversos fins. O formato e detalhamento depende do programa e da configuração para gerar log, alguns programas não geram registros em arquivo enquanto outros permite configurar o detalhamento ou filtrar o que deseja salvar em arquivo, tudo depende de cada programa e configuração.
Quanto ao uso fica por conta do administrador, da empresa, do conhecimento técnico e outros fatores. Na minha opinião, todo administrador tem que saber lidar e manipular arquivos de log, além de monitorar o sistema. Deve usar como sendo a maior fonte de informação na solução de problemas.
Estas informações pode ser usadas para diversos fins; diagnostico do sistema, auditoria sobre o uso do computador, gerar relatorios com dados estatísticos, perícia, cobrança pelo uso do sistema e muitos outros fins...
Não confundir log com mensagens de erro, até parece que log é local de avisos ou mensagens de erro, sempre que alguém tem algum problema e pede ajuda, a resposta padrão é "procure nos logs", a razão é muito simples, a informação está lá, não importa se é boa ou ruim, se é mensagem de erro ou não. O que importa é saber interpretar estes registros, encontrar pistas que ajude encontrar a solução do problema. Considere que a falta de informação também é informação, pelo fato de algum programa não gravar o que devia no log já é indicio de que algo errado está acontecendo.
Na caixa de pesquisa do Google encontra diversas definições, faça um teste com:
define:log
Resultados na linha de comando e programas que exibem os resultados no console podem ser redirecionados para arquivo, muito útil em aplicativos que não geram logs mas geram mensagens no console, estas mensagens podem ser salvas em arquivo texto.
Para salvar os resultados de um comando em arquivo, acrescente no final da linha de comando o sinal de maior ">" e um nome de arquivo.
Ou utilize ">>" pra acrescentar as mensagens no final de um arquivo existente.
Tanto com ">" ou ">>" todas as mensagens da tela (console) são desviadas para o arquivo indicado, alguns aplicativos precisam incluir o modo verbose para gerar mensagens no console, por exemplo no comando tar é "-v" ou "v" manda as mensagens para o console que poderá serem redirecionadas para arquivo, o arquivo criado poderá posteriormente servir para análise, comparação e etc.. teste com estes exemplos:
ls > logdols.txt tar zcvf backuplog.tar.gz /var/log > logdotar.txt
a linha com o comando tar inclui a diretiva (v), modo verbose, exibir mensagens. Criará dois arquivos; backuplog.tar.gz com o conteúdo do diretório /var/log contendo os dados, o redirecionamento (> logdotar.txt) salva as mensagens do console no arquivo logdotar.txt que pode ser editado e pode ver as mensagens emitidas como nome dos arquivos, mensagens de erro e etc...
Quando o arquivo já existir e quiser manter as informações já existentes, acrescentar novas mensagens no final deste, use ">>" dois sinal de maior, acrescentar as novas mensagens no final do arquivo.
ls >> logdols.txt tar zcvf varlog.tar.gz /var/log >> logdotar.txt sobrepor > inserir >>
Copias entre prompt e editores.
Copiar o resultando de um comando do prompt ou parte do texto que está no terminal para um arquivo, muito útil para guardar em arquivo ou enviar para quem estamos pedindo ajuda, enviar por e-mail ou guardar para futura analise.
Passe o mouse com o botão acionador pressionado sobre o que quer copiar isto vai marcar a área como selecionada e não precisa de nenhum comando adicional, em em outro terminal ou no ambiente gráfico cole o texto, use o botão auxiliar do mouse ou CTRL+V para colar, em outro terminal ou no vi posicione o cursor onde deseja colar, clique com o botão auxiliar ou o botão do meio do mouse para colar onde está o cursor.
Usando um terminal aberto a partir do ambiente gráfico, após fazer a seleção com o mouse precisa dar um clique com botão auxilar pra copiar.
Sempre que colar um comando ou linha de comando no prompt da linha de comando precisa dar um enter pra executar.
Pode copiar e colar nos dois sentidos, muito útil pra executar longas linhas de comandos, fazer backup de comandos executados e também dos resultados de comandos, principalmente das mensagens de erro no console, quando falhar o botão auxiliar tente com o botão do meio.
Aplicativos do ambiente gráfico travando ou com problemas que não consegue pegar a mensagem de erro.
Inicie (execute) o programa pelo terminal para acompanhar as mensagens de erro.
Quando iniciar algum programa e não retornar mensagem de erro, travar ou não acontecer nada, abra um terminal (konsole) e digite o nome do programa, exemplo pra iniciar o konqueror a partir da linha de comando, abra um terminal e na linha de comando digite:
konqueror
Acompanhe as mensagens que são exibidas no terminal, em muitos casos isto ajuda na solução de problemas. pode selecionar com mouse para copiar e colar.
Aproveitando a dica, quando precisar executar o konqueror como root, basta tornar root em um konsole e digitar konqueror, nesta sessão do konqueror e somente nela e suas abas você estará com os poderes de root.
last e lastlog - Informação sobre os últimos login
Last - informações sobre quem fez login no sistema
lastlog last ultimos 20 last -20 Manual man last man lastlog
pidof - Numero do processo
pidof nome-do-pacote - retorna somente o numero do processo, ex: para ssh:
pidof sshd
851
para o apache:
pidof httpd
2674 2551 2550 2549 782
ps - o comando ps muito útil para ver o que está rodando.
ps ax
ou
ps aux
ps -A | more
mostra tudo que está rodando na maquina inclusive numero do processo.
ps -A | grep pacote, exibe numero do processo que está rodando, ex: pro ssh.
ps -A | grep ssh
835 ? 00:00:00 sshd
ps -aux | grep evolution zago 1796 0.1 2.2 22980 10824 ? S 00:55 0:05 evolution zago 1811 0.2 4.3 56880 20776 ? S 00:55 0:11 evolution-mail -- zago 1820 0.0 1.6 22328 8044 ? S 00:55 0:00 evolution-address zago 1824 0.0 1.3 21864 6496 ? S 00:55 0:00 evolution-calenda zago 1829 0.0 1.1 19396 5696 ? S 00:55 0:00 evolution-alarm-n zago 1831 0.0 1.9 21980 9468 ? S 00:55 0:00 evolution-executi zago 1841 0.0 4.3 56880 20776 ? S 00:56 0:00 evolution-mail --
mostrar colunas selecionadas com awk.
ps aux | awk -F' ' '{print $1,$5,$11}'
filtro por usuário, mostrar usuário, PID e comando
ps aux | awk -F' ' '{print $1,$5,$11}' | grep root
-v -vv - modo verbose
Muitos aplicativos permitem o uso das opções -v ou -vv, modo verbose, faça um teste e compare os resultados destes comandos:
lspci lspci -v lspci -vv
O resultado do primeiro comando é resumido, com (-v) já tem mais detalhes e com (-vv) tem muito mais detalhes no resultado.
Nem todos os pacotes tem este recurso, nem todos permite (-vv), como pode ter outro significado, exemplo no comando ls que tem a função de ordenar nomes de arquivos, procure (-v) no manual do ls.
Alguns exemplos do uso de (-v).
Comando tar, (man tar) tem esta informação: -v, --verbose mostra a lista dos arquivos processados Comando rm, (man rm) tem esta informação: -v, --verbose Imprime o nome de cada arquivo antes de apagá-lo. Comando rpm, (man rpm) tem esta informação: -vv Exibe um monte de informações bizarras de depuração. Exemplo de uso deste comando: rpm -rebuilddb -vv
lsof
lista todos os file descriptors abertos no sistema.
Lsof - (List Open Files) - listagem em tempo real de informações à respeito de arquivos abertos ou utilizados por processos em execução.
lsof -u nomedelogin
ver quais os arquivos em uso por um usuário, no comando abaixo estou procurando pelos arquivos em uso pelo usuário zago e depois pelo root
# lsof -u zago COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME kdeinit 1886 zago 6u unix 0xcb8a3540 39710 socket kdeinit 1886 zago 7r FIFO 0,6 39713 pipe kdeinit 1886 zago 8w FIFO 0,6 39713 pipe kdeinit 1886 zago 9u unix 0xc18f7560 39714 socket # lsof -u root COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root cwd DIR 3,2 4096 2 / init 1 root rtd DIR 3,2 4096 2 / init 1 root txt REG 3,2 27132 311403 /sbin/init init 1 root mem REG 3,2 100434 163842 /lib/ld-2.2.4.so init 1 root mem REG 3,2 1249256 163849 /lib/libc-2.2.4.so Copiei apenas algumas linhas para exemplo do resultado.
procurar processos, exemplo para o ssh que está rodando.
lsof | grep ssh sshd 835 root cwd DIR 3,2 4096 2 / sshd 835 root rtd DIR 3,2 4096 2 / sshd 835 root txt REG 3,2 279644 360667 /usr/sbin/sshd Copiei apenas algumas linhas para exemplo do resultado.
Procurar por processos ouvindo nas portas.
lsof -i lsof -i | grep LIS lsof -i | grep LIS portmap 888 bin 4u IPv4 1176 TCP *:sunrpc (LISTEN) sshd 1070 root 3u IPv4 1392 TCP *:ssh (LISTEN)
Procurar por usuário e arquivo especifico ou processos.
lsof -u zago -i | grep LIS lsof -u zago -i | grep arq-que-procuro
lsof | grep /mnt/win
ver se tem alguém com algum arquivo aberto em /mnt/win
fuser - semelhante ao lsof só que com outras características veja o resultado da pesquisa na porta 22 (ssh):
fuser -v 22/tcp USER PID ACCESS COMMAND 22/tcp root 1070 f.... sshd
conexões - quem está logado na maquina - man who
who zago pts/0 Mar 21 20:05 zago pts/1 Mar 22 00:56 who -q root zago # users=2 -q = listar usuários e contar
Usuário logado mais de uma vez, contar numero de login simultâneo.
who | grep zago | wc -l nome de login em variável LOGNAME=zago who | grep $LOGNAME | wc -l ou who | grep -c $LOGNAME
whoami - exibe o login do usuário - quem está logado no terminal.
Ultimos comandos digitados digite:
history
ou edite .bash_history dentro do seu home.
Para ver os últimos comandos usados por outro usuário precisa ao menos ter direito leitura no diretorio daquele user ou estar logado como root para editar o arquivo .bash_history no home do usuário, use seu editor preferido ou com "vi" ex.:
vi /home/diretoriodouser/.bash_history
usuários com login na maquina, terminais abertos, veja o comando "w":
w 11:01pm up 3:07, 3 users, load average: 0.05, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT zago tty1 - 7:55pm 3:05m 0.24s 0.03s xinit /etc/X11/xinit/kdeinitrc -- /home zago pts/0 - 8:54pm 1.00s 0.05s 0.01s w zago pts/1 192.168.1.35 10:15pm 14:03 0.35s 0.30s vi som-alsa.txt
Edite o arquivo passwd em /etc para saber quais os usuários cadastrados na maquina.
Dentro do home de cada user fica o cache de navegação da internet, também separados por navegador, por exemplo o mozzila tem seu cache em:
~/.mozilla/default/*/Cache
alguns comandos e resultados.
uname -a
diversas informações sobre o sistema.
uname -r
versão do kernel
#cat /etc/versão-conectiva Conectiva Linux 8 exibe versão do Conectiva. veja também: cat /etc/issue cat /etc/issue.net cat /proc/version cat /etc/*-release
procure no diretório /etc pelos arquivos com o nome *-realese ou versão-*, ou nomes semelhantes.
uptime
ver media de uso nos últimos minutos
service --status-all
mostra o que está rodando e o que está parado.
chkconfig --list
listar todos os (daemon) serviços disponíveis
hostname --fqdn
ver o nome da maquina local.
ifconfig -a
dados da placa de rede
/sbin/ifconfig -a
cat /etc/hosts
ver o conteúdo de hosts
netstat
informa os estado das suas conexões de rede netstat -naut mostra as portas que estão abertas
netstat -ta
netstat -na
exibe a lista de IP de quem está conectado na maquina.
netstat -nap
exibe também o PID da conexão
netstat -nputa
exibe somente as portas e PID
netstat --init -ac
ou netstat -ac
Exibe as conexões ativas em tempo real, não precisa dar o comando novamente para atualizar os resultados.
file
- determina o tipo do arquivo
O comando file retorna o formato real do arquivo.
quando não souber qual o tipo de arquivo aplique o comando file para identificar qual é o tipo de arquivo, como no Linux não existe uma terminação para associação do nome do arquivo com a aplicação, estes podem ser renomeados dificultando identificar qual é o tipo de arquivo somente pelo nome, o comando file retorna esta identificação ex.:
file arquivotal
$ file br.Ispell.tgz br.Ispell.tgz: gzip compressed data, deflated, original filename, `br.Ispell.tar', last modified: Sat Sep 14 10:53:40 2002, os: MS-DOS
Pacotes RPM
--version
, funciona para exibir a versão, funciona em alguns pacotes somente.
/sbin/ifconfig --version net-tools 1.60 ifconfig 1.42 (2001-04-13)
whereis
saber onde esta instalado o pacote, ex:
whereis ping whereis samba
RPM
rpm -qa | grep pacote
retorna o nome do pacote se instalado
rpm -qla | grep pacote
echo $PATH
exibe o caminho de pesquisa
ver o que está acontecendo na maquina.
[root@zago /etc]# cat /proc/net/sockstat sockets: used 206 TCP: inuse 2 orphan 0 tw 0 alloc 2 mem 0 UDP: inuse 1 RAW: inuse 0 FRAG: inuse 0 memory 0
Procurar palavra ou string especifica em arquivos ou diretórios.
grep - é interessante para localizar uma palavra dentro de um arquivo ou em todos os arquivos de um diretório.
Alguns exemplos de uso do grep, contar quantas ocorrências da palavra suse no log do Apache, (modifique estes exemplos para o termo e caminho do log que deseja consultar).
grep -wc suse /var/log/apache2/access_log
Mostrar somente os ultimos 20 registros que contenha "suse"
grep "suse" /var/log/apache2/access_log | tail
Ou especifique quantos deseja, exemplo para listar os ultimos 50
grep "suse" /var/log/apache2/access_log | tail -50
Somente os 5 primeiros
grep "suse" /var/log/apache2/access_log | head -5
Criar um arquivo contendo somente registros que contenha "suse"
grep "suse" /var/log/apache2/access_log > /tmp/access_log.so_suse
Remover as ocorrências suse, inverter a seleção com -v, criar novo arquivo sem os registros que contenha "suse"
grep -v "suse" /var/log/apache2/access_log > /tmp/access_log.sem_suse
Outro formato de comando com o mesmo resultado acima.
cat /var/log/apache2/access_log | grep -v "suse" > /tmp/access_log.sem_suse
Procurar a palavra 3Com em todos os arquivos do meu diretório, devo informar o caminho ou entrar no diretorio e digitar grep 3Com *
cd /home/zago
grep 3Com *
ou
grep -r 3Com /home/zago
Este mesmo critério pode usar em /var/log e procurar nos arquivos de log por uma palavra especifica.
outro exemplo com o mesmo resultado:
find /home/zago -depth -type f -exec grep "3Com" {} \;
ou
find /home/zago -type f -exec grep 3Com {} /dev/null \;
logrotate é extremamente configurável, permite rotacionar os arquivos de log e muito mais....
Na maioria das distro já vem configurado para rotacionar os logs, algumas rotacionam no domingo, mas isto não é regra, alguns pacotes podem ter a configuração padrão bem diferente, tem que observar nos arquivos de configuração e no seu sistema a periodicidade que os logs estão sendo zerados, criação novos arquivos compactados
Geralmente são mantidos os ultimos 4 arquivos compactados, mas isto também é configurável e depende do seu sistema. Os mais antigos são removidos, caso deseja manter os registros por mais tempo, crie script para fazer copia deles em outro local, pode incluir os logs na sua rotina de backup.
Como exemplo o log do Squid no CentOS 5 /var/log/squid/access.log, todo domingo as 4 horas da manhã o arquivo de log da semana é rotacionado, cria um um novo arquivo compactado no formato access.log.1.gz e zera o access.log, isto pode ser alterado para diario ou mensal, o mesmo acontece com logs de outros pacotes.
O local do arquivo de configuração pode mudar conforme a distro ou configuração do usuário.
O local do arquivo de log na maioria dos pacotes tem a indicação do local .conf do pacote.
Alguns permitem alterar o nível de detalhamento, como exemplo a opção debug no Samba.
Um ponto de partida é verificar as configurações do pacote desejado e também listar todos arquivos e diretórios que inciam com log dentro de /etc/
ls -la /etc/log*
Observe dentro /etc/logrotate.d script especifico de alguns pacotes.
Veja também o daemon que gera os logs é syslogd e seu arquivo de configuração fica em:
/etc/syslog.conf
Não esqueça do manual, status e configuração deste daemon.
man syslog.conf
A configuração do logrote fica em: /etc/logrotate.conf alguns serviços já vem configurado para rodar semanalmente (week), pode alterar o periodo de execução destes scripts veja no FAQ:
http://www.zago.eti.br/agenda.html
Limpar arquivos log
Alguns pacotes criam o arquivo de log quando não encontrado, mas isto deve ser evitado, pode até testar no seu sitema, mover para outro local ou apagar os arquivos de log para ver se o sistema cria novamente.
Prefira fazer backup em outro local e configurar a rotação pelo sistema.
Outras maneiras de limpar totalmente o arquivo de log, tanto em linha de comando ou script.
Pode editar para remover parte do log, o mais prático é fazer bakcup e zerar o arquivo.
Como existem vários arquivos de log, um para cada serviço, conforme a versão do pacote também muda o nome e local dos log
Tente adaptar os exemplos abaixo para sua instalação.
Simplesmente limpar o conteúdo do arquivo
echo "" > arquivo.txt
echo "" > /caminho/arquivolog
echo "" > /var/log/arquivo.log
apagar
rm /var/log/messages?????
criar um novo arquivo vazio
touch /var/log/messages
ou
echo -n > /var/log/messages
cat > /var/log/messages
crtl+d
tail -f /var/caminho/arquivo.de.log
exibe os registros de log no momento que ocorrem, Just-in-time!.
tail -f
exibe em tempo real os registros sendo gravado nos nos arquivos de log, faz somente uma copia do registro para o o console ao mesmo tempo que estão entrando no arquivo de log.
tail -f
apresenta as últimas linhas de um arquivo qualquer, continua exibindo as novas entradas (registros) conforme as mesmas vão sendo geradas, usa-se normalmente para monitorar logs de sistema.
CTRL+C
encerra e sai.
Acompanhe em tempo real o que é registrado em /var/log/messages
tail -f /var/log/messages
Acompanhar log do squid.
tail -f /var/log/squid/access.log
Arquivos de log podem ser acessados ou manipulados por outras ferramentas, são arquivos em formato texto, pode copiar para outro local ou maquina, editar com vi ou outro editor, manipular com script, filtrar o arquivo a procura de expressões ou palavras especificas.
Exemplos de linha de comando.
Exibir as ultimas 100 linhas do registro e sair do tail
tail -100 /var/log/httpd/access_log
Rolar a tela (scroll) com more
tail -100 /var/log/messages | more tail -100 /var/log/squid/access.log | more
acompanhar o log do apache
tail -f /var/log/httpd/access_log
Somente os primeiros registros do log
Mostrar as primeiras n linhas de um arquivo
# head -n nome do arquivo (default n=10)
Exemplo; somente as primeiras 20 linhas de log do squid.
head -n 20 /var/log/squid/access.log
Somente os ultimos registros do log
# tail -n /caminho/nome-do-arquivo (default n=10)
tail -n 1 arquivoquevcquerler
isso irá ler a última linha e cair imediatamente para a shel. Se vc acha importante ficar aguardando sempre a última linha...
tail -f -n 1 arquivoquevcquerler
tail -f -n 1 /var/log/httpd/access_log
acompanhar o log do servidor de e-mail # tail -f /var/log/maillog
Acompanhar mais de uma arquivo de log, exemplo para acompanhar as entradas em todos arquivos _log de /etc/apache
tail -f /var/log/apache/*_log
tail -F /var/log/apache/*_log
tail -f /var/log/apache/*_log | grep 192.168.1.53
Abrir também o /var/log/messages, observe que tem um espaço separando os dois endereços.
tail -f /var/log/apache/*_log /var/log/messages
Simultaneamente todos os logs do Samba.
tail -F /var/log/samba/*.log
+X Pegar tudo de determinada linha em diante, desde linha informada até o fim
tail +X /caminho/arquivo
Exemplo para pegar tudo a partir da linha 200 para baixo.
tail +200 /var/log/maillog
Listar o arquivo de log (arquivo inteiro) e continuar exibindo o que vai entrando.
tail -n+1 -f /var/log/apache2/access_log
Filtrar a palavra samba nos ultimos 100 registros e continuar exibir o que vai entrando no log..
tail -n100 -f /var/log/apache2/access_log | grep samba
Com -n+1 aplica o filtro no arquivo de log e continua monitorando.
tail -n+1 -f /var/log/apache2/access_log | grep samba
tail -n+1 equivale um cat no arquivo, os dois comandos abaixo tem o mesmo resultado.
tail -n+1 /var/log/apache2/access_log
cat /var/log/apache2/access_log
Veja também as opções pra visualizar relatorios em ambiente gráfico, por exemplo o sarg pra gerar relatorios do Squid em HTML pra visualizar via web no seu navegador, rico em detalhes e bem organizado, webalizer pro apache e muitos.
Exemplo de uso do tail com awk.
Listar IP e site sendo registrados nos log do Squid.
tail -f /var/log/squid/access.log |awk '{print "IP: "$3" site: "$7}'
O log pode ser diferente conforme a versão do Squid, o exemplo acima funciona no SUSE 10.1, ajuste as colunas "$3" "$7 conforme os logs no seu sistema, altere para usuários ou outra coluna que deseja exibir.
Listar determinada coluna (campo) de todo arquivo, altere ($7) neste exemplo
awk '{print $7}' access.log
awk '{print $7}' access.log >> /tmp/colunalog.txt
Listar mais de uma coluna
awk '{print $8" "$5" "$7}' access.log
Listar colunas com determinada condição, como exemplo, listar somente endereços acessados pelo IP 192.168.1.53
awk '{if ($3 == "192.168.1.53") print $7}' access.log
Onde $3 pega o terceiro campo do registro de log, no caso do squid é o IP e compara com o IP informado entre aspas, quando coincidir lista o conteúdo do campo 7 (coluna $7).
watch - execute a program periodically, showing output fullscreen
Executa periodicamente um programas, script ou comando, ideal pra ficar repetindo o resultado de um comando.
CTRL+C
- Encerrar e sair.
man watch
página do manual:
Alguns exemplos:
mostra o que o usuário linux está fazendo
watch "ps aux | grep nome_do_usuário"
Pode substituir nome_do_usuario por qualquer opção disponível no resultado de ps aux
, exemplo para ssh
watch -n1 "ps aux | grep ssh"
Mostrar arquivos criados por determinado usuário:
watch -d 'ls -l | fgrep joe'
Mostrar arquivos sendo criado em um diretório:
watch -d 'ls -l /tmp'
O tempo de atualização é 2 segundos, pode usar a opção -n 1 para atualizar a cada 1 segundo, exemplo:
watch -n1 "ps aux | grep zago"
Com netstat, exibir as conexões por porta, exemplo com a porta 80 (Apache2 SUSE 10.1)
watch -n1 "netstat -na | grep ':80 ' | egrep -i 'ESTABLISHED'"
Monitorar outras portas, troque ':80 ' pela porta desejada; 22 ssh, 3128 Squid e assim por diante. Troque também a última condição 'ESTABLISHED' pela correspondente na porta de pesquisa.
Exemplo para Squid no CL10
watch -n1 "netstat -na | grep ':3128 ' | egrep -i 'ESTAB|ESPERANDO'"
watch vem no pacote procps (rpm -qi procps)
rpm -qf /usr/bin/watch procps-3.1.15-55011cl
Veja também sobre tmpwatch
tmpwatch - removes files which haven't been accessed for a period of time
Veja mais no manual: man tmpwatch
Ele vem no pacote tmpwatch
rpm -qa | grep watch tmpwatch-2.8.4-44077cl
Por default conta o tempo informado em segundos.
sleep 90
provoca uma espera de 90 segundos.
sleep 300
O comando acima espera por 300 segundos, tem o mesmo tempo de 5 minutos igual o comando abaixo.
sleep 5m
Faça testes; use o tempo mais uma destas opções, s=segundos, m=minutos, h=horas e d=dias
esperar 5 minutos ou 5 horas.
sleep 5m sleep 5h
Exemplo de um script com espera 3 segundos para executar novamente o comando smbstatus.
#!/bin/sh while true; do clear smbstatus -S sleep 3 done
man tee
tee - read from standard input and write to standard output and files
Ideal para redirecionar a saida para arquivo.
Saída na tela e no arquivo de log ao mesmo tempo, salva no arquivo indicado.
ls | tee arquivo.log
ls -la | tee arquivo.log
tee vem no pacote coreutils
rpm -qif /usr/bin/tee Name : coreutils
Insira linhas para salvar o conteúdo de variáveis em arquivo, use o echo para salvar comentarios e anotações. Alguns exemplos.
echo " executou a linha tal " >> arquivo.log
echo "conteúdo da variável" >> arquivo.log
echo $VARIAVEL" >> arquivo.log
Verifique e salve o retorno de $?, faça testes com $?, use o if para conferir se executou o comando com sucesso e salve mensagem correspondente
echo $? >> arquivo.log
echo "comando executado com sucesso!" >> arquivo.log
Direcionar toda a saída de um script para arquivo, mensagem de erro ou padrão ( stdout e stderr).
Pode aplicar a um comando, linha de comando ou script, algumas formas de uso.
Redirecionar stdout e stderr para arquivo:
Redirecionar toda saida para um único arquivo
comando > arqsaida.log 2>&1
Redirecionar saída para arquivos distintos
comando 1> arqstdout.log 2> arqstderr.log
Descartar tudo, jogar no buraco negro /dev/null
comando > /dev/null 2>&1
Execute o script com a opção -xv para exibir as linhas de comando do seu script.
bash -xv seu-script.sh
Redirecione a saída para arquivo.
bash -xv seu-script.sh 2> /tmp/logscript.txt
script <arquivo_script> faz copia do conteúdo da tela em arquivo_script até que você digite o comando exit.
Útil para depuração.
Não confundir o nome do comando com arquivo de comandos que também recebe o nome de script, aqui o nome do comando é script mesmo.
No CL10 ele vem no pacote util-linux, veja copia de parte do man no CL10
script - gera um arquivo texto da sessão atual SINOPSE script [-a] [arquivo] DESCRIÇÃO script gera um arquivo texto de tudo que é impresso na tela. É útil para estudantes que precisam de uma cópia impressa de uma sessão inter- ativa, já que o script pode ser impresso mais tarde com lpr(1). Se o parâmetro arquivo é fornecido, script grava todos os diálogos em arquivo. Se nenhum nome de arquivo é fornecido, o script é gravado no arquivo typescript. OPÇÃO -a Adiciona saída a arquivo ou typescript, mantendo o conteúdo ini- cial. O script termina quando se encerra o shell (control-D para sair do Bourne SHell sh(1)), e exit, logout ou control-d (se ignoreeof não está definido) para C-shell, csh(1)).
Direcionar toda a saída de um script para arquivo, mensagem de erro ou padrão ( stdout e stderr).
Faça testes com (exec), acrescente como no exemplo abaixo, na segunda linha do script ou a partir do ponto que deseja registrar.
Redireciona automaticamente todas as saídas do script para arquivo.log
Use seu editor para ver o que tem em arquivo.log
#!/bin/bash exec 1>> arquivo.log 2>&1 #seus comandos a partir daqui..
exec 2 - com resultado no console e arquivo.
exec 2>> arquivo.log 2>&1
Outros exemplos....
#!/bin/sh exec 2>> arqlog.txt #seus comandos a partir daqui.. exit
sobre tráfego.
iptraf - análise do tráfeco de dados em redes
mrtg
ntop - display top network users
Instale o pacote ntop, linha de comando para instalar via smart
smart install ntop
Precisa definir uma senha, execute.
ntop -A -u wwwrun
forneça uma senha e depois inicie o serviço
rcntop start
Por default vem configurado para aceitar conexão somente de localhost:3000, para alterar e permitir acesso via rede local, edite o arquivo de configuração
/etc/sysconfig/ntop
Acrescente a opção NTOPD_PORT="192.168.1.2:3000"
, exemplo.
NTOPD_PORT="127.0.0.1:3000" NTOPD_PORT="192.168.1.2:3000"
Reinicie o serviço rcntop restart
Depois desta alteração aceita conexão remota, indique na URL IP:3000
ou via konqueror
acessar maquina remota, quando falhar o acesso via IP na URL. Faça conexão via ssh -X e execute konqueror, depois informe na URL
Caso tenha problema de acesso ou mensagens de erro, pare o serviço e reinicie novamente.
rcnotp stop ntop -A -u wwwrun rcntop start
manual (ajuda)
man ntop ntop --help
apt-get install ntop
ls -l /usr/share/ [root@faqcl10 root]# ls -l /usr/share/ntop total 32 drwxr-xr-x 3 root root 4096 2007-06-01 05:34 html -rw-r--r-- 1 ntop ntop 12309 2007-06-01 05:50 ntop_pw.db -rw-r--r-- 1 ntop ntop 12288 2007-06-01 05:48 prefsCache.db
ntop -P /usr/share/ntop -u ntop -A
ntop -A
or
ntop --set-admin-password
service ntop start
chown ntop.ntop /var/lib/ntop/prefsCache.db
service ntop start
chown ntop.ntop /var/lib/ntop/ntop_pw.db
[root@faqcl10 init.d]# service ntop start Iniciando Network traffic monitor (ntop): [ OK ]
strace - Mostra as chamadas de sistema de um processo rodando
Instale o pacote strace
Consulte o manual ``man strace ``
strace - trace system calls and signals
strace ls -la
Aplicativos do ambiente grafico, execute a partir da linha de comando, algo neste formato.
strace firefox http://www.zago.eti.br
Conforme a versão do apache o log pode ser diferente, exemplo de uma linha de log no SUSE 10.1
200.204.198.164 - - [28/May/2006:19:58:05 -0300] "GET /zago/A-menu-samba.html HTTP/1.1" 200 24028 "http://www.google.com.br/search?q=samba+modelo+smb.conf&hl=pt-BR&lr=lang_pt&start=40&sa=N" "Mozilla/5.0 (X11; U; Linux i686 (x86_64); pt-BR; rv:1.8.0.2) Gecko/20060415 SUSE/1.5.0.2-0.1 Firefox/1.5.0.2"
Registro muitos detalhes, tem varios meios de acesso a esta informação nos logs, pode gerar relatórios, estatisticas ou consultar em tempo real com tail, o local e nome do arquivo pode mudar conforme a distro e versão, alguns exemplos de linha de comando no SUSE 10.1.
tail -f /var/log/apache2/access_log tail -100 /var/log/apache2/access_log tail -f /var/log/apache2/access_log | grep samba tail -1000 /var/log/apache2/access_log | grep samba | wc -l
smbstatus
retorna usuários e processos, PID, arquivos acessados e outros detalhes.
o smbstatus gera uma parte no formato:
Service uid gid pid machine
e logo em seguida relata o PID e os arquivos em uso
Usuários cadastrados no samba veja:
/etc/smbusers
/etc/smbpasswd
log do Samba, o local é definido no smb.conf, algo assim:
log file = /var/log/samba/log.%m
Indicando onde será gravado o log.
# Log level (0=none, 1=normal, 2 and above not recommended for production box)
debug level = 1
para depuração de erros pode ser interessante usar um valor acima de 2, não deixe permanente porque pode gerar arquivos grandes e degradar o desempenho.
Registro do hardware detectado no boot, ver as mensagens da inicialização.
dmesg | less dmesg | grep hd dmesg | grep CDROM dmesg | less dmesg | more fdisk -l more /proc/partitions Informações dos dispositivos pci /sbin/lspci -v lspci -v lspci -vv interrupções (IRQ) usadas cat /proc/interrupts Informação sobre a CPU cat /proc/cpuinfo
temperatura e outras informações de hardware, instale o pacote
lmsensors, ou lm_sensors, ou ksensors.
lmsensors - monitorar temperatura da CPU.
use o man seguido do nome do aplicativo, o man é sua maior fonte de informação, veja o resultado dos comandos abaixo:
man syslog man syslogd man logrotate man lsof man tail man fuser man dmesg man lspci
Não esqueça do Google, para refinar a pesquisa, inclua também expressões howto, tutorial, ~linux Re., faça combinação entre eles, exemplo:
howto logrotate ~linux tutorial syslog comando tail log squid Re: ~linux