Categorias
Linux

Capturas de telas garantidas

Normalmente temos problemas para ilustrar jogos porque os jogos toma o monitor e o teclado para si e, a não ser que o desenvolvedor tenha incluído uma função interna para captura de tela, pode ser muito difícil tirar o conteúdo da tela e salvá-la em um arquivo. Ainda que tenha um modo de jogo em janela, como com Cold War, você ainda precisa encontrar uma maneira de retirar o controle do jogo do teclado e dar controle novamente para o sistema operacional antes que possa usar o utilitário do Gnome ou do KDE que capturam tela.

Há uma solução para quando você não consegue escapar das garras de uma aplicação que tenha tomado conta da sua sessão X Windows. A dica é que ainda quando você não pode ter sua área de trabalho de volta, você permanece tendo um dos terminais virtuais esperando pacientemente em segundo plano. Pressionando Ctrl+Alt+F1 troca-se da sua área de trabalho para o login baseado em texto do primeiro terminal virtual. Estes terminais remontam para quando Unix era um sistema predominantemente multi-usuário e o 'virtual' se referia ao fato de que estavam numa máquina local ao invés de um terminal burro.

Outros terminais virtuais são acessível substituindo-se F1 por F2-F6 e você pode retornar à sua área de trabalho ao acessar ao sétimo terminal virtual, Ctrl+Alt+F7, que também é a sua sessão X em execução. O que isso tem a ver com capturar telas? Bem, já que você tem uma linha de comando, agora é possível capturar a tela usando uma das várias ferramentas de ImageMagick que já está instalado por padrão no seu sistema.

O comando:

chvt 7;sleep 10;import -display :0.0 -window root image.png

Troca-se para o terminal virtual que está executando o X (chvt 7), aguarda 10 segundo e então usa o comando import do ImageMagick para retirar o conteúdo da tela para image.png. Maravilha!

Mais em Truques de linha de comando.

Categorias
Linux

Pinte por números

Todos gostamos de um pouco de cor em nossa vida e apenas porque a linha de comando do Linux é uma interface texto para os trabalhos mais internos do seu sistema, isso não quer dizer que precisamos sofrer com textos monocromáticos. Esta dica vai lhe mostrar como escapar disso!

Há várias maneiras de adicionar cores e uma das mais populares é acompanhada da ajuda de um comando chamado dircolor. Se esta escrita lhe ofende (leitores americanos), você sempre poderá usar um link simbólico como o a seguir para amenizar:

sudo ln -s /usr/bin/dircolors /usr/bin/dircolours

Dircolors fará com que tipos de arquivos diferentes apareçam com várias cores diferentes até mesmo com o humilde comando ls. Se você executar o comando dircolors por si próprio, a saída é uma confusão de tipos de arquivos e códigos secretos. Será algo como pi=40;33: ou *.ogg=01;35:. A primeira parte de cara entrada é o tipo de arquivo e a segunda parte (após o símbolo =) consiste de dois valores que representam as cores da fonte e do plano de fundo. Se ficar confuso com as abreviações cripticas da primeira parte, digitar dircolors --print-database provê uma saída mais clara - revelando que pi=40;33: colorirá o símbolo 'pipe' (pi) com a cor de fundo preto (40) e cor da fonte amarelo (33), por exemplo.

Se olhar com mais detalhes a saída de dircolors verá que inicia com LS_COLORS= e termina com export LS_COLORS. É porque o comando não faz nada mais do que definir um grande variável de ambiente com sua lista de tipos de arquivos e cores. Você pode salvar esta saída e adicioná-la ao final do seu arquivo .bashrc para que as cores sejam usadas automaticamente.

Mais em Truques de linha de comando.

Categorias
Tropeçando

Tropeçando 45

Ubuntu 10.10 64 Bits Oracle 11G R2 64 Bits " /sbin

10 super useful tools for JavaScript developers | CatsWhoCode.com

jQuery Proven Performance Tips And Tricks (Slides)

Linux: Teste de estresse entre software livre e soluções proprietárias [Artigo]

Joint - JavaScript diagramming library

How big is my database and my other stuff - Postgres OnLine Journal

Vídeo-aula: Expressões Regulares – Quantificadores Gulosos | AURELIO.NET

Categorias
Linux

Ressureição de Lázaro

É horrível quando recebemos uma mensagem como

No usable partitions/No OS found

da útil entrada da BIOS. Normalmente temos alguns segundos para perceber - seu disco rígido falhou, ou está falhando, e não há mais boot para o sistema operacional. Há várias razões para que isso aconteça e cada uma com seu potencial de causar perda de dados. Com um disco rídigo quebrado você perder tudo. Mas isso também pode ser apenas o resultado de um carregador de boot com erro ou a instalação de uma distribuição superzelosa. Nestes casos, há uma boa chance de que seus dados sobreviveram intactos - mas o que você faz? Os que periodicamente armazenam backups dos dados podem se sentar, sorrir levemente e restaurar seu trabalho suado pelo último backup. Apesar de saber o quão importante é isso, muitos de nós nunca conseguem reservar tempo para fazer backup dos dados que passamos a vida reunindo. Se há um bom momento para um Live CD Linux entrar em ação, é este.

Os Live CDs são equipados com ferramentas que podem ser usadas para ressuscitar discos rígidos, e muitas das ferramentas Linux rivalizam quando não ultrapassam as funcionalidades da maioria das soluções comerciais. A primeira coisa a fazer é montar o disco perdido a partir do Live CD.

Sugeriríamos usar o PCLinuxOS que muitas vezes é considerada a melhor distribuição atual para encontrar e montar partições problemáticas. Ele também faz um bom trabalho para encontrar partições NTFS do Windows no mesmo disco. O PCLinuxOS detectará automaticamente tudo que encontrar e os montará na área de trabalho. Você deve estar pronto para copiar os dados em um local seguro. Se isto não funcionar, sua salvação será digitar testdisk do console do root.

Testdisk é uma das ferramentas mais subestimadas, mas que pode realmente fazer a diferença entre perder ou manter tudo. É prefeito para restaurar gravações na MBR ou para reconstruir tabela de partições.

Mais em Truques de linha de comando.

Categorias
Linux

Matando o tempo

Uma vez que você comece a usar a linha de comando, usa ps time para gerenciar sua lista de processos. Digitar apenas ps listará os processos que pertencem à sessão atual e que, a não ser que você esteja executando alguma coisa em segundo plano, serão apenas dois: o shell do Bash (se for a sua escolha) e o próprio comando ps. Não há muito uso: a maioria das pessoas usa ps ux para ver todos os processos próprios e ps aux para listar todos os processos do sistema.

É fácil encontrar processos que está procurando passando o resultado de ps para o grep, como em ps aux|grep firefox. Para processos zumbis, tipicamente sai-se à caça dos processos quando o comportamento estranho é iniciado antes de chamar kill -9 pid para matar o ofensor. pid é o número de identificação do processo como informado pela saída do comando ps.

Mas há outra opção - usar o comando pidof para pegar o ID de um processo que você sabe que está executando. Usando o Forefox como um exemplo, basta digitar pidof firefox. A saída será semelhante a:

pidof firefox
18380 18021 24825 13081 6478 6473 6472

Isto significa que há sete instâncias do Firefox executando no momento e cada número é o ID de processo de cada instância. O maior número é o processo mais recente. Por exemplo, você poderia matar o último Firefox em execulção com kill -9 18380.

Um dos aspectos mais úteis de pidof é que você pode usá-lo para trabalhar com o identificador do processo quando não pode manualmente manipular a saída do ps. É perfeito para scripts que precisam encontrar e matar um processo ou talvez dá-los uma maior ou menor prioridade sem perder tempo procurando pela saída do ps·

Mais em Truques de linha de comando.

Categorias
Mundo

Doe sangue

Categorias
Linux

Brincando com o horário

Quantos das suas máquinas gerenciam para negociar com sucesso a transição da luz do dia em outubro? É importante, porque há mais que ter tempo do que o simpático relógio situado no canto do painel da sua área de trabalho - seu sistema é regulado para executar algumas coisas em certos horários. Seja o horário registrado num e-mail enviado ou data e hora de um arquivo, tudo depende do relógio do seu sistema.

O caminho mais simples de verificar o relógio do seu sistema é usar o comando date. Quando date é executado na linha de comando, você recebe uma linha que contém o dia e a hora em forma abreviada. Você pode usar este formato de saída para definir dia e hora como entrada de um comando date, mas isso é facilmente configurável. Muitas opções podem ser usadas para entrar ou sair com alguma coisa pelo horário em nanosegundos do século presente.

O último campo da saída do comando date lhe dirá em que fuso horário sua máquina está configurada. Se você estiver no Brasil espera-se que você veja 'BRST' para Brazillian Summer Time (horário de verão do Brasil) nesta época do ano. O arquivo de configuração pode ser mapeado para /etc/timezone, que contém uma descrição para sua localização. Para BRST, será algo como 'America/Sao_Paulo'. Se estiver errado, você pode escolher um fuso horário mais adequado em /usr/share/zoneinfo/directory. Este diretório inclui uma lista dos lugares mais populares para se viver no planeta ordenados por continente e país.

Há dois relógios no seu sistema. Um é o relógio do sistema, que é o que é examinado por date. O outro é o relógio do hardware. Este reside na BIOS do seu sistema e mantém o horário enquanto seu computador está desligado. O relógio do sistema pega o horário do relógio do hardware como parte do processo de boot. Você pode consultar e definir o relógio do hardware usando o comando hwclock, digitando:

hwclock --systohc

você define o relógio do hardware para o mesmo horário do relógio do seu sistema.

Mais em Truques de linha de comando.

Categorias
Linux

Redirecionando o Editor

Se você usa uma distribuição baseada no Debian, como o Ubuntu, já se perguntou para que serve o misterioso diretório /etc/alternatives? Se você olhar o conteúdo, verá que está cheio de alguns dos comandos de sistema mais conhecidos. Mas se você olhar de perto, cada arquivo é na verdade um link simbólico para a localização real do comando em algum lugar do sistema. Este diretório está cheio de links porque os desenvolvedores originais do Debian não queriam assumir que uma ferramenta seria usada sobre qualquer outra. Eles usaram o utilitário cron para destacar o problema.

O Cron é usado para agendar evento a serem executados em certos dias e horários e ele faz isso abrindo um editor de texto de onde você necessitar para que você adicione seus próprios trabalhos. Mas a grande questão para os desenvolvedores do Debian era 'Qual editor de texto?'. Para os usuários do Linux não há resposta fácil e é uma pergunta que gera guerras infindáveis e gasta-se muito tempo para ter alguma resposta definitiva. Enquanto uns preferem Emacs, Vi ou Nano, a obrigatoriedade de escolher um a outros sempre causará problemas.

A solução foi /etc/alternatives. Se você digitar cron no Ubuntu, o sistema carregará o bem amigável editor Nano. Mas se você olhar com atenção, cron está na verdade executanto o editor de comando localizado em /usr/bin que é, por sua vez, um link para /etc/alternatives/editor.

Como você já deve estar imaginando, este arquivo é um link para o editor real - neste caso, é /usr/bin/nano. É um passo seguro o recurso de escolher qual editor selecionar dentre todos que você tem como editor padrão quando basta trocar o link para apontar para o seu editor favorito no lugar do Nano. Há até um comando que pode executar esta tarefa para você. Digite update-alternatives --set editor /usr/bin/vim para trocar o editor para o vim, por exemplo. Você também pode listar os editores disponíveis uisando o parâmetro -display editor ou exatamente o mesmo para todos os outros comandos que estão localizados no diretório /etc/alternatives.

