
Estou tentando automatizar a atualização de awstats para meu servidor web e entendo que preciso usar o cron para configurar isso. Então cada usuário tem um arquivo crontab?
Eu estava seguindo as instruçõesaquicomunidade/AWStats
E diz para ir ao arquivo em:/etc/crontab
Esse arquivo já contém algumas informações. Este é o crontab
arquivo principal ou algo assim? Eu vi algumas instruções on-line para usar o arquivo que aparece com a extensão crontab -e
.
Qual é o arquivo adequado para usar e a melhor maneira de fazer isso?
Se eu agendar uma tarefa como meu usuário não root, ela será executada sozinha no intervalo de tempo especificado, sem problemas?
Precisarei reiniciar o servidor depois de salvar o cron job no crontab
arquivo antes de começar a funcionar?
Responder1
Qual é o arquivo adequado para usar e a melhor maneira de fazer isso?
crontab -e
é a melhor maneira de fazer isso - isso permitirá que você edite facilmente crontabs por usuário.
Se eu agendar uma tarefa como meu usuário não root, ela será executada sozinha no intervalo de tempo especificado, sem problemas?
Sim, e será executado com os privilégios dessa conta de usuário.
Como princípio, é melhor executar tarefas agendadas com os privilégios mais baixos possíveis, portanto, se o que você está fazendo não exigir root, não use root. Se você nem precisa acessarseuarquivos e pastas da conta, você poderá criar um novo usuário e usar essa conta de usuárioapenaspara essa tarefa. Por outro lado, se a sua tarefafazrequer root, use o crontab do root ( su
/ sudo su
para root então use crontab -e
).
Precisarei reiniciar o servidor depois de salvar o cron job no arquivo crontab antes de começar a funcionar?
Não, começará a funcionar imediatamente (bem, no próximo horário agendado possível).
Por que não editar o arquivo diretamente? Onde está localizado?
Os arquivos crontab do usuário estão localizados em /var/spool/cron/crontabs
, mas suas permissões são definidas de tal forma que não podem ser acessadas sem a permissão do superusuário (mas uma vez aberto e o processo cron elimina privilégios, ele ainda pode acessar o arquivo).
O sistema não foi projetado para que os usuários finais editem esses arquivos diretamente e, de fato, a parte superior do arquivo tem um DO NOT EDIT THIS FILE
aviso severo no topo para esse efeito. Em vez disso, o arquivo foi projetado para ser editado, crontab -e
configurando um espelho temporário do arquivo /tmp
para edição - sem aviso severo - após o qual ele verifica e instala o próprio arquivo crontab permanente. Tudo isso pode ser feito sem permissão de superusuário.
Se você editou o arquivo crontab diretamente, não sei qual seria o resultado. É possível que simplesmente não entre em vigor até a próxima reinicialização e quaisquer erros possam ser difíceis de depurar.
Responder2
Cada usuário tem o seu próprio crontab
.
Para ver basta digitar
crontab -l
e, sim, você viu certo, quando quiser adicionar um crontab
, basta fazer
crontab -e
pela primeira vez, você será questionado sobre o editor a ser usado crontab
. Como você é um novato, recomendo usar o nano, é o editor mais simples de usar.
O próprio crontab funciona assim
MIN = Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW = Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line
Então, por exemplo, para acionar um trabalho a cada 15 minutos apenas na segunda-feira, você faz assim
*/15 * * * mon /home/me/yourscript.sh
e SIM, é muito importante que você coloque seu cronjob no crontab do usuário que possui direitos suficientes para executá-lo.
Portanto, se o seu script precisar ser root ou um usuário especial, certifique-se de usar su para esse usuário e adicionar o cronjob lá.
Também é muito importante!
cronjob é burro! Sim, eu disse isso. Sempre certifique-se de inserir o PATH completo para o que application/command/script
você está usando, porque o crontab não funcionará com .bashrc
ou similar. Você sempre deve informar ao cron onde ele pode encontrar os arquivos e diretórios.
Para responder ao restante de suas perguntas:
Claro que ele funcionará sozinho, é para isso que existe. Mas você precisa verificar se o cronjob realmente funciona ou se está faltando alguma coisa. Por exemplo, faça login em um arquivo de log para ver se realmente funciona.
E NÃO, não é necessário reiniciar. Normalmente, uma reinicialização do Linux só é necessária se você instalar um novo kernel. Para usá-lo, você precisa reiniciar. Quase todo o resto pode ser feito sem reiniciar no Linux.Claro que existem exceções, mas em geral esta afirmação está correta.