[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Apropos el cron d'usuari ...



On Thu, Feb 16, 2023 at 09:33:35PM +0100, Lluís Gras wrote:
> Missatge de Alex Muntada del dia dl., 13 de febr. 2023 a
> les 21:43:
> 
> > Hola, Lluís:
> >
> > > Entenc que es un tema de l'entorn del cron de l'usuari, però
> > > malgrat potinejar al respecte no he trobat com apedaçar-ho.
> >
> > Compte perquè, si no vaig errat, les ordres que s'executen des
> > del cron no veuen l'entorn habitual de l'usuari, és a dir, que el
> > shell que s'executa no té el mateix entorn que el que tindries en
> > un terminal o consola.
> >
> 
> Si si, entenc que les coses van per aquí, però de moment, tots els intents
> han estat infructuosos.
> 
> [...]
> 
> > Em sembla recordar que una estratègia era executar l'ordre que
> > vols dins un bash que sí llegeixi l'entorn, e.g.
> >
> >     40 21 * * * env
> >     41 21 * * * bash -l -c "env"
> >
> > Veuràs que donen resultats diferents.

Jo n'afegiria un més:

# m h  dom mon dow   command
  * *  *   *   *     env > /tmp/env0
  * *  *   *   *     sh -c "env > /tmp/env1"
  * *  *   *   *     sh -l -c "env > /tmp/env2"

I, clar directament executar directament "env > /tmp/env3"

Veuràs que tots donen entorn distintes. El motiu és que els fitxers que
carreguen no son els mateixos en cada cas.
Amb aquests 4 exemples de variables d'entorns ja tens per a fer les proves que
necessites...

Per a netejar les variables d'entorn actual i carregar les d'un fitxer es pot
fer així (segur que hi ha formes més maques):

 | #!/usr/bin/env sh
 | env -i sh -c "set -a ; source /tmp/env0 ; set +a; env"

Aquest exemple mostra les variables que ha carregat (hauria de ser quasi
exactament el que diu a /etc/env0). Si canvies el darrer 'env' per
'/usr/bin/xtrlock' aniras veient en quins dels fitxers /tmp/envX funciona i en
quins no. I ja experimentant manipulant els fitxers d'exemple hauries d'arribar
a trobar les variables que necessites.

Altra forma podria ser indagant amb strace o similar, però crec que és massa
complexe pel cas que se t'ha presentat.

I fotre una ullada al manual sovint també ajuda, però no deixis mai que 1 minut
de llegir el manual et privi d'hores de diversió :) [Secció WARNING, per
exemple]

Una abraçada. Salut!

PS: xtrlock.c:122:  if (getenv("WAYLAND_DISPLAY"))

-- 
Antoni Villalonga
https://friki.cat/


Reply to: