Qual é a maneira correta de editar um arquivo crontab?

Qual é a maneira correta de editar um arquivo crontab?

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 crontabarquivo 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 crontabarquivo 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 supara 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 FILEaviso severo no topo para esse efeito. Em vez disso, o arquivo foi projetado para ser editado, crontab -econfigurando um espelho temporário do arquivo /tmppara 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/scriptvocê está usando, porque o crontab não funcionará com .bashrcou 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.

informação relacionada