web-dev-qa-db-fra.com

crontab fonctionnant en tant qu'utilisateur spécifique

Je dois exécuter un script quotidiennement. Le script doit être exécuté en tant qu'utilisateur spécifique (ex. Utilisateur1) et non en tant que root. J'ai donc mis le fichier cron dans /etc/cron.d et mis le nom d'utilisateur dans la ligne (2e colonne). Mais cela donne une erreur indiquant que la commande est introuvable. Je soupçonne que le script n'a pas été exécuté en tant qu'environnement de user1. Ai-je oublié quelque chose?

23
Sam Kong

Seulement /etc/crontab et les fichiers dans /etc/cron.d/ possède un champ de nom d'utilisateur. Dans ce fichier, vous pouvez faire ceci:

1 1 * * * username /path/to/your/script.sh

Du crontab de root Sudo crontab -e vous pouvez utiliser:

1 1 * * * su username -c "/path/to/your/script.sh"

Ou vous pouvez utiliser le véritable crontab de l'utilisateur comme ceci:

Sudo crontab -u username -e

deuxième colonne dans tout fichier crontab correspond à l'heure à laquelle vous souhaitez exécuter le travail. Voulez-vous dire le sixième champ?

40
Ladadadada

Vous devrez peut-être définir le CHEMIN pour cet utilisateur, si l'exécutable que vous utilisez se trouve, par exemple, dans/usr/local/bin. Pour définir le CHEMIN, placez quelque chose comme ceci avant les cronjobs:

PATH=/bin:/usr/bin:/usr/local/bin

*/5 * * * * user1 sample_executable

L'autre façon est de spécifier complètement le chemin vers sample_executable dans votre cronjob, donc:

*/5 * * * * user1 /path/to/sample_executable

Si sample_executable fait référence aux exécutables qui ne se trouvent pas dans le PATH standard, vous devez utiliser la première option.

4
cjc

Le répertoire typique des utilisateurs crontabs se trouve dans/var/spool/cron/crontabs. Le format de fichier est celui qui n'inclut pas le nom d'utilisateur. Les crontabs utilisateur appartiennent à l'utilisateur et portent le nom de l'utilisateur avec le mode 0600. Ceci est mieux géré en écrivant votre fichier tab et en utilisant crontab -u username filename pour configurer les entrées cron que vous souhaitez pour cet utilisateur.

2
Jeff Ferland