Mais em Truques de linha de comando.

Categorias
Linux

Resolvendo resolv.conf

Ter mais de um dispositivo de rede pode lhe trazer problemas de prioridade. Normalmente apenas um dos dispositivos tem acesso à internet. Qualquer dispositivo de suporte compartilha a conexão ou serve dados guardados numa máquina atrás de um firewall. O problema é que o cartão sem conexão à internet pode ter prioridade sob o cartão que tem conexão à internet. Isso acontece quando ambos os cartões de rede são conectados a outras máquinas ou roteadores que atuam como servidores DHCP independentes e provêem informações conflitantes. O resultado é que os pacotes de rede destinados para a internet são roteados através do dispositivo de rede errado, cancelando a conectividade.

O problema geraldomente pode ser rastreado com um simples arquivo de configuração, /etc/resolv.conf. É aonde o seu sistema pega o endereço do servidor de nomes que é necessário para traduzir o nome do servidor legível por humanos (como rafael.bernard-araujo.com) para o endereço IP que a rede entende (208.65.202.206). Se o servidor de nomes não puder traduzir o endereço, não será possível acessar a internet usando nome de servidores, mas você pode usar o endereço IP para navegar.

É possível resolver o problema editando o resolv.conf adicionando o endereço IP do servidor de nomes do seu provedor de internet. Ainda assim, depois de uma ou duas horas a conexão pode ser interrompida. Ao olhar o resolv.conf novamente o nome dos servidores de nome estarão trocados. Um cliente DHCP está sendo executado em sua máquina e tentando determinar as configurações de conexão de tempo em tempo. O problema é que este cliente está priorizando a o cartão de rede errado e sobrescrevendo o endereço do servidor de nomes no resolv.conf.

É por isso que a solução pode ser encontrada em /etc/dhcp3/dhclient.conf. Para adicionar os servidores de nomes corretos, abra o arquivo no editor de texto e adicione servidor-de-nomes-do-dominio ipDoServidor. De agora em diante, este endereço será sempre adicionado em primeiro lugar no seu resolv.conf, antes de qualquer configuração equivocada de um servidor DHCP. Tudo ajustado.

Mais em Truques de linha de comando.

Categorias
Linux

Simples teste de falha

Há algumas vezes em que um processo de segundo plano que você confia silenciosamente falha, o que é difícil de detectar e corrigir. MythTV, por exemplo, depende de um servidor em segundo plano para gravar programas de televisão. Se o servidor falhar as gravações serão perdidas. Certo, então em primeiro lugar ele nunca deveria falhar, mas enquanto os desevolvedores se ocupam em corrigir os erros na aplicação, tudo o que podemos fazer é reiniciar o processo automaticamente.

O truqye é executar um processo que você quer reiniciar a partir de um script simples. Se ele falhar, o controle retorna ao script, que pode iniciá-lo novamente. Isto pode ser feito por um laço. Não é grande programação, mas funciona.

while true;
do
mythbackend;
done

A beleza disso é que, quando mythbackend falha, o laço while simplesmente inicia-lo-á novamente. Podemos fazer o script um pouco menos cru adicionando a verificação se mythbackend está em execução. Precisamos apenas contar o número de instâncias dos processos, o que fazemos pelo grep no retorno no número de instâncias do processo encontrados com ps. Se o mythbackend está mesmo em execução, o número de instâncias será um valor diferente de zero, o que testaremos através de um if.

Finalmente, com o script escrito, precisamos ter certeza de que ele não encerrará a si mesmo. Fazemos isso executando-o a partir de um shell com o comando hangup, nohup scriptname &.

#!/bin/bash
mcount = 'ps ax | grep "mythbackend" | grep -v grep | wc -l'
if [$mcount == 0]; then

#! Insert 'while true' code here
else
exit 1
fi

Mais em Truques de linha de comando.