PDA

View Full Version : cron, crontab e scheduling


Chiancheri
10-11-2008, 13:43
Salve! spero che qualcuno possa trovare il tempo per rispondere al mio semplice quesito..

Voglio avviare lastfm (che di default riproduce l'ultima stazione memorizzata), alle ore 8 di ogni mattina.

Devo quindi dare il comando "lastfm" oppure /usr/bin/lastfm

- ho provato con gnome-schedule ad impostare l'orario e poi mettere come comando lastfm e non succede nulla..

- ho provato sempre con gnome schedule a dare come comando /usr/bin/lastfm e NULLA

- ho verificato il crontab con crontab -l ed effettivamente sono attivi!

- ho provato ad aggiungere manualmente su crontab MA ANCORA NULLA!!!

COSA SBAGLIO!?? NON CAPISCO!!!


se do crontab -l c'è scritto:

10 8 * * * /usr/bin/lastfm # JOB_ID_1


(avevo messo le 8 e 10)



CHE DEVO FARE?????

iron84
10-11-2008, 14:37
ti risp di qua ;)
per vedere se è giusto il percorso di lastfm, dai da terminale un
which lastfm
Poi prova ad aprirlo da un terminale il percorso che ti ha dato quel comando.
Es. /usr/bin/lastfm

Poi prova a togliere questa parte: # JOB_ID_1

prova così. Per provare se funziona ovviamente metti l'ora in modo che ti parta tra un paio di minuti , così vedi subito ;)

Chiancheri
10-11-2008, 14:51
avevo già fatto queste prove ma nulla.....

da shell funziona, da crontab NO!!

ho anche creato uno script provalast.sh con dentro:

#! /bin/sh
/usr/bin/lastfm


gli ho assegnati i permessi per avviarsi come programma, HO PROVATO A LANCIARE provalast.sh manualmente e funzionava

e poi ho editato crontab -e

ho messo che deve avviare lastfm ogni minuto!! e con crontab -l mi da:

* * * * * /home/dariocaruso/provalast.sh # JOB_ID_1


ho stoppato cron, l'ho riavviato e NULLA!!!!!


QUALCHE IDEA!?

Chiancheri
10-11-2008, 15:26
può essere che il problema sorge perchè si tratta di un prgrama grafico? non è che da qualche parte devo dare "Display 0:0) o cose del genere?

fra l'altro non ha bisogno di nessun provolegio..

cmq qualcuno sa dirmi dove trovo il log di questa operazione? Così vedo che cosa c'è che non va!!

iron84
10-11-2008, 15:26
allora facciamo un'altra prova a vedere se è crontab a dare problemi.

prova a dargli un altro comando visibile che vedi cosa fa.

Altra cosa che puoi fare è vedere con un cat, il contenuto di /var/mail/tuonomeutente
per eventuali errori.

Chiancheri
10-11-2008, 15:41
avevo già provato cercando di lanciare gimp, senza risultati... in oltre nella cartella /var/mail non c'è nulla.......... nemmeno tra i file nascosti....

