• bash in at command

    From Piviul@21:1/5 to All on Mon Oct 3 12:40:01 2022
    Ciao a tutti, c'è un modo impostare l'esecuzione automatica di un bash
    script usando atd? Quando lo imposto viene usato sh ma io vorrei proprio
    usare bash....

    Grazie

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Giancarlo Martini@21:1/5 to All on Mon Oct 3 14:20:01 2022
    Non basta mettere il percorso assoluto nella prima riga dopo #!

    --
    Giancarlo Martini
    http://www.giancarlomartini.it
    http://www.linkedin.com/in/giancarlo-martini

    Il lun 3 ott 2022, 12:35 Piviul <piviul@riminilug.it> ha scritto:

    Ciao a tutti, c'è un modo impostare l'esecuzione automatica di un bash script usando atd? Quando lo imposto viene usato sh ma io vorrei proprio usare bash....

    Grazie



    <div dir="auto">Non basta mettere il percorso assoluto nella prima riga dopo #! <br><br><div data-smartmail="gmail_signature">--<br>Giancarlo Martini<br><a href="http://www.giancarlomartini.it">http://www.giancarlomartini.it</a><br><a href="http://www.
    linkedin.com/in/giancarlo-martini">http://www.linkedin.com/in/giancarlo-martini</a></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il lun 3 ott 2022, 12:35 Piviul &lt;<a href="mailto:piviul@riminilug.it">piviul@riminilug.it</a>&
    gt; ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ciao a tutti, c&#39;è un modo impostare l&#39;esecuzione automatica di un bash <br>
    script usando atd? Quando lo imposto viene usato sh ma io vorrei proprio <br> usare bash....<br>

    Grazie<br>

    </blockquote></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gabriele Zappi@21:1/5 to All on Mon Oct 3 14:40:02 2022
    Hai provato mettendo:

    #!/bin/bash

    In testa allo script?

    [image: Mailtrack] <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality11&>
    Sender
    notified by
    Mailtrack <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality11&>
    03/10/22,
    14:18:26
    Remove

    Il giorno lun 3 ott 2022 alle ore 12:35 Piviul <piviul@riminilug.it> ha scritto:

    Ciao a tutti, c'è un modo impostare l'esecuzione automatica di un bash script usando atd? Quando lo imposto viene usato sh ma io vorrei proprio usare bash....

    Grazie



    --

    Best regards,

    *Gabriele Zappi*
    *http://www.gabrielezappi.net <http://www.gabrielezappi.net>*
    GNU/Linux user #380098

    <div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)"></div><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)">Hai provato mettendo:</
    <div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="monospace">#!/bin/bash</font><br><br><font face="tahoma, sans-
    serif">In testa allo script?</font></div><br><div id="gmail-mt-signature">
    <table border="0" cellpadding="8" cellspacing="0" style="user-select: none;">
    <tbody><tr>
    <td>
    <a id="gmail-signatureLink-logo" href="https://mailtrack.io?utm_source=gmail&amp;utm_medium=signature&amp;utm_campaign=signaturevirality11&amp;" class
  • From Piviul@21:1/5 to Gabriele Zappi on Mon Oct 3 16:50:01 2022
    This is a multi-part message in MIME format.
    On 03/10/22 14:19, Gabriele Zappi wrote:
    Hai provato mettendo:

    #!/bin/bash

    In testa allo script?

    certo, c'è sempre stato!

    Piviul

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 03/10/22 14:19, Gabriele Zappi
    wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CAJSjkBNDcc-XCjjPxtgj=xcmip4rmoRhCs__8PkMC04uuoVQ-w@mail.gmail.com">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <div dir="ltr">
    <div dir="ltr">
    <div class="gmail_default"
    style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)">Hai
    provato mettendo:</div>
    <div class="gmail_default"
    style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)"><br>
    </div>
    <div class="gmail_default"
    style="font-size:small;color:rgb(0,0,0)"><font
    face="monospace">#!/bin/bash</font><br>
    <br>
    <font face="tahoma, sans-serif">In testa allo script?</font></div>
    </div>
    </div>
    </blockquote>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">certo,
    c'è sempre stato!</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">Piviul<br>
    </font></font></p>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Giancarlo Martini@21:1/5 to All on Mon Oct 3 17:10:01 2022
    allora forse /bin/bash è un link a sh

    Il giorno lun 3 ott 2022 alle ore 16:45 Piviul <piviul@riminilug.it> ha scritto:

    On 03/10/22 14:19, Gabriele Zappi wrote:

    Hai provato mettendo:

    #!/bin/bash

    In testa allo script?

    certo, c'è sempre stato!

    Piviul



    --
    Giancarlo Martini
    (Replace 'AAA' con '@')
    mailto:giancarlo.firAAAgmail.com <giancarlomartiniAAAgmail.com>

    <div dir="ltr">allora forse /bin/bash è un link a sh</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno lun 3 ott 2022 alle ore 16:45 Piviul &lt;<a href="mailto:piviul@riminilug.it">piviul@riminilug.it</a>&gt; ha scritto:<br></
    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



    <div>
    <div>On 03/10/22 14:19, Gabriele Zappi
    wrote:<br>
    </div>
    <blockquote type="cite">

    <div dir="ltr">
    <div dir="ltr">
    <div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)">Hai
    provato mettendo:</div>
    <div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)"><br>
    </div>
    <div class="gmail_default" style="font-size:small
  • From Gabriele Zappi@21:1/5 to All on Tue Oct 4 09:40:01 2022
    Non vorrei allora che l'installazione di bash nel tuo ambiente non fosse completa, e quindi /bin/bash si traduca in un link simbolico a sh ...
    Proverei a fare un sudo apt -y --reinstall install bash, nel dubbio, e poi riproverei.

    Buona giornata,

    [image: Mailtrack] <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality11&>
    Sender
    notified by
    Mailtrack <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality11&>
    04/10/22,
    09:13:51
    Remove

    Il giorno lun 3 ott 2022 alle ore 16:45 Piviul <piviul@riminilug.it> ha scritto:

    On 03/10/22 14:19, Gabriele Zappi wrote:

    Hai provato mettendo:

    #!/bin/bash

    In testa allo script?

    certo, c'è sempre stato!

    Piviul



    --

    Best regards,

    *Gabriele Zappi*
    *http://www.gabrielezappi.net <http://www.gabrielezappi.net>*
    GNU/Linux user #380098

    <div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)"></div><div dir="ltr"><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><span style="font-family:tahoma,sans-serif">Non
    vorrei allora che l&#39;installazione di bash nel tuo ambiente non fosse completa, e quindi /bin/bash si traduca in un link simbolico a sh ...<br>Proverei a fare un </span><font face="monospace">sudo apt -y --reinstall install bash</font><font face="
    tahoma, sans-serif">, nel dubbio, e poi riproverei.</font></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small;
    color:rgb(0,0,0)">Buona giornata,</div><br><div id="gmail-mt-signature">
    <table border="0" cellpadding="8" cellspacing="0" sty
  • From Alessandro Rubini@21:1/5 to All on Tue Oct 4 11:10:01 2022
    In effetti parzialmente hai ragione anche tu; dalla mia esperienza se
    usi la modalita` interattiva di at

    "at", da specifica, esegue il suo stdin usando sh. Ovviamente
    non puo` essere diversamente, perche` romperebbe molte cose.
    E lo dice pure su stderr:

    laptopo% at now
    warning: commands will be executed using /bin/sh

    per schedulare un job funziona, viene
    letto il commento iniziale #!/bin/bash ma se invece lo scheduli da
    script con l'opzione -f non funziona.

    non cambia. Semplicemente legge il file invece di leggere stdin.

    Purtroppo non credo sia possibile che uno script sappia quale sia l'interprete che lo sta eseguendo

    ps u $$

    Ma anche il C (o il python) non posso eseguirlo direttamente da "at".
    La soluzione e` la stessa: dire a /bin/sh di eseguire un file esterno.
    Che sara` eseguibile e in questo caso conterra` "#!/bin/bash".

    Quindi at esiste ancora? Incredibile. Niente systemd-at? Non ditelo in
    giro...

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Gabriele Zappi on Tue Oct 4 10:30:01 2022
    This is a multi-part message in MIME format.
    On 04/10/22 09:16, Gabriele Zappi wrote:
    Non vorrei allora che l'installazione di bash nel tuo ambiente non
    fosse completa, e quindi /bin/bash si traduca in un link simbolico a
    sh ...
    Proverei a fare un sudo apt -y --reinstall install bash, nel dubbio, e
    poi riproverei.

    Ciao Gabriele, grazie no, sei fuori strada... ma forse ti ho portato
    fuori io... :)

    In effetti parzialmente hai ragione anche tu; dalla mia esperienza se
    usi la modalità interattiva di at per schedulare un job funziona, viene
    letto il commento iniziale #!/bin/bash ma se invece lo scheduli da
    script con l'opzione -f non funziona.

    Purtroppo non credo sia possibile che uno script sappia quale sia
    l'interprete che lo sta eseguendo però empiricamente fai una prova con
    questo banalissimo script:

    $ cat /usr/local/bin/bashtest.sh
    #!/bin/bash

    set -o errexit

    function bashtest
    {
            echo ok
    }

    bashtest

    e prova schedularlo con qualcosa tipo:

    $ at now -f /usr/local/bin/bashtest.sh

    Vedrai che ritorna un errore.

    In effetti non mi ero accorto di questo diverso comportamento di at...

    Grazie

    Piviul


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 04/10/22 09:16, Gabriele Zappi
    wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CAJSjkBO5UFCN2Ad_Ycr3AmD0oqXa4XzN-zLfaRgYu66n0t81Nw@mail.gmail.com">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <div dir="ltr">
    <div dir="ltr">
    <div class="gmail_default"
    style="font-size:small;color:rgb(0,0,0)"><span
    style="font-family:tahoma,sans-serif">Non vorrei allora
    che l'installazione di bash nel tuo ambiente non fosse
    completa, e quindi /bin/bash si traduca in un link
    simbolico a sh ...<br>
    Proverei a fare un </span><font face="monospace">sudo apt
    -y --reinstall install bash</font><font face="tahoma,
    sans-serif">, nel dubbio, e poi riproverei.</font></div>
    </div>
    </div>
    </blockquote>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">Ciao
    Gabriele, grazie no, sei fuori strada... ma forse ti ho
    portato fuori io... :)</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">In
    effetti parzialmente hai ragione anche tu; dalla mia
    esperienza se usi la modalità interattiva di at per schedulare
    un job funziona, viene letto il commento iniziale #!/bin/bash
    ma se invece lo scheduli da script con l'opzione -f non
    funziona. <br>
    </font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">Purtroppo
    non credo sia possibile che uno script sappia quale sia
    l'interprete che lo sta eseguendo però empiricamente fai una
    prova con questo banalissimo script:</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">
    <blockquote type="cite"><font color="#4c1130"><font
    face="arial narrow, sans-serif">$ cat
    /usr/local/bin/bashtest.sh<br>
    #!/bin/bash<br>
    <br>
    set -o errexit<br>
    <br>
    function bashtest<br>
    {<br>
            echo ok<br>
    }<br>
    <br>
    bashtest<br>
    </font></font></blockquote>
    <br>
    </font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">e
    prova schedularlo con qualcosa tipo:</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">$ at
    now -f </font></font><font color="#4c1130"><font face="arial
    narrow, sans-serif">/usr/local/bin/bashtest.sh</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">Vedrai
    che ritorna un errore.</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">In
    effetti non mi ero accorto di questo diverso comportamento di
    at...</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">Grazie</font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif">Piviul<br>
    </font></font></p>
    <p><font color="#4c1130"><font face="arial narrow, sans-serif"><br>
    </font></font></p>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bertorello, Marco@21:1/5 to All on Tue Oct 4 12:10:01 2022
    Il 04/10/2022 11:02, Alessandro Rubini ha scritto:
    Quindi at esiste ancora? Incredibile. Niente systemd-at? Non ditelo in giro...

    in effetti è strano, su Debian GNU/SystemD

    :D

    --
    Marco Bertorello
    https://www.marcobertorello.it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Federico Di Gregorio@21:1/5 to Alessandro Rubini on Tue Oct 4 11:40:01 2022
    On 04/10/22 11:02, Alessandro Rubini wrote:
    [snip]
    Quindi at esiste ancora? Incredibile. Niente systemd-at? Non ditelo in giro...

    systemd-run ...

    /me hides...

    federico

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Giancarlo Martini on Tue Oct 4 13:20:01 2022
    On 03/10/22 17:03, Giancarlo Martini wrote:
    allora forse /bin/bash è un link a sh
    ls -l /bin/bash
    -rwxr-xr-x 1 root root 1168776 apr 18  2019 /bin/bash


    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alessandro Rubini@21:1/5 to All on Tue Oct 4 15:10:01 2022
    Infatti se hai voglia di fare alcune prove ti accorgerai che se scheduli
    ad esempio lo script che ho mandato[¹] da shell at (senza specificare l'opzione -f di at per intenderci) non da errori, se lo scheduli con il comando -f da errore. In entrambi i casi viene generato il warning
    "commands will be executed using /bin/sh".

    Preferisco il caso semplice, non "errore o non errore". Faccio "ps u $$"
    per vedere che processo sta girando. Con "at" interattivo parte sh,
    che ignora #!/bin/bash come commento:

    laptopo% tty
    /dev/pts/10

    laptopo% at now; sleep 2
    warning: commands will be executed using /bin/sh
    at> #!/bin/bash
    at> ps u $$ > /dev/pts/10
    at> <EOT>
    job 6 at Tue Oct 4 14:50:00 2022
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    rubini 14462 0.0 0.0 2420 528 ? SN 14:50 0:00 sh

    Quindi gira sh. "sleep 2" l'ho messo per non avere il prompt in mezzo.
    Con "-f" il risultato e` lo stesso:

    laptopo% cat > /tmp/at
    #!/bin/bash
    ps u $$ > /dev/pts/10

    laptopo% at now -f /tmp/at; sleep 2
    warning: commands will be executed using /bin/sh
    job 7 at Tue Oct 4 14:52:00 2022
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    rubini 14469 0.0 0.0 2420 524 ? SN 14:52 0:00 sh

    Gira sh. Il programma, se eseguito, va con bash. Ma "-f" usa un file
    invece di leggere da stdin, e quello che legge lo manda a sh.

    laptopo% chmod +x /tmp/at

    laptopo% /tmp/at
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    rubini 14475 0.0 0.0 3756 2804 pts/10 S+ 14:54 0:00 /bin/bash /tmp/

    laptopo% at now; sleep 2
    warning: commands will be executed using /bin/sh
    at> /tmp/at
    at> <EOT>
    job 8 at Tue Oct 4 14:54:00 2022
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    rubini 14481 0.0 0.0 3836 2932 ? SN 14:54 0:00 /bin/bash /tmp/

    man bash:

    [...] For both at and batch, commands are read from standard input or the
    file specified with the -f option and executed. [...]

    -f file Reads the job from file rather than standard input.

    Ma non parliamo troppo di questi strumenti, che poi ci si accorge che
    esistono e vengono rotti. Come fgrep: sara` rimosso da una prossima
    versione di grep, perche` "grep -F" fa la stessa cosa. Cosi` un tot
    di vecchi script si romperanno, per risparmiare un inode e 28 byte in
    sistemi peni di gigabyte dimm

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Alessandro Rubini on Tue Oct 4 14:50:02 2022
    On 04/10/22 11:02, Alessandro Rubini wrote:
    In effetti parzialmente hai ragione anche tu; dalla mia esperienza se
    usi la modalita` interattiva di at
    "at", da specifica, esegue il suo stdin usando sh. Ovviamente
    non puo` essere diversamente, perche` romperebbe molte cose.
    E lo dice pure su stderr:

    laptopo% at now
    warning: commands will be executed using /bin/sh

    per schedulare un job funziona, viene
    letto il commento iniziale #!/bin/bash ma se invece lo scheduli da
    script con l'opzione -f non funziona.
    non cambia. Semplicemente legge il file invece di leggere stdin.

    Grazie Alessandro ma non mi hai ancora convinto ;)

    Infatti se hai voglia di fare alcune prove ti accorgerai che se scheduli
    ad esempio lo script che ho mandato[¹] da shell at (senza specificare l'opzione -f di at per intenderci) non da errori, se lo scheduli con il
    comando -f da errore. In entrambi i casi viene generato il warning
    "commands will be executed using /bin/sh".

    Oramai ho cambiato "programma" in altre parole non ne ho più necessità,
    però se qualcuno avesse una spiegazione...

    Grazie!

    Piviul

    [¹] Lo riporto anche qui per comodità:

    $ cat /usr/local/bin/bashtest.sh
    #!/bin/bash

    set -o errexit

    function bashtest
    {
            echo ok
    }
    bashtest

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Alessandro Rubini on Tue Oct 4 16:00:01 2022
    On 04/10/22 15:00, Alessandro Rubini wrote:
    Infatti se hai voglia di fare alcune prove ti accorgerai che se scheduli
    ad esempio lo script che ho mandato[¹] da shell at (senza specificare
    l'opzione -f di at per intenderci) non da errori, se lo scheduli con il
    comando -f da errore. In entrambi i casi viene generato il warning
    "commands will be executed using /bin/sh".
    Preferisco il caso semplice, non "errore o non errore". Faccio "ps u $$"
    per vedere che processo sta girando. Con "at" interattivo parte sh,
    che ignora #!/bin/bash come commento:

    laptopo% tty
    /dev/pts/10

    laptopo% at now; sleep 2
    warning: commands will be executed using /bin/sh
    at> #!/bin/bash
    at> ps u $$ > /dev/pts/10
    at> <EOT>
    job 6 at Tue Oct 4 14:50:00 2022
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    rubini 14462 0.0 0.0 2420 528 ? SN 14:50 0:00 sh

    Quindi gira sh. "sleep 2" l'ho messo per non avere il prompt in mezzo.
    Con "-f" il risultato e` lo stesso:

    laptopo% cat > /tmp/at
    #!/bin/bash
    ps u $$ > /dev/pts/10

    Ciao Alessandro, secondo me hai semplificato un po' troppo. Dalla shell
    at dovresti eseguire lo script /tmp/at non i comandi contenuti nello
    script e se tutto andrà come credo dovrebbe mostrarti lo script /tmp/at
    che ha come interprete bash... altrimenti non si spiegano le prove fatte
    con il metodo di "errore o non errore".

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Paolo_Red=c3=a6lli?=@21:1/5 to All on Tue Oct 4 17:20:01 2022
    Il 04/10/22 15:00, Alessandro Rubini ha scritto:

    Ma non parliamo troppo di questi strumenti, che poi ci si accorge che esistono e vengono rotti. Come fgrep: sara` rimosso da una prossima
    versione di grep, perche` "grep -F" fa la stessa cosa. Cosi` un tot
    di vecchi script si romperanno, per risparmiare un inode e 28 byte in
    sistemi peni di gigabyte dimm

    "Se vogliamo che tutto rimanga come è bisogna che tutto cambi."

    Il Gattopardo

    Pare non essere un difetto solo italico.

    Per dirla tutta systemd ha reso "automagiche" un sacco di cose che poi
    si scoprono "comodose", (il primo esempio sciocco che mi viene in mente
    è " journalctl --vacuuum-size 500Mb"), a prezzo di rompere con molti
    principi base di Unix ossia "tutto è un file", "il testo è
    un'interfaccia universale" e soprattutto "un programma deve fare una
    cosa sola e farla bene".

    Sono però troppo ignorante in materia per avere un'idea informata sulla cosa... :(

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Giuseppe Sacco@21:1/5 to All on Wed Oct 5 12:50:01 2022
    Ciao,

    Il giorno lun, 03/10/2022 alle 12.10 +0200, Piviul ha scritto:
    Ciao a tutti, c'è un modo impostare l'esecuzione automatica di un bash script usando atd? Quando lo imposto viene usato sh ma io vorrei proprio usare bash....

    Qualcosa del tipo:
    $ echo "bash -c /path/completo/script" | at 06:15

    Ciao,
    Giuseppe

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Giuseppe Sacco on Wed Oct 5 14:50:01 2022
    On 05/10/22 12:15, Giuseppe Sacco wrote:
    Ciao,

    Il giorno lun, 03/10/2022 alle 12.10 +0200, Piviul ha scritto:
    Ciao a tutti, c'è un modo impostare l'esecuzione automatica di un bash
    script usando atd? Quando lo imposto viene usato sh ma io vorrei proprio
    usare bash....
    Qualcosa del tipo:
    $ echo "bash -c /path/completo/script" | at 06:15

    in effetti così funziona però il comportamento mi sembra abbastanza
    strano... da shell at legge l'interprete da utilizzare dal file stesso
    mentre con l'opzione -f lo esegue con /bin/sh. Inoltre se apro una shell
    sh ed eseguo uno script bash (con #!/bin/bash inserito nella prima riga)
    o lancio lo stesso script con il comando con sh -c, in entrambi casi
    viene utilizzato l'interprete bash.

    bah...

    Grazie mille

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Giuseppe Sacco@21:1/5 to All on Wed Oct 5 15:10:01 2022
    Il giorno mer, 05/10/2022 alle 14.36 +0200, Piviul ha scritto:
    On 05/10/22 12:15, Giuseppe Sacco wrote:
    [...]
    Qualcosa del tipo:
    $ echo "bash -c /path/completo/script" | at 06:15

    in effetti così funziona però il comportamento mi sembra abbastanza strano... da shell at legge l'interprete da utilizzare dal file stesso
    mentre con l'opzione -f lo esegue con /bin/sh. Inoltre se apro una shell
    sh ed eseguo uno script bash (con #!/bin/bash inserito nella prima riga)
    o lancio lo stesso script con il comando con sh -c, in entrambi casi
    viene utilizzato l'interprete bash.

    In genere /bin/sh è un link ad una delle varie shell. Dovresti controllare qual è e verificare che quell'interprete gestisca correttamente lo shebang. (Nell'ipotesi che la shell si occupi dell'interpretazione dello shebang anziché farlo fare alla chiamata «execve» del kernel.)

    Ciao,
    Giuseppe

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Giuseppe Sacco on Wed Oct 5 17:20:01 2022
    On 05/10/22 15:07, Giuseppe Sacco wrote:
    Il giorno mer, 05/10/2022 alle 14.36 +0200, Piviul ha scritto:
    On 05/10/22 12:15, Giuseppe Sacco wrote:
    [...]
    Qualcosa del tipo:
    $ echo "bash -c /path/completo/script" | at 06:15
    in effetti così funziona però il comportamento mi sembra abbastanza
    strano... da shell at legge l'interprete da utilizzare dal file stesso
    mentre con l'opzione -f lo esegue con /bin/sh. Inoltre se apro una shell
    sh ed eseguo uno script bash (con #!/bin/bash inserito nella prima riga)
    o lancio lo stesso script con il comando con sh -c, in entrambi casi
    viene utilizzato l'interprete bash.
    In genere /bin/sh è un link ad una delle varie shell. Dovresti controllare qual è e verificare che quell'interprete gestisca correttamente lo shebang. (Nell'ipotesi che la shell si occupi dell'interpretazione dello shebang anziché farlo fare alla chiamata «execve» del kernel.)

    ecco come si chiama, shebang, non riuscivo a ricordarlo! Bene, grazie.

    Comunque sia che si lanci lo script da shell at, con il comando at -f, direttamente da shell sh o con il comando sh -c, viene utilizzata sempre
    la stessa shell /bin/sh indipendentemente a cosa quel link simbolico
    punti quindi mi aspetto abbia sempre lo stesso comportamento invece at
    -f non legge lo shebang. Un workaround comunque me lo hai suggerito, mi accontento,

    Probabilmente chiamare at con il parametro -f farà direttamente una
    chiamata «execve» (che non so cosa sia ma riporto quel che hai scritto
    tu) al kernel che mi sembra di aver capito non va a leggere la shebang
    dello script... quindi non si potranno nemmeno chiamare script in altri linguaggi (php, python etc...). Magari poi approfondisco.

    Grazie!

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alessandro Rubini@21:1/5 to All on Wed Oct 5 18:40:01 2022
    strano... da shell at legge l'interprete da utilizzare dal file stesso
    mentre con l'opzione -f lo esegue con /bin/sh.

    No. Il comportamento e` uguale: passare da stdin o con "-f" con cambia
    niente: viene salvato da qualche parte per poi essere passato a /bin/sh.
    Cosi` dice la documentazione, cosi` ho fatto vedere che si comporta
    (dire se uno script asincrono ha fallito o no non e` banale, fargli
    fare "ps $$ > /dev/tty" e` facile e da` risultati certi. Si veda
    il mio messaggio.

    Comunque sia che si lanci lo script da shell at, con il comando at -f, direttamente da shell sh o con il comando sh -c, viene utilizzata sempre
    la stessa shell /bin/sh

    Se faccio "sh -c" ovviamente parte sh. Se faccio "bash -c" parte bash.

    Probabilmente chiamare at con il parametro -f [...]

    Ragazzi, e` tutto *molto* piu` facile. "at" e` vecchio, e come tale
    usa /bin/sh come interprete. Probabilmente niente, e` cosi` e basta.
    Ricordiamo che le cose fatte bene sono facili, senza casi speciali.
    "-f" non e` un caso speciale, e` *come* dare da stdin.

    [...] fara` direttamente una chiamata execve (che non so cosa sia ma
    riporto quel che hai scritto tu) al kernel che mi sembra di aver
    capito non va a leggere la shebang dello script...

    Invece e` proprio l'opposto.

    Se un eseguibile e` eseguibile, viene eseguito (che sia python o che,
    se ha il suo #! o altri trucchi a posto, dopo "chmod +x" e` eseguibile
    ed esegue). Se invece qualcuno dichiara di volere un testo
    da passare a /bin/sh, lo passa a /bin/sh. E "#!/bin/basta" e` un
    commento, come e` giusto che sia.

    quindi non si potranno nemmeno chiamare script in altri
    linguaggi (php, python etc...).

    Tutto cio` che e` eseguibile puo` essere eseguito da /bin/sh.

    E` semplice e lineare. Non inventiamo complicazioni che non ci sono.

    saluti
    /alessandro

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Alessandro Rubini on Thu Oct 6 09:20:01 2022
    On 05/10/22 18:35, Alessandro Rubini wrote:
    strano... da shell at legge l'interprete da utilizzare dal file stesso >>>> mentre con l'opzione -f lo esegue con /bin/sh.
    No. Il comportamento e` uguale: passare da stdin o con "-f" con cambia niente: viene salvato da qualche parte per poi essere passato a /bin/sh. Cosi` dice la documentazione, cosi` ho fatto vedere che si comporta
    (dire se uno script asincrono ha fallito o no non e` banale, fargli
    fare "ps $$ > /dev/tty" e` facile e da` risultati certi. Si veda
    il mio messaggio.

    eseguire nella shell il  comando "#!/bin/sh" non produce nessun effetto essendo un commento. Se invece esegui un file sh sempre da shell at
    viene letto lo sheebang ed interpretato non più da sh ma dallo sheebang. Perché affermi che "dire se uno script asincrono ha fallito o no non e` banale"; guardare il codice di errore a me sembra semplice ed efficace
    mentre il tuo comando non l'ho capito; ho capito il senso ma non mi
    funziona e non ho capito bene cosa faccia. Scusa ma non tutti hanno le
    tue conoscenze!


    Comunque sia che si lanci lo script da shell at, con il comando at -f,
    direttamente da shell sh o con il comando sh -c, viene utilizzata sempre
    la stessa shell /bin/sh
    Se faccio "sh -c" ovviamente parte sh. Se faccio "bash -c" parte bash.

    questo è lapalissiano, non ho capito cosa vuoi dire...

    Probabilmente chiamare at con il parametro -f [...]
    Ragazzi, e` tutto *molto* piu` facile. "at" e` vecchio, e come tale
    usa /bin/sh come interprete. Probabilmente niente, e` cosi` e basta. Ricordiamo che le cose fatte bene sono facili, senza casi speciali.
    "-f" non e` un caso speciale, e` *come* dare da stdin.

    secondo me questo non è vero: at -f ignora lo sheebang, la shell at no.
    Se metti lo sheebang nella shell at è chiaro che viene interpretato da
    sh per quello che è, un commento.

    Almeno secondo il mio empirismo; se però riesci a mostrarmi il contrario
    ben venga!

    Grazie mille

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Piviul on Thu Oct 6 17:40:01 2022
    On 03/10/22 12:10, Piviul wrote:
    Ciao a tutti, c'è un modo impostare l'esecuzione automatica di un bash script usando atd? Quando lo imposto viene usato sh ma io vorrei
    proprio usare bash....

    Grazie mille a tutti quanti in particolare ad Alessandro da cui ho
    imparato parecchio. Ora mi è tutto più chiaro. Dal man di at leggo:

    -f file Reads the job from file rather than standard input.

    Io trovo questa frase un po' cryptica, comunque intende dire che con
    l'opzione -f legge i comandi dal file invece che inviare il nome del
    file allo standard input.

    Così ad esempio questi 2 comandi sono equivalenti

    $ at now < /path/to/the/script.sh
    $ at -f /path/to/the/script.sh now

    e i comandi contenuti nel file vengono interpretati da /bin/sh; ma anche
    questi sono equivalenti

    $ echo /path/to/the/script.sh | at now
    $ at now
    /path/to/the/script.sh
    Ctrl-d

    e i comandi vengono inviati da sh al kernel e quindi viene letta la sheebang

    Buona serata a tutti

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)