Question

Je l'ai essayé exporter mes chemins et variables et crontab ne fonctionne toujours pas mon script. Je suis sûr que je suis en train de faire quelque chose de mal.

J'ai un script shell qui exécute un fichier jar. Ce ne fonctionne pas correctement.

Après avoir lu autour J'ai lu c'est souvent due à des chemins erronés en raison de l'exécution par Cron sa propre instance de coquille et n'a donc pas la même configuration de préférences que mon profil fait.

Voici ce que mon script ressemble aujourd'hui après plusieurs modifications:

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

ce sont les pièces les plus importantes du script, le reste sont shell simple base.

Quelqu'un peut-il me dire ce que je fais mal?

Était-ce utile?

La solution

Essayez d'indiquer le chemin complet vers le fichier jar:

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o

Autres conseils

Je voudrais juste vous dire ce que vous avez déjà exclu. Vérifiez votre chemin et environnement

Puisque vous avez alredy fait, commencer le débogage. Comme les points de contrôle d'écriture dans un fichier journal pour voir dans quelle mesure votre script obtient (si même commencé du tout), vérifiez le fichier journal cron pour les erreurs, vérifiez votre courrier (Cron envoie mails sur les erreurs) et ainsi de suite ...

Pas très spécifique, désolé.

« exporter mes chemins et les variables » ne fonctionnera pas car exécute crontab dans un autre shell par un autre utilisateur.

En outre, pas sûr si cela est une faute de frappe dans la façon dont vous avez entré la question, mais je vois:

  

usr/bin/java

... et je ne peux que constater que vous n'êtes pas spécifier le chemin complet. Il cherche un répertoire nommé « usr » dans le répertoire de travail courant. fois oft pour crontab, le CWD est indéfini, donc votre référence ne va nulle part.

Essayez d'indiquer le chemin complet de la racine, comme suit:

  

/usr/bin/java

Ou, si vous voulez voir un exemple de pathing par rapport à l'action, vous pouvez également essayer:

  

cd /

     

usr/bin/java

Quelques pensées.

  1. Retirez le -- après la #!/bin/bash
  2. Assurez-vous de sortie directe de script vu par Cron au courrier ou ailleurs où vous pouvez voir (par exemple MAILTO = desiredUser)
  3. Vérifiez que votre script est en cours d'exécution et non bloqué par un autre scénario de longue durée (par exemple sur la deuxième ligne, ajouter touch /tmp/MY_SCRIPT_RAN && exit)
  4. Debug le script en utilisant set -x et set -v une fois que vous savez qu'il fonctionne réellement

Avez-vous définir des chemins nécessaires et env vars dans votre .profile personnel (ou un autre script)? Avez-vous essayé ce fichier en particulier l'approvisionnement (ou est-ce que vous faites déjà avec /root/.bash_profile?)

Une autre façon de demander c'est: êtes-vous certain que quelles que soient les chemins nécessaires et env vous attendez vars sont effectivement disponibles

?

Si rien d'autre, avez-vous essayé echo'ing valeurs individuelles ou tout simplement en utilisant la commande « env » dans votre script, puis examiner le stdout?

fournir le chemin complet à votre fichier jar, et quel utilisateur êtes-vous en cours d'exécution dans la crontab? Si vous définissez pour un utilisateur normal, pensez-vous que l'utilisateur a la permission de la source de profil de la racine?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top