Como usar o comando Crontab – o cron para novatos.

Este post tem a pretensão de dar uma rápida introdução ao cron — e cobrir o básico de tudo o que ele é capaz de fazer para você.

O que é o cron?

Cron é o nome do programa que permite aos usuários do Unix/Linux executar comandos ou scripts (grupos de comandos) automaticamente em um determinado horário/data.

É comumente usado pelos administradores de sistemas para programar a execução de suas tarefas administrativas – como o backup.

Vamos ver, aqui, como funciona o Cron Vixie, uma versão desenvolvida por Paul Vixie.

Como iniciar o cron

Patek Philipecron é um daemon, o que significa que ele é um serviço que é iniciado uma vez (usualmente, quando o sistema é ligado), entra em stand by e, na hora certa, executa a(s) tarefa(s) programada(s) – usualmente, em background, ou seja, nos bastidores do sistema.

Outro exemplo de daemon é o servidor FTP, que fica em stand by, quando não está sendo usado.

O daemon crond já vem instalado na maioria das distros Linux e costuma ter algumas tarefas corriqueiras, já agendadas, como padrão.

Se você quiser saber o estado do seu crond, rode o seguinte comando:

ps aux | grep crond

O meu resultado foi este:

root 311 0.0 0.7 1284 112 ? S Dec24 0:00 crond

2914659 20624 0.0 0.0 112364 856 pts/1 SN+ 12:49 0:00 grep crond

A primeira linha, indica que o crond está sendo executado no meu sistema.

Se ele não estiver rodando no seu sistema, ou ele foi desligado (por você ou outro usuário) ou apenas nem foi iniciado.

Para iniciá-lo, você pode adicionar a linha crond a um dos scripts de inicialização ou rodar o aplicativo manualmente, como root:

crond

como usar o cron

Dentro do diretório /etc/, é possível encontrar subdiretórios chamados cron.hourly/, cron.weekly/, cron.daily/, cron.monthly/. O princípio é simples, assim – ao copiar um script para dentro de um destes diretórios, ele será executado a cada hora (hourly), a cada semana(weekly), a cada mês (monthly). A frequência com que o script será executado, depende do nome do diretório, portanto.

É possível ter mais flexibilidade no modo como a tarefa será executada, através da edição do arquivo /etc/crontab. Em um típico servidor Debian, este arquivo tem a seguinte aparência:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin</p>
<p># m h dom mon dow user	command
17 *	* * *	root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )
#

Você pode verificar o arquivo, no seu sistema, com o seguinte comando:

cat /etc/crontab

explicando o arquivo crontab

As primeiras linhas, do arquivo, definem algumas variáveis usadas pelo cron. A segunda parte é a que exige um pouco mais de atenção. Vamos usar tabela para explicar a linha

# m h dom mon dow user	command
Item Descrição
m ou minute minuto – determina a quantos minutos, dentro de uma hora, o comando será executado. Os valores aceitos vão de 0 a 59.
h ou hour hora – determina a que hora o comando será executado e sua especificação segue o padrão 24h. Portanto, aceita valores entre 0 e 23 (sendo que 0 é meia-noite).
dom ou day of month dia do mês – determina o dia do mês em que o comando será executado. Se quiser que a tarefa seja executada no dia 25 do mês, use o valor 25.
mon ou month mês – determina o mês em que o comando será executado. Aceita tanto valores numéricos referentes aos meses do ano, como alfabéticos (e. g. August).
dow ou day of week dia da semana – aceita tanto valores numéricos de 0 a 7, como caracteres: sun, mon, tue, wed, thu, fri e sat, que correspondem, respectivamente a domingo, segunda, terça, quarta, quinta, sexta e sábado.
user usuário – determina o usuário do sistema sob cujos privilégios o comando irá ser executado
cmd ou command comando – determina o comando a ser executado.

Notas:

  • Nos campos em que você não deseja fixar valor algum, pode inserir um asterisco ‘*’.
  • No campo dow, dia da semana, tanto 0 como 7 correspondem a domingo
  • Caso você determine valores para dom e para dow, o sistema não entra em conflito. O cron executa o comando nos dois casos
  • O Vixie Cron aceita listas. O que significa que você pode enumerar especificamente, por exemplo, os dias da semana em que você deseja que um script seja disparado. Veja um exemplo:
    59 11 * * 1,2,3,4,5 root backup.sh

    irá executar o script backup.sh toda segunda, terça, quarta, quinta e sexta, às 11:59

  • Se você preferir, pode usar assim:
    59 11 * * 1-5 root backup.sh

    onde 1 – 5 significa de segunda a sexta

  • Você também pode “pular” números. Veja como:
  • se você usar o valor */2 no campo dom, o comando irá rodar a cada 2 dias.
  • */5, no campo de horas, fará com que o comando seja executado a cada 5 horas
  • Os nomes dos meses e dos dias da semana não são sensíveis à caixa. Ou seja, tanto faz escrever Jul como jul. O importante é que você use apenas as 3 primeiras letras do dia da semana ou do nome do mês.
  • Você pode (e deve) inserir comentários para explicar o que está fazendo. Para isto, basta usar um ‘#’ no início da linha comentada.

O crontab é multiusuário

O Unix é um sistema, por natureza, multiusuário. Cada usuário que se conecta ao sistema pode, em tese, programar as próprias tarefas a serem executadas pelo sistema.

Assim, você, que tem um blog WordPress instalado em um servidor – que te forneça acesso SSH – pode programar um backup e determinar a frequência com que ele irá ocorrer.

Para começar a personalizar o seu próprio crontab, use o comando:

crontab -e

O sistema irá abrir o seu editor de textos padrão (o meu é o nano).

Se você quiser usar o nano também, para editar o crontab execute o seguinte comando:

export EDITOR=nano

Note que o seu crontab “particular” segue os padrões do arquivo /etc/crontab do sistema.

Uma vez terminada a edição, o cron faz a verificação sintática e permite corrigir possíveis erros. Se tudo estiver bem, é só deixar rolar.

Outros editores de texto

Usuários que se sintam mais confortáveis com outros editores de texto, podem faze a edição no aplicativo da sua preferência.

Depois de concluído, é só usar o comando crontab para substituir o seu arquivo crontab atual pelo arquivo que você acabou de criar.

Vamos supor que você tenha escrito as definições em um arquivo chamado meu.arquivo.cron, o comando a ser usado é o seguinte:

crontab meu.arquivo.cron

Outros usos

Para listar as definições atuais do crontab:

crontab -l

Para apagar e remover o seu crontab atual:

crontab -r

Como restringir acesso ao crontab

Quem é administrador de um sistema pode impedir que usuários tenham acesso ao cron. Você pode inserir, no arquivo /etc/cron.allow os usuários que têm permissão de alterar o crontab. O arquivo /etc/cron.deny é onde são inscritos os usuários que terão seu acesso negado ao serviço.

Uma maneira de restringir quase todos e permitir o acesso a alguns é adicionar a linha ALL ao /etc/cron.deny e ir acrescentando um a um os usuários aos quais você deseja liberar o acesso em /etc/cron.allow.

Veja como restringir o acesso de todo mundo ao serviço:

echo ALL &gt;&gt; /etc/cron.deny

Para permitir o acesso à usuária sandrinha, use o comando:

echo sandrinha &gt;&gt; /etc/cron.allow

Na ausência de qualquer um destes dois arquivos, o uso do cron, no sistema, é irrestrito — ou seja, todo mundo pode usar.

Se você tiver apenas o arquivo /etc/cron.allow e, nele, inscrever a usuária sandrinha, o sistema vai entender que todos os outros usuários estão proibidos e somente esta poderá fazer uso do serviço.

Com estas dicas básicas, você já estará habilitado a administrar as tarefas programadas no seu sistema. Mais informações podem ser encontradas com o comando man crontab.

Have fun!

Como mudar o hostname no Ubuntu

No momento em que você instala o seu sistema pela primeira vez, é perguntado qual vai ser o nome do computador dentro da rede em que ele estará sendo instalado – ainda que não haja rede fisicamente, o computador tem que ter um nome. Se você se arrependeu do nome dado inicialmente, veja aqui como trocar.

Como mudar o hostname via linha de comando

Para realizar os procedimentos abra um terminal (Ctrl + Alt + T) e execute o comando hostname, para ver o nome atual da sua estação de trabalho:

hostname

Wintermute-server

Vamos alterar o hostname para Matrix-Server e verificar se deu certo:

sudo hostname Matrix-Server
hostname

Matrix-Server

Convém verificar o arquivo /etc/hosts e, se for o caso, alterar alguma linha que faça referência ao hostname antigo:

sudo nano /etc/hosts
127.0.0.1	localhost
127.0.1.1	Wintermute-server

Se houver alguma referência ao hostname antigo neste arquivo, altere-o para o novo nome.

127.0.1.1	Matrix-Server

Em seguida, grave o arquivo com Ctrl + O e saia do editor com Ctrl + X.
Agora, para que as mudanças tenham efeito em todo o sistema, você precisa reiniciar o computador. Se você quiser, contudo, pode apenas reiniciar o hostname, deste jeito:

sudo /etc/init.d/hostname stop
sudo /etc/init.d/hostname start

Como usar o tasksel para instalar softwares no seu sistema

O tasksel é um dos aplicativos mais eficientes para instalar vários softwares de uma só vez nas distribuições baseadas no Debian — o que inclui Ubuntu, Linux Mint etc.
O programa pode ser usado para determinar um perfil de uso de um computador: você diz para quê vai usar a máquina e o tasksel baixa e instala todos os softwares que correspondem àquele perfil de uso. E, sim! Você pode selecionar mais de um perfil para o seu sistema.
Em outro artigo, ensinei como usar o tasksel para instalar um servidor web (Apache), MySQL e PHP de maneira simples.

Como instalar o tasksel

O aplicativo é parte integrante do Debian. No Ubuntu, você precisa instalá-lo antes de usar.
Abra um terminal (Ctrl + Alt + T) e digite o comando, a seguir:


