Mostrando postagens com marcador serviço. Mostrar todas as postagens
Mostrando postagens com marcador serviço. Mostrar todas as postagens

quinta-feira, 13 de junho de 2013

Enfileirar comandos para execução posterior

Com o comando "at", nos sistemas Linux, podemos agendar a execução de uma tarefa para determinado tempo posterior, seja após um tempo decorrido ou hora e dia específico. A execução ocorrerá apenas uma vez (diferente do cron que executa novamente a tarefa na próxima ocorrência da data) e então a tarefa é removida da fila de agendamentos. Na execução, a tarefa herda o ambiente do momento em que foi criada, isto é, o comando será executado no mesmo diretório e com algumas das variáveis de ambiente do momento do agendamento.

O administrador do sistema pode controlar quem poderá agendar tarefas com o comando "at", editando os arquivos "/etc/at.allow" e "/etc/at.deny". Se existir o arquivo "/etc/at.allow", somente os usuários incluídos neste arquivo poderão usar o comando "at". Se não existir e se existir o arquivo "/etc/at.deny", os usuários incluídos neste segundo arquivo não poderão usar o comando "at". Se nenhum dos arquivos existirem, somente o administrador poderá usar o comando "at".

Além do comando "at" existem o "atq", que lista todos os agendamentos, e o "atrm", para remover uma tarefa determinada. As tarefas serão executadas pelo serviço "atd".

Uma tarefa nada mais é que uma linha de comando qualquer, com seus parâmetros, opções etc. Há basicamente três formas de informar a linha de comando ao "at". Quando executa-se o "at" sem esta informação, a interface exibe um prompt "at>" para que se digite a linha de comando. Digitando Ctrl+D no início de uma nova linha vazia encerra a entrada. A segunda forma é canalizar "|" a linha de comando para o comando "at" e a terceira forma é informar com a opção "-f" o arquivo que contém uma ou mais linhas de comando.

O momento para a execução pode ser especificado com diversas sintaxes. Este é o ponto que torna o comando "at" um pouco confuso talvez. As sintaxes podem ser:

• A hora no formato HH:MM, para uma hora específica no dia ou, se esta hora já passou, é assumido o dia seguinte;

• A hora seguido do sufixo AM ou PM;

• Os termos MIDNIGHT, NOON ou TEATIME (4pm);

• A data no formato mês dia e ano opcional. Para os meses usa-se JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC;

• A hora seguido dos termos TODAY ou TOMORROW;

• O termo NOW, ou hora específica, + número seguido de um dos termos MINUTES, HOURS, DAYS ou WEEKS;

• O parâmetro "-t" e a data/hora no formato [[CC]YY]MMDDhhmm[.ss].


Exemplos:

$ at 22:30

$ at 10:30pm

$ at midnight

$ at jul 15 2014

$ at 10:30pm jul 15 2014

$ at 22:30 tomorrow

$ at now + 6 days

$ at 5pm + 7 days

$ at -t 201407152230

$ at -f tarefas.txt now + 1 hour



O comando "atq" ou "at -l" retorna todas as tarefas agendadas ou em execução no momento. Sua saída exibe o número da tarefa, a hora agendada e o nome do usuário. O comando "atrm", "at -r" ou "at -d" seguido do número da tarefa remove a tarefa especificada pelo número.

No mesmo pacote existe o comando "batch" (ou "at -b"), que possui o mesmo funcionamento e sintaxe do "at" porém executa a tarefa somente se o nível de carga do sistema estiver baixo, isto é, se a carga média do sistema (load average) estiver abaixo de 0,8 (ou outro valor especificado na invocação do atd). Assim, em um sistema sobrecarregado a tarefa não será executada.

O comando "at" pode também informar o usuário por e-mail quando a tarefa for concluída, quando usado o parâmetro -m. E ainda, assim como no cron, o usuário não precisa estar logado no sistema no momento da data e hora do agendamento, pois o serviço "atd" fará a execução.

segunda-feira, 26 de abril de 2010

Serviço de Área de Trabalho Remota do Windows

O Serviço de Área de Trabalho Remota (Remote Desktop Services, RDS) do Windows torna possível administrar um servidor remotamente, executando uma aplicação ou uma área de trabalho completa do servidor a partir de um computador cliente, através da rede. Uma vez conectado, o RDS permite controlar com o mouse e teclado o computador remoto, enquanto é mostrado no computador local a tela do ambiente operacional remoto.

Quando uma conexão é estabelecida entre um cliente e um servidor com o Serviço de Área de Trabalho Remota, apenas comandos de mouse e teclado e a tela do ambiente são enviados pela rede. O protocolo utilizado para a comunicação entre um cliente e um servidor com o Serviço de Área de Trabalho Remota é o RDP (Remote Desktop Protocol), comunicando por padrão através da porta TCP 3389.

Este serviço de terminal remoto pode ser executado em dois modos, porém é o Modo de Administração Remota que não requer um licenciamento extra. Neste modo, os administradores poderão gerenciar o servidor a partir de qualquer local. Assim, para que a conexão seja efetuada, a conta de usuário utilizada deverá ser membro do grupo dos Administradores.

No Windows XP e superiores apenas as versões Professional ou superiores possuem o serviço. As versões Home não trazem o RDS. Sua configuração é bastante simples. Vou mostrar simplificadamente os passos para o Windows XP e Windows 7.

No Windows XP basta ir em "Iniciar -> Painel de controle -> Desempenho e manutenção -> Sistema" (ou clique com o botão direito em Meu computador e vá em Propriedades) e na guia "Remoto" marque "Permitir que usuários se conectem remotamente a este computador". Clique no botão "Selecionar usuários remotos", depois em "Adicionar", escreva o nome de algum usuário cadastrado no XP e OK para encerrar, pronto. O usuário selecionado deverá possuir uma senha no sistema, senão não será aceito.

No Windows 7, acesse "Painel de Controle -> Sistema e segurança -> Sistema" (ou clique com o botão direito em Meu computador e vá em Propriedades). Clique, no canto superior esquerdo da tela, em "Configurações remotas" e em "Assistência Remota" clique em "Permitir conexões de Assistência Remota para este computador". Abaixo, em "Área de trabalho remota" escolha, "Permitir conexões de computadores que estejam executando qualquer versão da Área de trabalho remota". Clique no botão "Selecionar usuário" para definir quais usuários do computador e pronto.

Os computadores clientes não necessitam de configuração especial, basta ter o aplicativo cliente para o serviço de terminal. O Windows XP e o Windows 7 já possuem. Vá em "Iniciar -> Todos os Programas -> Acessórios" e clique em "Conexão de Área de Trabalho Remota". Na janela que abrir digite o endereço do computador servidor. Se desejar, clicando no botão "Opções" é possível personalizar a conexão.

No Linux existe o cliente "rdesktop" para o Serviço de Área de Trabalho Remota do Windows, que suporta todas as versões de servidores, incluindo Windows NT Server 4.0, Windows 2000 Server, Windows Server 2003, Windows Server 2008, Windows XP, Windows Vista e Windows 7. Sua linha de comando é como este exemplo: rdesktop -5 -a 16 -g 1024x768 192.168.1.101

Certifique-se de que a máquina que será acessada não tenha um firewall bloqueando o RDS. O Windows 7 costuma reconfigurar o firewall automaticamente na ativação do serviço, já no Windows XP pode ser necessário fazer tal ajuste.

segunda-feira, 14 de setembro de 2009

Configurando Serviços no Linux

Os serviços são programas (daemons) que são iniciados e mantidos em execução em segundo plano, ficam monitorando o computador e respondem às mudanças. Por exemplo o servidor Apache possui um daemon chamado httpd (o d é de daemon) que fica escutando a porta 80 do computador e quando ele recebe uma requisição por uma página, ele envia os dados apropriados para a máquina cliente.

Muitos serviços ficam em execução na maioria do tempo entretanto muitos podem ser seguramente desligados por razões de segurança como também por razões de desempenho. Pode não ser muita a diferença mas o computador é iniciado um pouco mais rápido quando há menos serviços para iniciar.

Existem dois comandos que são usados para controlar os serviços:

/sbin/chkconfig - Este controla quais serviços serão iniciados durante a inicialização da máquina. As mudanças aplicadas por este programa não alterará o estado do serviço imediatamente, apenas deixará marcada a configuração para a próxima inicialização da máquina.

/sbin/service - Este controla o início ou o fim da execução dos serviços imediatamente durante a seção atual, não mantendo para a próxima inicialização da máquina.

