2013-01-03 17 views
8

devo start.sh script bash che esegue se CRON JOB sul server di Ubuntujob cron non emette a nohup.out

linee start.sh contiene muggito menzionati di codice

percorso di start.sh è /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 

mio è Sue è se corro start.sh mio io su riga di comando emette in nohup.out file di

ma quando si esegue questo file bash attraverso cronjob (anche se gli script sono in esecuzione bene) la sua non producendo nohup.out

come posso ottenere uscita di questo cronjob in nohup.out?

+1

come/dove stai creando questo file nohup.out? ricorda che la directory di lavoro predefinita di cron jobs è l'homedirectory dell'ID utente su cui vengono eseguiti. se stai usando percorsi relativi per questo file, sarai relativo alla home directory dell'account, non alla tua attuale directory di shell –

+0

@MarcB sono noob su linux .. ogni riga viene aggiunta in uscita nohup ad esempio nohup scrapy crawl 3rd & ho aggiunte questo in crontab 40 10 * * * /home/ubuntu/folder1/folder2/start.sh –

+1

FYI: il costrutto 'python init.py & attesa $' (si sviluppa su due linee) è inutile; rilascia il '&' e rimuovi il 'wait'. Non è un fattore nel tuo problema; funziona anche come scritto. Ma è inutile. –

risposta

14

Perché stai usando nohup? nohup è un comando che indica al terminale in esecuzione di ignorare il segnale di disconnessione. cron, tuttavia, non ha segnale di disconnessione, perché non è collegato a una sessione terminale.

In questo caso, invece di:

nohup scrapy crawl first & 

probabilmente si vuole:

scrapy crawl first > first.txt & 

L'ultimo esempio funziona anche in un terminale, ma quando si chiude il terminale, il segnale di hangup (hup) viene inviato, che termina il programma.