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/
Re: Apropos el cron d'usuari ...
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. De fet, he estat mirant https://www.baeldung.com/linux/load-env-variables-in-cron-job i https://wiki.debian.org/EnvironmentVariables però la cosa ha continuat igual fins que aprofitant un refredat he estat comparant les sortides de printenv entre una Bullseye i una Bookworm i m'he adonat que el problema era amb el pobre xtrlock que utilitzava per bloquejar la pantalla que no podia capturar el teclat perquè ja ho estava, no se ben bé si per culpa del mode presentació de l'xfce4-screensaver o del mateix Virtualbox. En fi ... ara sembla que funciona. > > 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. > > Salut, > Alex > > -- > ⢀⣴⠾⠻⢶⣦⠀ > ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada > ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org > ⠈⠳⣄ > >
Re: Apropos el cron d'usuari ...
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. 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. Salut, Alex -- ⢀⣴⠾⠻⢶⣦⠀ ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org ⠈⠳⣄ signature.asc Description: PGP signature
Apropos el cron d'usuari ...
Bones, Ja fa temps que a l'escola on em guanyo les garrofes com a profe multiusos, vaig optar per virtualitzar els quatre equips Windows 10 que s'hi utilitzen, de manera que vaig confeccionar un parell de guions, l'un amb Bash + Yad per programar l'hora de fer la còpia de seguretat de la màquina virtual i l'altre per gestionar les operacions associades, pujada a Mega, notificació per correu, etc ... el cas es que per evitar intervencions de l'usuari final quan s'iniciava la còpia de seguretat bloquejava la pantalla amb xtrlock. #Bloquegem la pantalla export DISPLAY=":0.0" /usr/bin/xtrlock & La cosa funcionava de conya amb Bullseye, però en algun d'aquests moments tontos que et visiten de tant en tant i malgrat múltiples experiències al respecte, vaig acabar passant el muntatge a Testing i ara, la pantalla només es bloqueja si abans he obert un terminal o si l'executo directament des d'un terminal. 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. Així que si algú de vosaltres em pot orientar una mica li ho agrairé.