Je souhaite exécuter un travail cron en tant qu'utilisateur spécifique sur ma machine. Comment puis-je spécifier l'utilisateur dans lequel un travail cron doit être exécuté?.
Les tâches cron seront exécutées sur un serveur (fonctionnant sous Ubuntu 10.0.4). Les «utilisateurs» sont des utilisateurs créés spécifiquement pour effectuer des tâches spécifiques côté serveur. Ces "utilisateurs" ont en commun:
En supposant que vous ne pouvez pas simplement vous connecter et l'ajouter à la crontab de cet utilisateur, mettez un fichier dans /etc/cron.d
. Il devrait être formaté comme un travail normal, mais avec un champ supplémentaire. Avant la commande à exécuter et après le minutage, mettez l'utilisateur. Vous devriez pouvoir trouver des exemples déjà sur votre système.
Exemple:
#<timing> <user> <command>
11 * * * * root /usr/lib/command
En tant que root, pour éditer le cron de user1:
crontab -u user1 -e
Vous pouvez également démarrer votre commande avec:
su user1 -c foo bar
Mais souvent, les scripts eux-mêmes réduisent leur propre accès lorsqu'ils sont démarrés en tant que root.
Je cherche cela depuis quelques semaines et cela a finalement fonctionné ...
Créez votre script en tant qu'utilisateur1
ssh user1@ipaddress
nano hourly-event.sh
entrer une commande
#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt
le rendre exécutable
chmod 755 hourly-event.sh
éditer la crontab pour user1
Sudo crontab -u user1 -e
mettre une ligne en bas pointant vers votre (vos) script (s)
# m h dom mon dow command
* * * * * bash ./hourly-event.sh
exit - sauvegarde des modifications (il affichera un répertoire/tmp lors de la sauvegarde ... tout va bien)
attendez le tour de la minute
ouvrez votre nouveau yay.txt
nano /home/user1/yay.txt
vous devriez maintenant avoir une nano fenêtre ouverte avec "YAY ça marche" comme première et unique ligne si le bas de votre nano fenêtre indique New File ... eh bien ... je ne sais pas
vous pouvez également vérifier votre entrée récemment crontab pour user1 à l’adresse:/var/spool/cron/crontabs/user1
PAIX
Parfois, vous voudrez peut-être que l'utilisateur charge son environnement, surtout s'il utilise "rbenv", "nvm", comme ceci:
0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec Ruby ...
(ici la commande source ~/.bash_profile
chargera votre environnement Ruby ou Node.