Artigos sobre Linux

Jetty sempre rodando (uptime 99%)

Linux

Aplicativos

por torquato em 13/02/2012 02:52:46



Nos últimos dias, precisei configurar um servidor para rodar uma aplicação web que estou desenvolvendo e necessitava fazer com que, caso o meu servlet container (estou utilizando o Jetty) parasse de funcionar, um outro processo levantasse o Jetty. Isso é um problema bastante comum e deve existir N maneiras de se resolver. Como sou iniciante em linux, scripts, etc... Resolvi criar um shell script para resolver este problema e com isso aprender um pouco como funcionam as coisas no linux.

Os assuntos abordados para resolver esse problema são :

  • Agendamento de Tarefas no linux
  • Shell script

 

Shell script

Shell script é uma linguagem de script usada em vários sistemas operativos (operacionais), com diferentes dialetos, dependendo do interpretador de comandos utilizado. Um exemplo de interpretador de comandos é o bash, usado na grande maioria das distribuições GNU/Linux. (wikipedia)

Para identificar que o arquivo é um script é necessário que a linha inicial seja:

#!/bin/bash

Precisamos também setar a permissão para executar script:

$ chmod +x arquivo


Para executar o script basta digitar "./nome_do_script.sh".

Exemplo:

Crie um arquivo chamado "teste.sh" com o conteúdo abaixo, configure sua permissão e execute-o.

#!/bin/bash
echo Olá mundo!


Agora vamos ao nosso script para deixar o Jetty sempre em execução:

Script:

 

O script funciona da seguinte maneira:

Verifica se tem algum processo "java" rodando que contenha na sua linha de comando "jetty.port=9090", caso exista, o script não faz mas nada, caso não exista, ele irá verificar se existe uma pasta chamada "logs", se não existir, ela será criada e dentro dela conterá um arquivo de log informando quando ocorreu do Jetty não está rodando e armazena o "load average" do servidor naquele momento, logo após, executa o serviço do jetty novamente.

OBS: O load average vai me indicar superficialmente como estava o status do servidor no momento em que o Jetty caiu.

Para uma melhor explicação sobre load average:

http://pt.wikipedia.org/wiki/Load_average

Agora, como fazer para agendar esse script para ser executado a cada X intervalo de tempo ?

Simples, adicionamos no serviço de agendamento do linux (cron) um agendamento para esse script. 

Entendendo uma expressão cron

* * * * * [usuario] [comando]

Semântica dos valores de uma expressão cron:

- Minutos: Números de 0 a 59.
- Horas: Números de 0 a 23.
- Dias do mês: Números de 0 a 31.
- Mês: Números de 1 a 12.
- Dias da semana: Números de 0 a 7.
- Usuário: Usuário que irá executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado).
- Comando: Tarefa que será executada.

Nosso exemplo:

*/5 * * * * /caminho_do_seu_script/uptime.sh

Neste exemplo, o script de uptime será executado a cada 5 minutos.

Os agendamentos para seu usuário fica guardados em uma tabela chamada "crontab", para você poder adicionar um agendamento, apenas edite este arquivo adicionando o seu agendamento, para isto execute o comando abaixo:

$ crontab -e

Caso não exista agendamentos para o seu usuário, esse comando irá cria-ló. Se desejar ver os arquivos de agendamentos de cada usuário, você terá que logar como root e ir na pasta "/var/spool/cron/usuario".

 Caso você deseje ver todos os agendamentos para seu usuário, digite:

$ crontab -l

 

Caso queira saber um pouco mais de CRON:

http://www.devin.com.br/crontab/

 

De uma maneira simplificada, resolvemos o problema de reiniciar o serviço do Jetty automaticamente, tomara que seja útil para você também...

 


Tags: jetty, script, shell script, linux, dicas


Simulando ações de teclado e mouse no Linux

Linux

Aplicativos

por hugo em 08/12/2011 17:30:14



Simulando ações de teclado e mouse no Linux

A ferramenta xdotool permite que eventos de teclado e mouse sejam simulados no Linux, FreeBSD e MacOS. Com essa ferramenta, podemos simular ações como click de mouse e pressionamento de teclas de forma fácil e direta. O código é aberto, possui uma boa documentação (em inglês) e a instalação é bastante simples. Para instalar aqui no meu ambiente, Ubuntu 11.10, precisei apenas do seguinte comando:

apt-get install xdotool

A utilização também é bastante simples. Após instalado, para simular o pressionamento de alguma tecla basta utilizar o seguinte comando:

xdotool key F1

 Nesse exemplo o pressionamento da tecla F1 é simulado. É possível também simular uma sequencia de teclas como por exemplo Alt Tab ou Alt+F4:

xdotool key Alt+Tab

 E para posicionar o mouse em uma coordenada específica:

xdotool mousemove 0 0

Um click do mouse pode ser simulado da seguinte forma:

xdotool click 1

Esse comando simula o pressionamento do botão esquerdo do mouse. Para simular os outros botões do mouse basta especificar o número do botão, onde 1 corresponde ao botão esquerdo, 2 ao do meio e 3 ao botão direito.

Esse utilitário pode ser utilizado de diversas formas, como por exemplo para realizar testes automatizados que precisão da interação de um usuário com o computador. Nos próximos posts pretendo mostrar um protótipo que fiz com o comando xdotool, em conjunto com um sensor infravermelho e um arduino, para passar slides em uma apresentação utilizando um controle remoto de televisão ou com tecnologia similar.


Tags: Linux, GNOME, Ubuntu



lolbits.tumblr

I <3 angry...

perfect!...

seems...

I want!...

A Ball of Cards....

kylethacker:

The...

=] feliz natal...

cool!...

A História de...