“getpwnam() a échoué” dans /bin/sh seulement lorsqu'il est appelé par cron

Voici le contenu de mon fichier crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="[email protected]"

*/5 * * * * sh /robot/1/master.sh >/dev/null 2>&1
*/5 * * * * sh /robot/2/master.sh >/dev/null 2>&1
*/5 * * * * sh /robot/3/master.sh
*/5 * * * * sh /robot/4/master.sh >/dev/null 2>&1
*/5 * * * * sh /robot/5/master.sh >/dev/null 2>&1

C'est l'erreur continue de s'afficher dans /var/log/cron lorsqu'il tente d'exécuter:

crond[669]: (sh) ERROR (getpwnam() failed)

Si je lance un de ces fichiers manuellement, ils fonctionnent sans aucun problème.

Quel est le problème avec le fichier crontab?

De côté: sh n'est pas bash (même si c'est un lien symbolique vers bash, il fonctionne en mode de compatibilité, en tournant de nombreuses fonctionnalités). Ne pas marquer vos questions bash si vous n'êtes pas réellement via bash.
Êtes-vous en essayant de lancer le cron toutes les demi-minutes ou toutes les 5 minutes? L' */5 signifie qu'il sera exécuté à chaque minute avec un pas de 5.
de toute façon, getpwnam() failed est assez simple, en général. Quel est votre système de service d'annuaire/store? Si elle est configurée pour parler de quelque chose qui requiert une authentification Kerberos, par exemple, vos tâches cron ne peut pas avoir un billet en cours de validité.
...c'est-à-dire: Le problème n'est pas réellement avoir à faire avec votre fichier crontab, mais il a à voir avec la façon dont votre système de répertoire, le service qui fournit les informations getpwnam() requêtes pour -- est configuré. Qui va creuser autour de votre système config un peu.
moyens il va exécuter toutes les 5 minutes.

OriginalL'auteur Andrew | 2017-01-25