sudo apt-get update

sudo apt-get install tasksel

Aguarde enquanto os pacotes são baixados e instalados.
feito isto, rode o tasksel:


sudo tasksel
Tasksel no debian 7.0
Clique para ampliar

Quais são os perfis possíveis para instalação pelo tasksel?

A resposta a esta pergunta vai depender da distro utilizada. São muitos.
Contudo, a partir de uma pequena distro, como mini CD Debian, as opções são bastante limitadas inicialmente. Em uma distro tradicional Ubuntu a lista de perfis é bem maior – onde é possível trocar todos os pacotes instalados para Ubuntu/unity por Ubuntu/KDE, com dois toques no teclado.

Exemplos de uso do tasksel

Você pode listar os perfis possíveis de instalação ou ordenar a instalação diretamente via linha de comando, sem a necessidade de acessar a tela principal do aplicativo.
Para ver os perfis disponíveis:


sudo tasksel --list-tasks

Para ver os softwares que compõem o perfil de um servidor de impressão — e que serão instalados, se você o selecionar:


sudo tasksel --task-packages print-server

tasksel para instalar servidor dns
Clique na imagem para ampliar

Para instalar diretamente, da linha de comando, todos os pacotes que compõem o UbuntuStudio-photography (versão Ubuntu voltada para uso e produção de multimídia, com ferramentas profissionais de edição de fotos):


sudo tasksel install ubuntustudio-photography

Experimente e veja com seus próprios olhos como é fácil!
Fonte: Wiki Debian.

Como instalar o MySQL no Ubuntu

O MySQL é o banco de dados mais usado na web. Há estatísticas que o colocam como a escolha de quase 90% dos maiores sites.
Neste post, vamos ensinar como instalar a versão mais atual de um servidor de banco de dados MySQL no Ubuntu. Se você tiver interesse em instalar um servidor mais completo, com Apache e PHP, este artigo pode ser mais útil para você.

Instalação do MySQL

O primeiro passo é abrir um terminal (Ctrl + Alt + T, no Ubuntu)
Antes de instalar, vamos começar por (re)sincronizar os índices dos pacotes. Em seguida, vamos dar início à instalação:

sudo apt-get update
sudo apt-get install mysql-server

O processo pode levar alguns instantes, dependendo da velocidade de sua conexão. Se tudo correr bem, o Ubuntu irá baixar os pacotes de instalação e fazer a configuração básica do sistema para você e o deixará rodando, pronto para receber as suas primeiras ordens.

Usando o MySQL

Talvez você queira, neste momento, verificar se o seu servidor MySQL está funcionando. Você pode verificar isto através do netstat. Veja como:

sudo netstat -tap | grep -e mysql

O resultado deve ser semelhante ao que vocẽ vê na imagem abaixo

netstat mysql
Clique para ampliar.

POSTS RELACIONADOS

Como atribuir uma nova senha ao administrador no MySQL

Durante o processo de instalação, o sistema pede para cadastrar uma nova senha pro administrador. Se você não se lembra de qual era, pode recadastrar a senha agora:

mysqladmin -u root password novasenha

Como você pode ver, no Ubuntu este tipo de trabalho é bem fácil de ser realizado. Divirta-se!
PS.: Não esqueça de dar uma olhada em nossos outros artigos sobre MySQL.

Como adicionar ou criar um novo usuário no Linux

Elias Praciano - Tux Ninja - The Linux AdministratorEste post não pretende esgotar o assunto a ponto de deixar um administrador de sistemas totalmente satisfeito. Mas vamos tentar fazer a felicidade de usuários comuns, simplificando tudo, com o “jeito universal” de criar novos users.

No terminal

Aprender a criar novos usuários no terminal é útil por que você não fica dependente de variações nas interfaces gráficas dos diversos sabores Linux disponíveis. Desde que você tenha acesso a um terminal e privilégios administrativos, tudo sempre vai dar certo pra você.
Abra um terminal (Ctrl + Alt + T, no Ubuntu) e digite o comando:

sudo adduser ericclapton
Adicionando o usuário `ericclapton' ...
Adicionando novo grupo 'ericclapton' (1002) ...
Adicionando novo usuário `ericclapton' (1002) ao grupo `ericclapton' ...
O diretório pessoal '/home/ericclapton' já existe. Não copiando de '/etc/skel'.
Digite a nova senha UNIX: 
Redigite a nova senha UNIX: 
passwd: senha atualizada com sucesso
Modificando as informações de usuário para ericclapton
Informe o novo valor ou pressione ENTER para aceitar o padrão
	Nome Completo []: Eric Patrick Clapton
	Número da Sala []: 
	Fone de Trabalho []: 
	Fone Residencial []: 
	Outro []: 
A informação está correta? [S/n]

Depois que você forneceu a nova senha do usuário e a confirmou, ele já estará criado. As informações que são pedidas, em seguida, são opcionais. Não é fácil?
Isto já é o suficiente para você adicionar todas as pessoas que precisam ter acesso a um determinado computador em sua casa, na empresa, na escola etc.