Exécuter un fichier avec le cron (non php)

diabli73 Messages postés 6 Statut Membre -  
(Pabix) Messages postés 600 Statut Membre -
Bonjour, j'arrive a éxécuter des fichiers php avec le crontab, mais si je veux exéctuter des fichiers sans extension (shell), cela ne fonctionne pas.

je fais :

# m h dom mon dow command
* * * * * /usr/local/sbin/S3DServer_script start & 2>&1 > /root/cmd.log

et dans mon log il ne se passe rien. alors que duanq je l'éxéctue dans le shell cela fonctionne.
Configuration: Windows 2003
Internet Explorer 7.0

4 réponses

  1. (Pabix) Messages postés 600 Statut Membre 81
     
    Bonjour, les 2>&1 et > sont de la syntaxe bash, donc interprétée par bash. cron réclame seulement une commande telle quelle et non des redirections d’entrée-sortie.

    Faites un fichier #!/bin/bash contenant les bonnes instructions et exécutez CE script avec cron.

    et puis êtes-vous sûr de vouloir lancer ça à chaque minute ? C’est beaucoup :)
    0
  2. diabli73 Messages postés 6 Statut Membre
     
    non je vais le le lancer qu'une fois dans la journée mais c'est pour faire un test que je le lance chaque minute.
    Je vais tout de suite essayé ce que vous m'avez dit.
    merci
    0
  3. diabli73 Messages postés 6 Statut Membre
     
    cela fonctionne. Merci. Par contre j'ai une autre question vous allez peut etre pouvoir m'aider (c'est un problème de chemin je pense)

    Mon fichier shell sert a lancer un serveur.
    je fais un * * * * * /usr/local/sbin/S3DServer_script start >> /root/cmd.log

    et en shell cela fonctionne.

    par contre quand je le fais en cron j'ai le message
    Starting S3DServer Advanced 1.5.1 for Linux
    Couldnt find S3DServer-1.5.1-Advanced-Linux

    alors que S3DServer-1.5.1-Advanced-Linux se trouve dans /usr/local/sbin/ (le rep ou est lancé le script dans le cron).

    le code de la méthode est :
    start)
    		if [ -e $S3DServerLife ]; then
    			echo "S3DServer Advanced 1.5.1 for Linux seems to be running";
    			echo "If you are sure the server is not running, delete $S3DServerLife"
    			exit 1
    		else
    			echo "Starting S3DServer Advanced 1.5.1 for Linux"
    			if [ -e S3DServer-1.5.1-Advanced-Linux ]; then
    				if [ ! -x S3DServer-1.5.1-Advanced-Linux ]; then
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, trying to set it"
    					chmod u+x S3DServer-1.5.1-Advanced-Linux
    				fi
    				if [ -x S3DServer-1.5.1-Advanced-Linux ]; then
    					./S3DServer-1.5.1-Advanced-Linux &
                        for c in $(seq 1 300); do
                            if [ ! -e $S3DServerLife ]; then
                                echo -n "."
                                sleep 1
                            else
                                echo "done"
                                break
                            fi
                        done
    				else
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, fix this"
    					exit 4
    				fi
    			else
    				echo "Couldnt find S3DServer-1.5.1-Advanced-Linux"
    				exit 5
    			fi
    		fi
    	;;
    0
  4. (Pabix) Messages postés 600 Statut Membre 81
     
    Non, le cron ne lance pas le script depuis un répertoire quelconque.

    Vous devriez utiliser « cd /usr/local/sbin » en début de script (et ensuite « cd - » pour revenir au répertoire précédent si besoin)

    D’autre part évitez $(seq 1 300) et préférez {1..300} qui ne fait pas appel à une commande GNU inutilement (c’est du bash).
    0