Ao lidar com entradas de crontab, é importante fazer a distinção entre um cron no nível do sistema, normalmente em um desses locais:
- / etc / crontab
- /etc/cron.d / *
- /etc/cron.daily / *
- /etc/cron.weekly / *
- etc.
Ou a variedade de nível de usuário, que na verdade está armazenada nesse diretório, /var/spool/cron
:
$ sudo ls -l /var/spool/cron/
total 0
-rw------- 1 saml root 0 Jun 6 06:43 saml
Você os acessa com o comando crontab -e
como um usuário específico. Até a raiz pode ter isso.
Seu problema
O exemplo que você incluiu é o tipo de linha que você especificaria ao criar um tipo de nível de sistema cron
. A única diferença é a inclusão do usuário com o qual o comando deve ser executado. Isso não é necessário ao criar um crontab -e
do tipo de entrada, pois ele é redundante, já que a entrada crontab já está designada para o usuário que o criou.
Então, basta alterar sua linha para isso:
0 0 * * 1 hostname >> /tmp/hostname.txt
Corrige seu problema.
Como funcionam os crons semanais diários?
Você normalmente verá uma entrada no seu arquivo principal /etc/crontab
assim:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Estes governam quando os scripts nos diretórios respectivos serão executados. Então o diário é todas as manhãs às 4h20 da manhã, horário local.
Portanto, se você quiser executar o comando hostname >> /tmp/hostname.txt
diariamente, deverá colocá-lo em um script, torná-lo executável e colocar o arquivo de script no diretório cron.daily
.
/etc/cron.daily/catchhostname.bash
#!/bin/bash
hostname >> /tmp/hostname.txt
cron.daily
# ls -l |grep catch
-rwxr-xr-x 1 root root 118 Feb 28 2013 catchhostname.bash