Pourquoi ne cron pas exécuter un script de test de /etc/cron.hourly?

C'est la première fois que j'utilise cron dans son directory /etc/cron.hourly pour exécuter un script toutes les heures.

Pour une raison quelconque, le script ne semble pas fonctionner.

Voici ce que j'ai fait:

Ajout d'un script de test de base dans /etc/cron.hour:

/etc/cron.hourly# ll -rwxr-xr-x 1 root root 152 Jun 20 23:26 test.bash* 

Voici le script:

 /etc/cron.hourly# cat test.bash #!/bin/bash SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin echo "This line from test.bash" > /tmp/from.test.script 

Voici / etc / crontab:

 /etc/cron.hourly# cat /etc/crontab # mh dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 

Le packageage Cron a été installé par défaut, ensuite, j'ai lancé /etc/init.d/cron restart et j'ai attendu jusqu'à: 17. Toujours pas de trace de la sortie dans / tmp.

Une idée de quoi d'autre je pourrais essayer?


/etc/cron.hourly# run-parts –list /etc/cron.hourly

/etc/cron.hourly# run-parts –test /etc/cron.hourly

/etc/cron.hourly# strace run-parts /etc/cron.hourly

 execve("/bin/run-parts", ["run-parts", "/etc/cron.hourly"], [/* 16 vars */]) = 0 brk(0) = 0x7f8000 uname({sys="Linux", node="sheevaplug", ...}) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6efe000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=17282, ...}) = 0 mmap2(NULL, 17282, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ef9000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/arm-linux-gnueabi/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0XX\1\0004\0\0\0"..., 512) = 512 lseek(3, 1231644, SEEK_SET) = 1231644 read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400 lseek(3, 1231204, SEEK_SET) = 1231204 read(3, "A'\0\0\0aeabi\0\1\35\0\0\0\0054T\0\6\2\10\1\t\1\22\4\24\1\25\1"..., 40) = 40 fstat64(3, {st_mode=S_IFREG|0755, st_size=1233044, ...}) = 0 mmap2(NULL, 1275160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6da3000 mprotect(0xb6ecd000, 32768, PROT_NONE) = 0 mmap2(0xb6ed5000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12a) = 0xb6ed5000 mmap2(0xb6ed8000, 9496, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6ed8000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6ef8000 set_tls(0xb6ef86d0, 0xb6ef8da7, 0xb6ef8da8, 0xb6ef86d0, 0xb6f00000) = 0 mprotect(0xb6ed5000, 8192, PROT_READ) = 0 mprotect(0x12000, 4096, PROT_READ) = 0 mprotect(0xb6eff000, 4096, PROT_READ) = 0 munmap(0xb6ef9000, 17282) = 0 umask(022) = 022 brk(0) = 0x7f8000 brk(0x819000) = 0x819000 rt_sigaction(SIGCHLD, {0x931c, [], SA_NOCLDSTOP|0x4000000}, NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], NULL, 8) = 0 open("/etc/cron.hourly", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 fcntl64(3, F_GETFD) = 0x1 (flags FD_CLOEXEC) getdents(3, /* 6 ensortinges */, 32768) = 128 getdents(3, /* 0 ensortinges */, 32768) = 0 close(3) = 0 exit_group(0) = ? 

Quelle dissortingbution utilisez-vous? Selon le manuel des pièces d'essai d' Ubuntu :

Si ni l'option –lsbsysinit ni l'option –regex n'est donnée, les noms doivent être entièrement composés de lettres majuscules et minuscules ASCII, de numbers ASCII, de caractères ASCII et de tirets ASCII.

Par conséquent, run-parts test.bash pas un script nommé test.bash . Grâce à cette règle, vous pouvez éviter d'exécuter accidentellement des scripts renommés, par exemple *.old ou *.dpkg-dist *.dpkg-old par dpkg upgrades.