El problema podría ser que su usuario no tenga los derechos para ejecutar el archivo.
Primero establece el indicador de ejecución para su secuencia de comandos
chmod +x /home/samitha/bash.sh
Luego, debe verificar los permisos para el archivo php con
ls -lah /var/www/Controller
Si no aparecen ni su grupo de usuarios ni su nombre de usuario, debe ejecutar el script con derechos de superusuario o cambiar sus permisos.
La primera forma sería poner su entrada en
sudo crontab -e
o el segundo sería (que no recomendaría, ya que todos podrían ejecutar el script llamando a su sitio)
chmod a+x /var/www/Controller/post.php
TL;DR:inserte "bash" antes del script en crontab y en cualquier script llamado por el script.
Tengo una solución para esto. Ninguna de las respuestas anteriores funcionó para mí. Tengo dos portátiles Asus con Kubuntu (actualizado a kernel v5.8) con configuraciones prácticamente idénticas. No sé por qué uno tiene el problema y el otro no. Sin embargo, después de 2 días de experimentación encontré una solución. Con suerte, alguien con más conocimientos que yo puede encontrar la causa.
Cron está usando sh en lugar de bash. Intenté agregar SHELL=/bin/bash y definir PATH sobre los comandos en crontab y no tuvo ningún efecto. Todos mis scripts tienen el shebang #!/bin/bash al principio, también sin efecto. Los permisos de mis scripts (y sus directorios) son 777. Los scripts no se ejecutan para cron o usuarios, sin importar qué combinación de usuario:grupo probé en los archivos. El uso de rutas de acceso completas es cron y dentro de los scripts no tuvo ningún efecto diferente al uso de variables de entorno.
Mi solución fue insertar "bash" antes del nombre de archivo del script en crontab. Por ejemplo:
00 01 * * * bash $BASH_SCRIPTS/backup_os.sh
(Sí, cron no tiene ningún problema con el uso de mis variables de entorno definidas en /etc/environment). Además, en cron, cuando un script ejecuta otro script, el segundo script obtendrá "permiso denegado" a menos que ese script se modifique para tener "bash " antes del nombre de archivo de la segunda secuencia de comandos, o use "fuente" si eso funciona con su secuencia de comandos.
El usuario que ejecuta ese cron (el que ejecuta cron -e) no tiene los derechos adecuados para ejecutar ese script. Es decir:el script carece del indicador de ejecución o no es posible acceder a él porque algunos de sus directorios antecesores carecen del indicador de ejecución.
también puede probar la siguiente solución:
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