A execução de crontab -e
edita os crontabs dos usuários (em vez do sistema crontab /etc/crontab
). Se você executar sudo crontab -e
, isso edita o crontab do usuário da conta root (que não é igual a /etc/crontab
). O crontab do usuário da conta root é utilizável, mas geralmente não é o que os administradores de sistema desejam editar.
Quando você executa crontab -e
, o utilitário crontab
copia o arquivo crontab específico do usuário que está sendo editado em um arquivo temporário. Este é o comportamento pretendido e correto. Supondo que você faça alterações no arquivo temporário no editor, crontab
, em seguida, grava essas alterações automaticamente no arquivo crontab depois de terminar a edição.
Braiam tem explicou alguns detalhes sobre por que e como isso é feito em" Cron, crontab -e lê o arquivo errado " em Unix.SE :
Esse é o comportamento padrão.
crontab -e
iria copiar o crontab arquivo para o diretório temporário e use o editor listado em Variáveis de ambiente VISUAL ou EDITOR para abrir este arquivo, ao salvar Em seguida, ele tentaria copiar o arquivo para o local original. Isto é uma operação atômica.As razões por trás disso são variadas, desde impedir que dois usuários editem o mesmo arquivo ao mesmo tempo para ter uma verificação de sanidade / sintaxe antes escrevendo o arquivo original.
Ah, o
crontab -e
também não recorta o arquivo de forma alguma, a menos que você use o Debian.
A captura de tela em sua pergunta mostra algo muito parecido com isso, que é o texto padrão comentado de um crontab usuário no Ubuntu:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
Em contraste, um sistema padrão crontab ( /etc/crontab
) no Ubuntu se parece com isto:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the 'crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Como o siloko explica em " Crontab -e abre novo arquivo toda vez que eu o executo ," e como discutido nos comentários iniciais do sistema padrão crontab (mostrado acima ), uma maneira pela qual o crontab /etc/crontab
em todo o sistema difere dos crontabs por usuário é que cada entrada contém um campo que especifica qual usuário executa o comando. O exemplo acima tem root
para cada um dos três comandos, mas você pode fazer com que os comandos sejam executados como outros usuários, especificando seus nomes de usuário nesse campo.
Embora eu não possa ter certeza, meu palpite é que você está tentando editar o crontab do sistema em vez do crontab do usuário do root (ou de qualquer outra pessoa).
Leitura adicional:
-
man 5 crontab
e CronHowTo descreve como escrever arquivos crontab. - Como faço para configurar um trabalho Cron? mostra várias maneiras para agendar tarefas do sistema e do usuário com o cron.