2012-10-07 26 views
8

In Linux, c'è un modo per eseguire un cron job in foreground (o in modalità interattiva)? (Ho un programma che viene eseguito periodicamente per accettare l'input dell'utente e fare un po 'di elaborazione. Quindi voglio programmarlo come un cron job che può essere eseguito in primo piano).Linux: Esegui cron job in primo piano

+0

Come ti aspetti che 'cron' ti raggiunga? Aprire un terminale, avviare un'applicazione GUI, ecc.? –

+0

L'apertura di un terminale funzionerebbe per me. In realtà, non voglio creare un'app sofisticata per la GUI. Il mio pensiero è il seguente: se eseguo il programma manualmente da una shell, posso dare input in modo interattivo. Voglio essere in grado di fare lo stesso quando il programma viene eseguito automaticamente. – Neo

+0

Forse potresti essere interessato a 'expect' http://www.tcl.tk/man/expect5.31/expect.1.html ma non sono sicuro che sia una buona idea usarlo. –

risposta

9

Prova questo fuori su del vostro utente crontab:

@hourly DISPLAY=:0 xterm -e /path/to/my/script.sh 

Si aprirà (ogni ora) un xterm con l'esecuzione dello script e si chiuderà al termine dell'esecuzione dello script. Naturalmente, è necessario modificare la parte @hourly in base alle proprie esigenze.

+0

Funziona! Proprio quello che volevo. Grazie Renato. – Neo

1

Supponendo che si sta eseguendo X, è sempre possibile che si apra una finestra su un display selezionato.

+0

Presumo, intendi Mac OS X. Sto usando Ubuntu. Tuttavia, vorrei che il mio script funzionasse su Ubuntu e su Mac OS X. – Neo

+2

Intendevo X windows, http://en.wikipedia.org/wiki/X_Window_System, e probabilmente lo stai usando – Ofir

+0

Sì. Indovina che è anche quello che gli altri hanno suggerito. Grazie. – Neo

2

Per GUI script in cron, provare la seguente riga in un shell:

crontab -e 

Poi nel crontab:

0 7 * * * DISPLAY=:0 /PATH/TO/SCRIPT 
+0

Adattarlo alle tue esigenze, di sicuro;) –

+0

Ho provato lo stesso ma sembra ancora in esecuzione in background. Grazie comunque per la tua risposta. – Neo