[RISOLTO] Applicazioni X da cron

Discussioni relative a Debian e Linux

[RISOLTO] Applicazioni X da cron

Messaggioda agilulfo » 09/01/2019, 13:14

Carissimi, avrei la necessità di avviare un browser web ad orari stabiliti; ho provato ad inserirlo in crontab ma il browser non si avvia (ho provato anche, per controllo, ad avviare mousepad ma anche questo non si avvia), allora ho inserito l'avvio in una shell ed inserito in crontab il file .sh (da terminale avvia) ma nessun risultato.
Qualcuno può aiutarmi o non c'è la possibilità?
Grazie
Ultima modifica di agilulfo il 11/01/2019, 8:05, modificato 1 volta in totale.
agilulfo
Newbie
Newbie
 
Messaggi: 5
Iscritto il: 15/08/2007, 7:19

Re: Applicazioni X da cron

Messaggioda Aki » 10/01/2019, 5:43

agilulfo ha scritto:avrei la necessità di avviare un browser web ad orari stabiliti; ho provato ad inserirlo in crontab ma il browser non si avvia (ho provato anche, per controllo, ad avviare mousepad ma anche questo non si avvia), allora ho inserito l'avvio in una shell ed inserito in crontab il file .sh (da terminale avvia) ma nessun risultato.
Qualcuno può aiutarmi o non c'è la possibilità?
Grazie

Sarebbe utile che spiegassi meglio il caso d'uso e quello intendi ottenere a seguito dell'avvio del browser web così come pure consentire a chi intende aiutarti di prendere visione del file crontab che hai configurato.

In ogni caso, il browser non si avvia da cron molto probabilmente perché, essendo un programma "client" del server grafico (server X), per funzionare deve conoscere a quale sessione attiva del server X deve collegarsi (naturalmente, la sessione deve essere fruibile, ad esempio, deve essere attiva). La variabile di ambiente utilizzata dai programmi è DISPLAY, impostata di default dopo l'avvio delle sessioni grafiche per indicare al programma client qual'è la sessione del server X da utilizzare.

Quindi, hai varie possibili soluzioni, a seconda dei tuo caso d'uso.

La prima, è passare la variabile DISPLAY (valorizzata con l'identificativo del server X attivo) allo script impostato nel crontab per l'utente per cui è aperta la sessione grafica, ad esempio:
Codice: Seleziona tutto
su nome_utente -c "DISPLAY=:0.0 /usr/bin/firefox";

In alternativa, puoi configurare un server "headless" (non visibile sul monitor se non tramite specifico client) con una specifica sessione dedicata sul quale avviare il browser, ad esempio, installando il server Xvfb; avviato preventivamente il server, ad esempio, con il seguente comando (nota: naturalmente, essendo il server headless, non vedrai nulla a schermo):
Codice: Seleziona tutto
Xvfb :1 -screen 0 800x600x16  &

il client può essere così avviato:
Codice: Seleziona tutto
xvfb-run /usr/bin/firefox
Aki
Global Moderator
Global Moderator
 
Messaggi: 8323
Iscritto il: 27/12/2007, 16:59

Re: Applicazioni X da cron

Messaggioda agilulfo » 10/01/2019, 14:45

Lo scopo è quello di lanciare un browser in modalità schermo intero ad una determinata ora e chiuderlo ad un'altra determinata ora; il pc rimane sempre acceso.
Seguendo il tuo consiglio ho modificato in questo modo lo script di avvio:
<<#! /bin/bash
su uno -c "DISPLAY=:0.0 /usr/bin/chromium --kiosk 'http://duckduckgo.org'">>
e questo è quello di chiusura:
<<#! /bin/bash
ps ax | grep chromium | sed -n -e 1p > testo.txt
TESTO=`cat testo.txt`
INIZIO=""
FINE="Sl"
ESTRATTO=${TESTO#*$INIZIO}
ESTRATTO=${ESTRATTO%%$FINE*}
# echo $ESTRATTO
kill $ESTRATTO >>
però non funziona se inserito in crontab dell'utente (provato a lanciare lo script da terminale: se terminale tty funziona ma se dal terminale virtuale grafico mi chiede la password anche se l'utente ne è sprovvisto.
Inserendo gli script editamdo direttamente il file /etc/crontab e facendoli lanciare come utente root funziona.
Per i miei scopi va benissimo lo stesso.
Grazie
agilulfo
Newbie
Newbie
 
Messaggi: 5
Iscritto il: 15/08/2007, 7:19

Re: Applicazioni X da cron

Messaggioda Aki » 10/01/2019, 22:15

agilulfo ha scritto:Seguendo il tuo consiglio ho modificato in questo modo lo script di avvio:
Codice: Seleziona tutto
#! /bin/bash
su uno -c "DISPLAY=:0.0 /usr/bin/chromium --kiosk 'http://duckduckgo.org'"

Inserendo gli script editamdo direttamente il file /etc/crontab e facendoli lanciare come utente root funziona.

Ok, felice tu abbia risolto. Ricordati di contrassegnare la discussione come risolta. Happy Debian & Happy Hacking
Aki
Global Moderator
Global Moderator
 
Messaggi: 8323
Iscritto il: 27/12/2007, 16:59


Torna a Generale

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti