schedulare applicazioni user

Bash, Perl, Python, Ruby, ...
Rispondi
alemaio
Newbie
Newbie
Messaggi: 17
Iscritto il: 06/11/2020, 16:07

schedulare applicazioni user

Messaggio da alemaio »

Buongiorno,
avrei bisogno di avviare thunderbird ad un orario e di arrestarlo ad un altro orario (del tipo alle 8:00 start, alle 20:00 stop).
Ho un server su cui gira thuderbird e che inoltra le notifiche relative a dei feed ad un gruppo di persone, purtroppo mi accorgo che le risorse di TB crescono nella giornata fino a raggiungere il 98% dell'uso della memoria fisica, compromettendo l'avvio di altri servizi schedulati la notte (backup, ecc).
La soluzione più rapida che mi è venuta a mente è quella di usare cron, ma cron lavora su istanza diversa dall'utente e quindi esegue lo script bash ma non lancia il programma nella sessione user (e neanche lo arresta).
Qualche suggerimento?
Non sono affatto skillato su scripting, magari basta indicare di eseguire il comando come "user" ma non saprei come fare... :confused:
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: schedulare applicazioni user

Messaggio da azioga »

Ma perché Thunderbird arriva ad utilizzare tutta sta RAM? Forse è questo il problema da risolvere. È aggiornato? Hai fatto ricerche in merito?

Che prove hai fatto con Cron?
alemaio
Newbie
Newbie
Messaggi: 17
Iscritto il: 06/11/2020, 16:07

Re: schedulare applicazioni user

Messaggio da alemaio »

Ciao Azioga,
non ho capito bene il perché, ho provato ad avviare TB in "modalità risoluzione problemi" dove disattiva temporaneamente tutti i componenti aggiuntivi (anche se non ne ho installati personalmente) ma il problema sussiste.
TB è installato su una macchina virtuale dedicata all'inoltro delle mail con 4Gb di ram, mi sono accorto che ogni tanto si arrestava inaspettatamente e dai registri di sistema ho visto che il modulo OOM-Killer (Out Of Memory) e mi spegneva il servizio prima di mandare in crash il sistema operativo.
Ho fatto delle verifiche della richiesta di memoria dal servizio e mi sono accorto che talvolta arrivava a chiedere 6Gb di ram e poi lo arrestava.
Ho quindi aumentato lo swap portandolo a 10Gb con totale di memoria 14Gb rassegnandomiall'idea che thunderbird è un programma "ramgivoro" (contrazioni attualissime :D ).
Se hai qualche suggerimento in merito eviterei un passaggio "forzato"... però non sarebbe male conoscere anche il sistema di far partire e spegnere applicazioni user ad un certo orario ;) può tornare utile non solo al mio caso
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: schedulare applicazioni user

Messaggio da azioga »

per cron prova a dare un'occhiata qui
https://serverfault.com/questions/35283 ... cific-user
comunque se apri un terminale dall'utente che ti interessa con crontab -e puoi aggiungere comandi a livello user.

non so se è possibile eseguire programmi con interfaccia grafica da cron. probabilmetne dovrai settare qualche variabile d'ambiente tipo DISPLAY.
thunderbird ha anche la possibilità di girare senza gui --headless ...mai provata
Avatar utente
David7
Full Member
Full Member
Messaggi: 114
Iscritto il: 31/03/2022, 14:34

Re: schedulare applicazioni user

Messaggio da David7 »

azioga ha scritto: 07/10/2022, 13:10 Ma perché Thunderbird arriva ad utilizzare tutta sta RAM? Forse è questo il problema da risolvere.
azioga ha scritto: 08/10/2022, 8:17 per cron prova a dare un'occhiata qui
https://serverfault.com/questions/35283 ... cific-user
comunque se apri un terminale dall'utente che ti interessa con crontab -e puoi aggiungere comandi a livello user.
azioga con crontab -e (esempio uno script con killall thunderbird alle 20 e uno per avviarlo o metterlo autopartente al boot la mattina) dall'utente e sapere cosa è che consumi RAM esagerata siano ottimi consigli. Io uso TB con 5 istanze di 5 account mail diversi, vero non ho feed, contemporaneamente e ogni istanza mi consuma dai 100 ai 300MB e con Firefox, Chromium e altro non mi sembra sia mai arrivato ai 4GiB di ram
Non vorrei fossero troppi i feed da gestire. Dalla v60 l'intervallo di aggiornamento di ciascun feed può essere impostato individualmente per controllare nuovi feed ogni tot minuti.
Altra soluzione utilizzare TB o altri client a linea di comando ma questo anche io non l'ho fatto, almeno negli ultimi anni.
Poi potrebbe anche essere un problema della macchina virtuale.
:)

[edit]sempre dalla 60 ci sono un sacco di voci per la gestione o limitazione dei feed come rss.max_concurrent_feeds
Live Long & Prosper - Mettere [RISOLTO] al titolo primo post come da Regolamento quando risolto (entro 30g), tnx. https://duckduckgo.com - https://guide.debianizzati.org/index.ph ... i_al_forum
Il cancro si può sconfiggere!
Avatar utente
David7
Full Member
Full Member
Messaggi: 114
Iscritto il: 31/03/2022, 14:34

Pseudocodice e rss2email

Messaggio da David7 »

come script, facilmente utilizzabile con crontab dalle 8 alle 20 uno pseudocodice potrebbe essere tipo:

Codice: Seleziona tutto

logdelgiorno="invio[AAMMGG].txt"
mittente="paperino@paperino.pap"
destinatario="paperina@paperino.pap"
ilfeed="paperopoli.pap/feed.xml"
aggiornamento = seceunaggiornamento($ilfeed)	// true se c'è un aggiornamento'

if [ "$aggiornamento" ]; then
	corpomail = leggifeed($ilfeed)	// funzione che legge il feed e restituisce il corpo della mail
	oggetto = titolofeed($ilfeed)	// funzione che legge il feed e restituisce oggetto della mail
	echo "Invio a $destinatario con oggetto $oggetto : $corpomail" >> $logdelgiorno
	clientdiposta -opzionesend --mittente $mittente --destinatario $destinatario --oggetto $oggetto --corpo $corpomail
fi
Anche con tb si può con -compose "option1=value,option2=value ..." (visto dall'help e nulla più) ma quasi tutti i client ce l'hanno (mutt per esempio è solo testuale).

Poi c'è anche il pacchetto https://packages.debian.org/bullseye/rss2email - ricezione di feed RSS per posta elettronica: rss2email è un semplice programma da far girare tramite crontab. Guarda i feed RSS (o Atom) e spedisce all'utente un messaggio di posta elettronica ben presentato per ogni novità.
... mai provato ma sembra proprio quello che ti serve
Live Long & Prosper - Mettere [RISOLTO] al titolo primo post come da Regolamento quando risolto (entro 30g), tnx. https://duckduckgo.com - https://guide.debianizzati.org/index.ph ... i_al_forum
Il cancro si può sconfiggere!
alemaio
Newbie
Newbie
Messaggi: 17
Iscritto il: 06/11/2020, 16:07

Re: schedulare applicazioni user

Messaggio da alemaio »

Grazie Davi7
io non ho impostato alcun feedrss... ho impostato molti filtri per inoltrare delle mail come una sorta di notifiche ricevute da un sito interno aziendale.
Non sono riuscito però ad impostare gli script per avviare o fermare il processo (l'oggetto di questo thread) :(
come dicevo non sono molto ferrato su scripting ma credo che non si possa avviare in automatico un processo in bash a livello utente (applicazione desktop)
Avatar utente
David7
Full Member
Full Member
Messaggi: 114
Iscritto il: 31/03/2022, 14:34

Re: schedulare applicazioni user

Messaggio da David7 »

alemaio ha scritto: 07/10/2022, 9:47 thuderbird e che inoltra le notifiche relative a dei feed ad un gruppo di persone
Ciao alemaio hai scritto tu feed e notifiche ed è per questo che ti ho detto quelle cose: ora non so cosa intendi per "una sorta di notifiche ricevute da un sito interno aziendale" scusami, sarà sicuramente una mia mancanza / stanchezza mentale.
thunderbird (tb per gli amici :lol: ) può essere chiamato anche da terminale dell'utente e quindi può essere chiamato anche da uno script bash con i vari parametri.
Se riesco a capire meglio possiamo vedere di aiutarti.
Come arrivano queste 'cose' da un sito aziendale e cosa sono? Puoi fare un esempio di uno di questi filtri di cui parli?
Per chiudere tutti i processi di tb basta un bel killall thunderbird
:)
Live Long & Prosper - Mettere [RISOLTO] al titolo primo post come da Regolamento quando risolto (entro 30g), tnx. https://duckduckgo.com - https://guide.debianizzati.org/index.ph ... i_al_forum
Il cancro si può sconfiggere!
alemaio
Newbie
Newbie
Messaggi: 17
Iscritto il: 06/11/2020, 16:07

Re: schedulare applicazioni user

Messaggio da alemaio »

Hai ragione scusami forse mi sono spiegato male :confused:
in pratica il sito (joomla) ha un componente (jcomment) che ad ogni commento inserito invia una mail ad un indirizzo, con TB ho fatto delle regole nei filtri: se nel commento inserito viene menzionato un utente, allora TB inoltra il commento a quell'utente. È un sito aziendale che permette ai vari uffici di lavorare sincronizzati su gli ordini di produzione.

Per lo script invece ho editato questo:

Codice: Seleziona tutto

#! /bin/bash
#avviare thunderbird
/bin/thunderbird

per il comando cron ho inserito questo:

Codice: Seleziona tutto

05 17 * * * alessio /home/alessio/My_script/start_thunderbird.sh
però non si avvia... :(
Avatar utente
David7
Full Member
Full Member
Messaggi: 114
Iscritto il: 31/03/2022, 14:34

Re: schedulare applicazioni user

Messaggio da David7 »

alemaio ha scritto: 12/04/2023, 7:50 Hai ragione scusami forse mi sono spiegato male :confused:
Figurati succede :)
alemaio ha scritto: 12/04/2023, 7:50 in pratica il sito (joomla) ha un componente (jcomment) che ad ogni commento inserito invia una mail ad un indirizzo
Ora ho capito meglio. Se ho tempo vedo se è possibile farlo direttamente da jcomment, che sarebbe la risoluzione del tuo problema direttamente dal sito.
alemaio ha scritto: 12/04/2023, 7:50 con TB ho fatto delle regole nei filtri: se nel commento inserito viene menzionato un utente, allora TB inoltra il commento a quell'utente.
capito anche questo. Hai provato a vedere l'addon tb "Send Later" che mi sembra customizzabile anche per il range di quando inviarle? https://extended-thunder.github.io/send-later/

Per lo script, a cui ovviamente avrai dato i permessi di esecuzione, io (non so se è facoltativo o meno) non metto lo spazio ma #!/bin/bash.
Ho fatto delle prove e devo dire che mettendo il nome del programma stesso e non uno script, monitorando la visualizzazione dei processi, vedo che parte thunderbird ma poi si chiude :eek:
Devo dire che sono un po' arrugginito sui crontab anche se ricordo che il nome dell'utente come sesto parametro si mette non quando si fa crontab -e dal terminale dell'utente ma solo nei file del cron in /etc/ cosa che probabilmente saprai.

Se metto nel crontab la chiamata ad uno script semplice con un echo che scrive su un file, su /home/nomeutente/mieiscript/ funziona perfettamente. Quindi il dubbio
azioga ha scritto:non so se è possibile eseguire programmi con interfaccia grafica da cron. probabilmetne dovrai settare qualche variabile d'ambiente tipo DISPLAY.
potrebbe proprio essere il fulcro del problema del perchè non parte tb avendo una GUI.
Il killall invece dovrebbe funzionare.
Live Long & Prosper - Mettere [RISOLTO] al titolo primo post come da Regolamento quando risolto (entro 30g), tnx. https://duckduckgo.com - https://guide.debianizzati.org/index.ph ... i_al_forum
Il cancro si può sconfiggere!
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1329
Iscritto il: 03/09/2018, 7:53

Re: schedulare applicazioni user

Messaggio da azioga »

se hai solo la necessità di far partire thunderbird e spegnerlo dopo un certo numero di ore puoi usare timeout

Codice: Seleziona tutto

$ timeout 10h thunderbird
fa partire tb e lo spegne dopo 10 ore.

oppure puoi metterlo in un comando che lo fa partire, lo spegne e dopo una certa attesa lo fa ripartire ad esempio
$ /bin/bash -c 'while true; do timeout 10h thunderbird; sleep 10m; done'

qui un po' di esempi con anche la possibilità di eseguirlo in background, ma non so se può fare al caso tuo:
https://askubuntu.com/questions/1438050 ... ng-the-app
https://superuser.com/questions/298795/ ... minutes-la

la soluzione migliore rimane sempre quella di trovare il motivo dell'uso di tutta la RAM.
hai provato con un nuovo profilo? hai verificato che non ci sia un filtro che fa casino?
alemaio
Newbie
Newbie
Messaggi: 17
Iscritto il: 06/11/2020, 16:07

Re: schedulare applicazioni user

Messaggio da alemaio »

David7 ha scritto: 12/04/2023, 22:14 Se ho tempo vedo se è possibile farlo direttamente da jcomment
non voglio utilizzare il server mail di joomla, ma delego il compito a TB... mi resta più facile per la consultazione/storicizzazione dei flussi
David7 ha scritto: 12/04/2023, 22:14 Hai provato a vedere l'addon tb "Send Later"
lo utilizzo ma per questa applicazione non è opportuno visto che devo inviare i commenti sul momento
David7 ha scritto: 12/04/2023, 22:14 il nome dell'utente come sesto parametro si mette non quando si fa crontab -e dal terminale dell'utente ma solo nei file del cron in /etc/ cosa che probabilmente saprai.
no non lo sapevo... il log da terminale mi restituisce questo quando parte cron
Apr 13 17:47:01 debian CRON[291306]: (alessio) CMD (alessio /home/alessio/My_script/start_thunderbird.sh)
Apr 13 17:47:01 debian CRON[291305]: (CRON) info (No MTA installed, discarding output)

comunque i permessi dello script sono di esecuzione di fatti se lo lancio con doppio click parte

non saprei come settare una variabile di ambiente di tipo DISPLAY :-|
azioga ha scritto: 13/04/2023, 9:01 la soluzione migliore rimane sempre quella di trovare il motivo dell'uso di tutta la RAM.
sicuramente! ma un palliativo potrebbe essere riuscire ad avviare e spegnere in automatico TB... attualmente lo faccio a mano quando me lo ricordo :(
davvero mi sembra strano che nessuno abbia mai avuto l'esigenza di far partire e fermare un applicazione in automatico su linux :o
Avatar utente
marcomg
Administrator
Administrator
Messaggi: 8061
Iscritto il: 22/08/2011, 18:54

Re: schedulare applicazioni user

Messaggio da marcomg »

alemaio ha scritto: 13/04/2023, 17:15 non voglio utilizzare il server mail di joomla, ma delego il compito a TB... mi resta più facile per la consultazione/storicizzazione dei flussi
Potresti anche raddoppiare le cose... Mandare mail sia all'utente che a te la vedi fattibile? Il server mail di joomla manda il doppio delle mail così, ma tu puoi verificare i flussi di lavoro da TB, il sistema funziona a prescindere.
alemaio ha scritto: 13/04/2023, 17:15 davvero mi sembra strano che nessuno abbia mai avuto l'esigenza di far partire e fermare un applicazione in automatico su linux
Con interfaccia grafica? E perché mai? Mo lascia perdere che ti serve e si prova a farlo, ma stai avendo problemi perché l'architettura del sistema non è esattamente robusta.

La soluzione di azioga che te ne pare?
~ Marco
Avatar utente
David7
Full Member
Full Member
Messaggi: 114
Iscritto il: 31/03/2022, 14:34

Re: schedulare applicazioni user

Messaggio da David7 »

azioga ha scritto: 13/04/2023, 9:01 se hai solo la necessità di far partire thunderbird e spegnerlo dopo un certo numero di ore puoi usare timeout

Codice: Seleziona tutto

$ timeout 10h thunderbird
fa partire tb e lo spegne dopo 10 ore.
Grande idea azioga, timeout non mi era proprio venuto in mente!
azioga ha scritto: 13/04/2023, 9:01 la soluzione migliore rimane sempre quella di trovare il motivo dell'uso di tutta la RAM.
hai provato con un nuovo profilo? hai verificato che non ci sia un filtro che fa casino?
Come ho detto concordo al 1000% altrimenti qualsiasi stop o start temporizzato se poi ti crasha addirittura tutto il sistema è inutile.
Per quanto riguarda joomla è facilmente storicizzarare i flussi con un po' di programmazione backend ;)

p.s. MTA = Mail Transfer Agent quindi probabile che ci voglia per cron qualcosa come postfix
Live Long & Prosper - Mettere [RISOLTO] al titolo primo post come da Regolamento quando risolto (entro 30g), tnx. https://duckduckgo.com - https://guide.debianizzati.org/index.ph ... i_al_forum
Il cancro si può sconfiggere!
Rispondi