J’essaie d’exécuter une chaîne de commandes nohup
pour obtenir les statistiques du serveur. Cependant, je reçois une erreur de “No such file or directory” . Notez que les 3 appels nohup
sont incorporés dans un script qui est exécuté via un travail cron
. Et le premier nohup
fonctionne mais les 2 autres renvoient une erreur. Ironiquement, lorsqu’il est exécuté sur un autre serveur, le script fonctionne correctement.
Commandes
nohup vmpstat -a -n 60 1000 > myvmstats
(travaux)
nohup mpstat -P ALL 1 1000 > mympstats
(retourne: nohup ne peut pas exécuter la commande mpstat
: pas de tel fichier ou répertoire)
nohup iostat -t -x 60 1000 >myiostats
(retourne: nohup ne peut pas exécuter la commande iostat
: pas un tel fichier ou répertoire)
Une idée de ce qui ne va pas?
Le problème habituel avec les scripts qui s’exécutent à partir de la ligne de commande et non lors de l’exécution par cron
est “environnement”. Il y a beaucoup de questions sur SO où cela est illustré, y compris:
Pour le débogage, ajoutez une commande / ligne au script cron-run qui fait:
env > /tmp/cron.job
Vérifiez si le PATH contient ce que vous attendez et, en particulier, s’il inclut le répertoire (répertoires) où chacun des trois programmes est installé. Et vérifiez que vous exécutez les programmes que vous attendez de la ligne de commande:
which vmpstat mpstat iostat
Il est raisonnable de penser que les deux commandes «manquantes» ne sont pas dans un répertoire sur PATH lorsque votre script est exécuté par cron
. Et cron
vous offre un environnement minimaliste; c’est complètement différent at
cet égard.
Voir également:
Je pense que vous devriez donner le chemin relatif / absolu de votre programme
Par exemple:
nohup ./****.sh > /home/user/test.txt