Comment exécuter un script cron avec le script bash ici. Ce que j'ai fait comme suit et ici avec des erreurs.
fichier bash.sh
#!/bin/bash
cd /var/www/Controller
/usr/bin/php post.php
En crontab -e
* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1
Mais maintenant je reçois l'erreur suivante
/bin/sh: 1: /home/samitha/bash.sh: Permission denied
Comment vais-je le réparer? Qu'est-ce que j'ai mal fait?
vous pouvez également essayer la solution suivante:
chmod +x post.php
chmod +x bash.sh
echo "* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1" >> cronjob
chmod +x cronjob
/etc/init.d/crond start #redhat based servers like centos
/etc/init.d/cron start #debian based servers like ubuntu
crontab cronjob
Le problème peut être que votre utilisateur ne dispose pas des droits nécessaires pour exécuter le fichier.
D'abord, vous définissez l'indicateur d'exécution pour votre script
chmod +x /home/samitha/bash.sh
Ensuite, vous devriez vérifier les permissions pour le fichier php avec
ls -lah /var/www/Controller
Si ni votre groupe d'utilisateurs ni votre nom d'utilisateur n'apparaissent, vous devez exécuter le script avec les droits de superutilisateur ou modifier ses autorisations.
La première façon serait de mettre votre entrée dans
Sudo crontab -e
ou le second serait (ce que je ne recommanderais pas, car tout le monde serait autorisé à exécuter le script en appelant votre site)
chmod a+x /var/www/Controller/post.php
L'utilisateur qui exécute ce cron (celui qui exécute cron -e) ne dispose pas des droits appropriés pour exécuter ce script. C'est-à-dire: soit le script n'a pas d'indicateur d'exécution, soit il n'est pas possible de l'atteindre car certains de ses répertoires ancêtres n'ont pas d'indicateur d'exécution.