Postagens

Mostrando postagens com o rótulo Linux

Linux / Shell Script - Repetindo um comando no terminal a cada X intervalos de tempo

Imagem
Muitas vezes precisamos monitorar o funcionamento de aplicações que precisam pegar dados em web services, APIs, gerar arquivos de tempos em tempos, logs e etc. O comportamento das aplicações podem variar muito conforme o tipo de dados que recebemos e processamos, principalmente quando não temos o controle completo do dado que chega. Um bom meio para fazer isso é deixar sua aplicação rodando por algum tempo sozinha, coisa que seria muito chata de fazer manualmente. O Shell do Linux nos permite fazer facilmente um timer para rodar nossa aplicação, por exemplo, a cada 20 minutos. No final do dia podemos ver os logs, arquivos gerados ou as atualizações em um banco de dados de testes para verificar se o comportamento foi o esperado. O comando Shell é o que segue abaixo: while true; do <your_command>; sleep <interval_in_seconds>; done Vamos supor que queremos rodar uma aplicação NodeJs a cada 20 minutos. Para isso vamos na pasta em que se encontra nossa apl...

PHP - phpinfo diretamente na linha de comando

Imagem
É procedimento mais que conhecido e adotado criar um arquivo (phpinfo.php) para visualizar as propriedades da instalação do PHP em determinada máquina. <?php echo phpinfo(); Mas é posssível obter esta mesma informação diretamente pelo terminal, através do shell $ php -i O problema aqui é que será exibida uma lista corrida na tela com todas as propriedades, funções e etc. Podemos resolver o problema redirecionando a saída para um arquivo, através de um pipe: $ php -i | cat > phpinfo.txt Uma maneira mais prática é consultar diretamente o pacote que se deseja descobrir se está instalado ou não. Para isto podemos usar o comando abaixo: $ php -i | grep -i <pacote_a_ser_verificado> Vamos descobrir se o Curl está instalado: $ php -i | grep -i curl A resposta é: Fácil e rápido!

Linux - Quebrando grandes arquivos texto em blocos menores com SPLIT

Para dividir um arquivo de texto muito grande em pedaços menores basta o seguinte comando: split -b <tamanho_dos_blocos> <nome_do_arquivo_original> Exemplo: split -b 50MB lista_de_telefones.txt Quebrará um arquivo de, por exemplo, 150MB em três de 50MB com nomes padrão (como por exemplo XAA, XAB, XAC)

Estrutura de diretórios do Linux

Imagem
Para os iniciantes ou mesmo aqueles que como eu não tem o costume de decorar as coisas segue um interessante esquema da estrutura de pastas do Linux e suas principais utilizações dentro do sistema.

Linux - Utilizando o comando DIFF para comparar diferenças entre arquivos em diferentes pastas

Um comando do Shell Linux muito interessante e útil é o 'diff'. Utilizo ele tanto para verificar as diferenças entre arquivos gerados por um sistema em que fiz alguma atualização quanto para verificar diferenças no código entre versões de arquivos de aplicações. Sua utilização é muito simples: $ diff /diretorio1 /diretorio2 | cat > /diretoriodesaida/diferencas.txt Explicando o comando acima: 'diff' verifica a diferença entre os arquivos nas pastas 'diretorio1' e 'diretorio2', inclusive diferenças dentro dos arquivos. '| cat > /diretoriodesaida/diferencas.txt' direciona a saída padrão da tela para um arquivo, ou seja, os resultados da análise poderão ser checados no arquivo 'diferencas.txt' Dentro do arquivo gerado 'diferencas.txt' estão indicados todos os trechos que foram modificados entre dois arquivos de mesmo nome ou as diferenças entre quantidades de arquivos.

PHP - Rodando PHP pela linha de comando: passando parâmetros

Imagem
Para quem não sabe o PHP pode ser rodado via linha de comando, seja no Linux, DOS ou MAC e não somente via browser. Podemos rodar um script desta forma (no DOS): c: \xampp\htdocs\>php meuscript.php Pelo browser podemos passar parâmetros usando os caracteres ? e & como separadores localhost/meuscript.php?parametro=linha E no script 'pegamos' este parâmetro através do $_GET. Pela linha de comando $_GET não consegue pegar parâmetros. Desta forma devemos modificar nosso script de forma a receber os parâmetros imputados via linha de comando. A variável interna $argv captura os parâmetros imputados: <?php var_dump($argv); Agora podemos rodar o script e enviar os parâmetros: c: \xampp\htdocs\>php meuscript.php linha Veremos como saída: Array(2) {   [0] => string(16) "meuscript.php"   [1] => string(5) "linha" } Ou seja, os parâmetros são reconhecidos pelo script como uma array de valores. É isso ai!

PHP - REPL, teste códigos php assim como no console do FireFox ou Chrome

