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 as 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ê estiver fazendo não exigir root, não use root. Se você nem precisa acessar os arquivos e pastas da sua conta, poderá criar um novo usuário e usar essa conta apenas para essa tarefa. Por outro lado, se sua tarefa não exigem raiz, crontab uso da raiz ( su
/ sudo su
a raiz, em seguida, usar crontab -e
).
Preciso reiniciar o servidor depois de salvar o trabalho cron no arquivo crontab antes que ele comece a funcionar?
Não, ele começará a funcionar imediatamente (bem, a próxima hora programada possível).
Por que não editar o arquivo diretamente? Onde ele está localizado?
Os arquivos crontab do usuário estão localizados /var/spool/cron/crontabs
, mas suas permissões são definidas de tal maneira que eles não podem ser acessados sem a permissão do superusuário (mas, uma vez aberto e o processo cron eliminado os privilégios, ele ainda pode acessar o arquivo).
O sistema não foi projetado para os usuários finais editarem esses arquivos diretamente e, de fato, a parte superior do arquivo possui um DO NOT EDIT THIS FILE
aviso severo na parte superior para esse efeito. Em vez disso, o arquivo foi projetado para ser editado por meio da crontab -e
qual configura um espelho temporário do arquivo /tmp
para edição - sem o aviso severo - após o qual verifica e instala o próprio arquivo permanente crontab. Tudo isso pode ser feito sem a permissão do superusuário.
Se você editou o arquivo crontab diretamente, não sei qual seria o resultado. É possível que simplesmente não tenha efeito até a próxima reinicialização e pode ser difícil depurar qualquer erro.
crontab -e
permite editar seu usuário crontab sem o sudo. Os crontabs do usuário estão em/var/spool/cron/crontabs
um diretório que não pode ser acessado sem a permissão do superusuário (mas de maneira que uma vez que o cron elimine privilégios, ele ainda poderá lê-lo). Mesmo se você usar o sudo para tentar editar o arquivo diretamente, você verá um grande aviso na parte superior, "NÃO EDITAR ESTE ARQUIVO" - o arquivo foi projetado para ser editado usando ocrontab
comando que usa uma cópia temporária/tmp
e depois instala depois de salvar.Todo usuário tem seu próprio
crontab
.Para vê-lo, basta digitar
e, sim, você viu direito, quando quiser adicionar um
crontab
e simplesmentepela primeira vez, você será perguntado sobre o editor para usar
crontab
. Como você é um novato, como eu disse, recomendo usar o nano, é o editor mais simples de usar.O crontab em si funciona assim
Por exemplo, para acionar um trabalho a cada 15 minutos apenas na segunda-feira, faça-o assim
e SIM, é muito importante que você coloque seu cronjob no crontab do usuário que possui direitos suficientes para executá-lo.
Portanto, se seu script precisar ser root ou um usuário especial, certifique-se de su para esse usuário e adicione 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á.bashrc
ou similar. Você sempre precisa informar ao cron onde ele pode encontrar os arquivos e diretórios.Para responder ao restante de suas perguntas:
É claro que funcionará por conta própria, é para isso que serve. Mas você precisa verificar se o cronjob realmente faz isso ou se está faltando alguma coisa. Por exemplo, faça login em um arquivo de log para ver se ele realmente funciona.
E NÃO, não é necessário reiniciar. Normalmente, uma reinicialização com linux é necessária apenas se você instalar um novo kernel. Para usar, você precisará reiniciar. Quase tudo o mais pode ser feito sem a reinicialização no Linux. Claro que existem exceções, mas em geral essa afirmação está correta.
fonte