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?
19
Réponses:
Seuls
/etc/crontab
les fichiers et/etc/cron.d/
contiennent un champ de nom d'utilisateur. Dans ce fichier, vous pouvez faire ceci:Depuis le crontab de root,
sudo crontab -e
vous pouvez utiliser:Ou vous pouvez utiliser le crontab réel de l'utilisateur comme ceci:
La deuxième colonne de tout fichier crontab correspond à l'heure à laquelle vous souhaitez exécuter le travail. Voulez-vous dire le sixième champ?
la source
/etc/cron.d/
les fichiers font partie de/etc/crontab
.sudo
est également inutile. Je vais supprimer cette partie.sudo su...
est généralement inutile;sudo -u <user> <command>
est généralement suffisant. (b) sudo s'étouffera sur certains systèmes s'il n'y a pas de TTY attaché (comme lorsqu'il est exécuté par cron). Cela peut être corrigé dans votre fichier sudoers.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 tâches cron:
L'autre façon est de spécifier complètement le chemin vers sample_executable dans votre cronjob, donc:
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.
la source
Le répertoire typique des crontabs utilisateur se trouve dans / var / spool / cron / crontabs. Le format de fichier est celui qui n'inclut pas le nom d'utilisateur. Les crontabs utilisateur sont la propriété de 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 voulez pour cet utilisateur.la source