a meno che devo vedere con "cat" in questo caso posso chiedere al mio gatto se lui lo vede.. (che significa "con un cat????)

iron84
10-11-2008, 15:49
allora c'è qualcosa che non funziona in crontab. Prova a reinstallarlo.

Io il file lo vedo.

Usare cat, significa dare il comando
cat percorso_del_file_di _cui_vogliamo_sapere_l'output
e vedere lo standard output del file. come se tu fossi nel blocco note di windows, ma senza possibilità di modifica. Una sorta di lettura.

Chiancheri
10-11-2008, 16:32
mm.... non credo.... non mi funziona ne su ubuntu, ne su xubuntu ne su arch linux.........


ma non capisco perchè!!

iron84
10-11-2008, 16:46
Non so più cosa suggerirti, mi spiace. :(

Chiancheri
10-11-2008, 19:16
allora..... sono riuscito.... e ho capito cosa non andava... lo spiego perchè potrebbe servire:

quando si fanno avviare a cron dei programmi con una GUI si deve mettere una cosa del genere:

30 8 * * * export DISPLAY=:0 && lastfm


UNA COSA FONDAMENTALE CHE NESSUNO SPIEGA DA NESSUNA PARTE è questa:

questo cron va lanciato dallo stesso utente che ha in quel momento accesso al display 0, e non si può dare un display che non è in uso, altrimenti non funziona....

per cui io mi chiedo.... anzichè questo "export DISPLAY=:0" non si può usare qualcosa che funziona a prescindere se l'utente ha o meno accesso ad un display? perchè altrimenti un altra persona che ha accesso con VNC o che passa davanti al computer, può spegnermi la sveglia!!!!! (le casse del pc stanno nella mia stanza, ma il pc sta all'ingresso)


cioè io vorrei avviarlo attraverso il mio di account e non da quello che al momento usa il desktop!!


forse con screen?? qualche idea?

iron84
10-11-2008, 20:53
Grazie, queste cose non le sapevo.

Mason
10-11-2008, 23:43
usa un programma che non usi le xlib, senno per forza deve connettersi ad un display, oppure fai partire anche un X sul display :1

(X :1 &) ; lastfm -display :1

dovrebbe fungere

il problema e poi killare il processo di X, una menata.

Consiglio, passa ad un client testuale che supporti lastfm e lancialo da cron

Chiancheri
12-11-2008, 11:40
Il problema era proprio quello, cioè che non ho trovato un modo per lanciare lastfm in modo testuale.

Se qualcuno di voi saprebbe indicarmi come....

Dane
12-11-2008, 14:00
UNA COSA FONDAMENTALE CHE NESSUNO SPIEGA DA NESSUNA PARTE è questa:

questo cron va lanciato dallo stesso utente che ha in quel momento accesso al display 0, e non si può dare un display che non è in uso, altrimenti non funziona....

non è che non funziona,
semplicemente viene lanciato dall'utente "cron", se non ricordo male


per cui io mi chiedo.... anzichè questo "export DISPLAY=:0" non si può usare qualcosa che funziona a prescindere se l'utente ha o meno accesso ad un display? perchè altrimenti un altra persona che ha accesso con VNC o che passa davanti al computer, può spegnermi la sveglia!!!!! (le casse del pc stanno nella mia stanza, ma il pc sta all'ingresso)

cioè io vorrei avviarlo attraverso il mio di account e non da quello che al momento usa il desktop!!


non ho mai usato cron,
ma non è che puoi mettere scheduling per utente? (anche cambiando il programma di cron)

Chiancheri
13-11-2008, 11:21
@ Dane

cron funziona perfettamente multiutente, ma solo se i programmi gestiti non hanno gui. Se hanno gui, va indicato a cron su quale display (su cui nel frattempo l'utente in questione ha già Gnome attivo) visualizzare il programma.

Ne sono sicuro perchè trattandosi di un programma che gestisce musica, se si avvia lo sento, se non si avvia non sento nulla... quindi è molto semplice...

nLuca
13-11-2008, 17:01
prova questo con xhost

http://wiki.lug-bocconi.org/doku.php?id=howto:cron_e_crontab#crontabavviare_applicazioni_con_interfaccia_grafica

Chiancheri
14-11-2008, 12:22
scusate qualcuno sa come si usano gli "screen"? così posso avviare uno screen con lastfm lanciato da un altro utente, poi staccarlo e ad un orario specificato uccidere lo screen

qualcuno può aiutarmi a realizzare questa cosa?

nLuca
14-11-2008, 18:08
ma fare uno screen separato è proprio necessario??
io farei cosi:

assumi l'utente che vuoi che esegua lastfm
su pippo

prepara il file con la tabella per cron "nano tabella_cron"

10 8 * * * export DISPLAY=:0.0; /usr/bin/lastfm


poi lo dai in pasto a crontab

crontab tabella_cron


diventi root

su


abiliti pippo a usare la sessione grafica corrente di xorg

xhost +local:pippo


e vedrai che funziona


per ucciderlo all'ora tot aggiungi in /etc/crontab

50 8 * * * root killall lastfm

Chiancheri
16-11-2008, 16:52
appena ho 5 minuti lo provo allora..... Se funziona hai ragione tu, sarebbe la scelta migliore... il mio problema è che non sapevo farlo.......