2013-01-03 4 views
8

j'ai start.sh script bash qui exécute bien CRON JOB sur le serveur ubuntutâche cron ne sort pas à nohup.out

start.sh contient lignes mentionnées ci-dessous de code

chemin

de start.sh est /home/ubuntu/folder1/folder2/start.sh

#!/bin/bash 

crawlers(){ 
    nohup scrapy crawl first & 
    nohup scrapy crawl 2nd & 
    wait $! 
    nohup scrapy crawl 3rd & 
    nohup scrapy crawl 4th & 
    wait 
} 

cd /home/ubuntu/folder1/folder2/ 
PATH=$PATH:/usr/local/bin 
export PATH 

python init.py & 
wait $! 
crawlers 
python final.py 

mes est- Sue est si je cours start.sh mon moi-même sur la ligne de commande, il émet dans nohup.out fichier

mais quand il exécute ce fichier bash par cronjob (bien que les scripts sont en cours d'exécution très bien) sa non la production nohup.out

comment puis-je obtenir sortie de cette cronjob dans nohup.out?

+1

comment/où créez-vous ce fichier nohup.out? rappelez-vous que le répertoire de travail par défaut des tâches cron est le répertoire personnel de l'ID utilisateur dans lequel elles sont exécutées. Si vous utilisez des chemins relatifs pour ce fichier, vous serez en relation avec le répertoire personnel du compte, et non avec votre propre répertoire courant –

+0

@MarcB je suis noob sur linux .. chaque ligne est ajoutée en nohup par exemple nohup scrapy crawl 3 & i ajouté ceci dans crontab 40 10 * * * /home/ubuntu/folder1/folder2/start.sh –

+1

Pour votre information: la construction 'python init.py & attente $' (répartis sur deux lignes) est inutile; déposez le '&' et supprimez le 'wait'. Ce n'est pas un facteur dans votre problème. cela fonctionne aussi comme écrit. Mais c'est inutile. –

Répondre

14

Pourquoi utilisez-vous nohup? nohup est une commande qui indique au terminal en cours d'exécution d'ignorer le signal de raccrochage. cron, cependant, n'a pas de signal de raccrochage, car il n'est pas lié à une session de terminal.

Dans ce cas, au lieu de:

nohup scrapy crawl first & 

Vous voulez probablement:

scrapy crawl first > first.txt & 

Le dernier exemple fonctionne également dans un terminal, mais lorsque vous fermez le terminal, le signal de raccrochage (hup) est envoyé, ce qui termine le programme.