crontab -e
:
Utilizável por usuário; abre a tabela cron
para o usuário solicitante para edição (um arquivo temporário em /tmp/
, por exemplo, /tmp/crontab.<RANDOM>/crontab
, como você viu) e, ao salvar o conteúdo, as verificações de integridade são feitas. Se passado, o arquivo é movido para /var/spool/cron/crontabs/
, ou seja, o diretório cron
spool e salvo com o nome do arquivo sendo o mesmo que o nome do usuário solicitante. Como a tabela cron
está sendo salva para o nome de usuário invocador (por exemplo, /var/spool/cron/crontabs/foobar
, assumindo o nome de usuário foobar
); como todos os trabalhos de cron
são executados como esse usuário, então nenhum campo de nome de usuário é necessário, cada entrada aqui precisa de 6 campos (você sabe que estes já presumo)
/etc/crontab
:
Este é o sistema cron
table ( crontab
file), não há noção de chamar usuário aqui, pois somente o superusuário pode editar este arquivo, esse arquivo precisa de 7 campos, com um campo username adicional no espaço / tab 6º campo separado. Isso vale para todos os arquivos cron
em /etc/cron.d/
também. Outra diferença com crontab -e
é que você precisa abrir o arquivo como um argumento para um editor ou qualquer programa / shell que possa fazer E / S, enquanto com crontab -e
o arquivo seria aberto com o editor mencionado como VISUAL
ou EDITOR
ou /usr/bin/editor
- o primeiro ganha.
Por que seu comando falhou em cron
:
Porque shutdown
só pode ser executado como superusuário ou usuários capazes, e o usuário invocador provavelmente não se enquadra nessa categoria. Você pode colocar root
em crontab
em sudo crontab -e
ou colocá-lo em /etc/crontab
, normalmente sempre prefiro tabelas de usuários individuais.
Notas:
Além disso, cron
usa um mínimo de PATH
por padrão e também SHELL
está definido como sh
( dash
no Ubuntu); estes dois são comuns cron
armadilhas.
Durante a depuração, sempre verifique syslog
e redirecione os STDOUT e STDERR relevantes do comando para um arquivo para análise posterior.