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.