Imagem
Em minhas pesquisas semanais descobri algo muito interessante que quero dividir com vocês e que se chama REPL. Opa, mas o que é isto? O título deste post provavelmente já deu uma pista. REPL (Read-Eval-Print Loop) é um interpretador de linha de comando que executa seu código assim que você aperta o Enter. Se você já trabalhou com Javascript e já fez testes no painel de desenvolvedor do Chrome ou no FireBug do FireFox sabe bem do que estou falando. O PHP também possui um REPL. Para ativá-lo no Linux basta abrir um terminal e digitar: $php -a Deve aparecer em seu terminal o seguinte: php >  Isto indica que entramos no REPL do PHP. Podemos 'brincar' agora com o REPL. php > echo "Ola REPL"; Isto retorna: Ola REPL Um uso interessante do REPL é testar expressões regulares, que são bem chatas, e que sempre temos de testar bastante (pelo menos eu) para encontrar o melhor comportamento. php > echo preg_match('/[0-9]+/','Aqui tem ...

Linux - Dicas rápidas sobre Lynx

Imagem
Lynx é um navegador baseado em texto, ou seja, ele não tem uma interface gráfica e nem exibe gráficos (imagens, html renderizado, etc). Mas então, podem me perguntar, para que usar este programa? Bem, o Lynx é muito utilizado para outras tarefas mais 'robóticas' ou dentro de programas. Em um cronjob do linux, por exemplo, o lynx pode ser utilizado para 'chamar' uma URL de tempos em tempos e rodar uma tarefa. Em um programa o lynx pode ler um site e pegar todos os links dele, sem a necessidade do programa ter de ler todo o HTML diretamente e tentar encontrar os links com expressões regulares ou qualquer outra técnica. Outra utilização do Lynx é visualizar uma página da mesma forma que um crawler, ou um robô de indexação como o do google, a enxerga. Isto ajuda no planejamento do SEO de páginas ou mesmo no planejamento ou implantação de acessibilidade para portadores de deficiência. O lynx é bem útil mas acredito que é pouco utilizado. Sendo assim, a ideia deste po...

MySQL - Função LOAD INFILE não funciona? Uma dica rápida

Dependendo das configurações de instalação do MySQL podemos ter problemas na hora de carregar arquivos com dados (.csv por exemplo) para dentro de uma tabela. Exemplo: LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table; Caso ocorram erros ao efetuar este tipo de operação, abra o terminal do DOS ou Linux e tente acessar o banco de dados através do comando abaixo: DOS: c:\caminho_para_o_mysql\mysql -uusuario -psenha --local-infile Linux: $ mysql -uusuario -psenha --local-infile onde 'usuario' é o seu usuário e 'senha' sua senha. Após acessar o banco por meio desta operação tente efetuar novamente o procedimento de LOAD INFILE.

Linux - Substituindo conteúdo de arquivos textos com sed

O Linux pode surpreende-lo de forma muito positiva inúmeras vezes. Uma das coisas mais bacanas que já utilizei e que sei que muita gente procura e não encontra com facilidade é a busca e substituoção de valores dentro de um arquivo texto. Uma grande parte das dicas que encontramos na Web são baseados em loops e etc, o que não é nada prático. A dica aqui é usar o comando "sed" junto com pipes. Vamos ao que interessa então: Busca o padrão DE e substitui por PARA dentro de "arquivo" e salva a modificação. sed -i 's/DE/PARA/g' arquivo Busca o padrão DE dentro de "arquivo" e substitui por PARA e joga para "novoarquivo" a modificação através de um pipe. sed 's/DE/PARA/g' arquivo | cat > novoarquivo

Linux - Transferência de arquivos utilizando sftp

Existe dois protocolos de transferência comumente usados no ssh, RCP (implementado pelo scp) e o SFTP. Hoje vamos falar um pouco de um programa muito útil do linux, o sftp. Para quem já utilizou o protocolo ftp (de transferência de dados) está ai uma opção muito interessante. Vamos utilizar como plataforma o console do linux e a transferência de exemplo será entre duas máquinas com sistema operacional Linux. Primeiramente temos que saber em qual máquina a conexão será estabelecida. Isto se traduz em saber o endereço, login e senha da máquina. Tendo estas infos em mãos, podemos digitar na shell $ sftp login@endereco ou como um melhor exemplo: $ sftp usuario1@200.200.00.0001 o endereço, neste caso, é o ip da máquina que se quer conectar Após inserir a senha solicitada você estará conectado. A partir deste momento temos de ter em mente que estamos em um "ambiente duplo", ou seja, o sftp nos deixa com a possibilidade de operar comandos tanto no computador local ...

Linux - Utilizando atalhos de sequência de comandos com alias

Uma técnica muito interessante para quem quer automatizar alguns comandos no linux é utilizar o "alias", algo como um apelido para uma sequência de comandos. A vantagem do "alias" é que você não precisa utilizar de shell script para fazer seus atalhos ou sequência de comandos. $ alias Lista todos os alias atuais no sistema $ alias nome="sequencia de comandos" cria um novo alias Um exemplo de alias útil é listar a quantidade de arquivos no diretório atual. O comando para fazer isto seria: $ ls | wc -l Porém podemos criar um atalho, por exemplo: $alias qtd="ls | wc -l" Pronto! Toda vez que digitarmos: $ qtd o Shell retornará a quantidade de arquivos (inclusive pastas) presentes no diretório atual. Porém quando vc fizer log out estes aliases sumirão. Para mante-los você deve editar o arquivo .bash_profile ou .bashrc com os mesmos para que sejam preservados. Este arquivo pode ser encontrado em /home/usuario.  Use sua cr...

Linux - Compactando e Descompactando com .zip

Quando trabalhamos, seja com Linux, seja com outro sistema operacional, uma das operações mais importantes na manipulação de arquivos é a compactação. Existem vários padrões (.gzip,.bzip2, etc) porém neste post vamos falar do padrão zip e como utiliza-lo na linha de comando Linux/Unix (Shell). São inúmeras as opções de compactação e descompactação porém vamos listar aqui as mais comuns e algumas que não são tão comuns mas não por isto menos úteis. Compactação normal de arquivos: $ zip   nome_do_novo_arquivo.zip   arquivo_1   arquivo_2   arquivo_n Compactação recursiva $ zip   -r   nome_do_novo_arquivo.zip   c aminho_do_diretorio Compacta todos os arquivos do diretório em que se está $ zip   -r   nome_do_novo_arquivo.zip   * Compacta os arquivos de um diretório mas sem a sua árvore de diretórios $ zip   -rj   nome_do_novo_arquivo.zip   caminho_do_diretorio Lista o conteúdo do arquivo zip $ unzip  ...