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?????
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!!
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????)
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è!!
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?
Grazie, queste cose non le sapevo.
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....
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...
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?
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.......
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.