Antes vamos conhecer como o sistema Linux organiza o controle dos serviços. Muitas variantes do Unix System V, e isto inclui diversas distribuições do Linux, usam scripts nos diretórios "/etc/rcN.d/" para controlar quais serviços serão iniciados dentre os níveis de execução. Se um serviço deve ser iniciado no nível de execução 5 então é colocado o seu script em "/etc/rc5.d/".

Entretanto este modelo envolve em existir múltiplas cópias do mesmo script em diretórios diferentes, então foi adotado o padrão de colocar todos os scripts de controle dos serviços no diretório "/etc/init.d/", e usar ligações simbólicas para estes scripts nos vários diretórios "/etc/rcN.d/". Isto permitiu a inovação com o comando "chkconfig".

Na distribuição Fedora Linux as ligações e os scripts estão nos diretórios "/etc/rc.d/rcN.d/" e "/etc/rc.d/init.d/", porém é mantido no diretório "/etc/" as ligações simbólicas para estes diretórios, imitando a origem vinda do Unix System V.

Para o comando "chkconfig" poder operar adequadamente, os arquivos dos scripts de controle devem ter seus nomes refletindo o nome do serviço o qual eles controlam. E no inicio de cada script deve existir um cabeçalho com algumas linhas que fazem com que o "chkconfig" entenda que pode controlar a execução.

A principal linha deste cabeçalho é a que especifica os níveis de execução e a ordem de execução dos scripts. Esta linha é semelhante a mostrada abaixo:

# chkconfig: 2345 55 25

O primeiro conjunto de números "2345" indica os níveis no qual o script será executado e "55" e "25" representam a ordem em que o script será executado e parado no nível de execução.

Para adicionar um script e ativar o controle do serviço pelo gerenciamento do "chkconfig" primeiro é preciso colocar o script no diretório "/etc/rc.d/init.d/" e então executar no prompt do terminal o comando "chkconfig --add nome_do_serviço". A partir deste ponto basta executar o comando "chkconfig nome_do_serviço on" para que a devida ligação simbólica seja criada nos diretórios "/etc/rc.d/rcN.d/" especificados no cabeçalho do script. Com a execução do comando "chkconfig nome_do_serviço off" estas ligações são removidas. Do mesmo modo, pode-se remover o controle do serviço pelo gerenciamento do "chkconfig" executando o comando "chkconfig --del nome_do_serviço".

Estas ligações simbólicas existentes dos diretórios "/etc/rc.d/rcN.d/" seguem um padrão em seus nomes. Os nomes iniciam com os caracteres "S" ou "K" (de Start e Kill) seguido do número da ordem de execução (aqueles do cabeçalho), semelhante a algo como por exemplo "S85httpd" ou "K30proftpd".

O comando "chkconfig --list" retorna uma listagem de todos os serviços disponíveis junto com suas respectivas configurações para a inicialização da máquina. Um retorno mais específico pode ser obtido com o comando "chkconfig --list nome_do_serviço". E é possível alterar os níveis definidos no cabeçalho diretamente na linha do comando, por exemplo se no cabeçalho do script estão definidos os níveis 2345 e a linha de comando for "chkconfig --level 35 nome_do_serviço on", somente será criada as ligações simbólicas nos diretórios "/etc/rc.d/rc3.d/" e "/etc/rc.d/rc5.d/".

Estes scripts usualmente atendem aos argumentos "start", "stop", "status" e "restart", do mesmo modo os comandos que controlam os serviços. A execução imediata do serviço pode ser feita com a chamada do próprio script pela linha de comando, em algo como "/etc/rc.d/init.d/nome_do_serviço start". Ou também utilizando o comando "service" em algo como "service nome_do_serviço start". Lembrando que estas formas só funcionam para a seção atual, não mantendo para a próxima inicialização da máquina. O argumento "stop" para o serviço, o argumento "status" mostra a situação atual do serviço e o argumento "restart" reinicia o serviço. O comando "service" pode ir mais além, executando o comando "service --status-all" ele retorna o estado de todos os serviços instalados no sistema.

Uma alternativa para o comando "chkconfig" é o utilitário "ntsysv", que é uma simples interface para configurar os serviços nos níveis de execução. Por padrão ele configura somente no nível de execução atual e para configurar também para algum outro nível é necessário executá-lo com o argumento "--level NNN", por exemplo "ntsysv --level 35" edita os níveis 3 e 5.

Estes comandos são o padrão na distribuição Fedora. As outras distros poderão ter comandos ligeiramente diferentes.