• /run/user/33

    From Leonardo Boselli@21:1/5 to All on Wed Nov 13 22:20:02 2024
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    ho da inserire in una pagina web una informazione in tempo "quasi reale". questa informazione viene presa da uno scrip PHP da un file che viene aggiornato in tempo quasi reale [quasi reale perché la elaborazione dei
    dati prende un paio di secondi].
    Per evitare ritardi lo script di visualizzazione non va a ricalcolare il
    dato, ma questo viene fatto da un processo che ogni 5 secondi legge i dati
    e se ci sono variazioni rispetto alla lettura precedente ricalcola il
    risultato e va a scriverlo su un file.
    attualmente scrive su un log, ma andare a leggersi l'ultimo campo
    dell´ultima riga fa consumare altrettanto tempo quando il log è lungo
    la soluzione potrebbe essere di metterlo in un file che contiene solo
    questo e che viene incluso con un include.
    Farlo con un file reale rischia a lungo termine di fare un "buco" sul
    settore che viene riscritto nel caso peggiore ogni pochi secondi, nel caso migliore ogni minuto o due
    stavo pensando a metterlo in /run/user/33 che è in tempfs ...
    ... dovrebbe esserci ma non c´è [33 è www-data] .
    Quele è il modo corretto per creare la directory ?
    (ci sarebbe anche /run/apache2/socks/ disponibile: se creo un file lì dove www-data ha già i permessi giusti creo problemi ?)
    --
    Leonardo Boselli
    Firenze, Toscana, Europa
    http://i.trail.it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Leonardo Boselli on Thu Nov 14 09:20:01 2024
    On 11/13/24 22:18, Leonardo Boselli wrote:
    [...]
    attualmente scrive su un log, ma andare a leggersi l'ultimo campo dell´ultima riga fa consumare altrettanto tempo quando il log è lungo
    la soluzione potrebbe essere di metterlo in un file che contiene solo
    questo e che viene incluso con un include.

    Sicuramente mi sfugge qualcosa ma devi andare a leggere l'ultima riga?
    Un tail non ti risolve il problema?

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Leonardo Boselli@21:1/5 to Diego Zuccato on Thu Nov 14 11:30:01 2024
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    On Thu, 14 Nov 2024, Diego Zuccato wrote:
    Ma quale sarebbe esattamente il problema? Se usi fpm, PHP gira con un suo utente diverso da Apache (www-data). Comunque eviterei l'uso della cartella socks.

    spiego diversamante: ci sono diversi sensori ambientali che inviano [con
    dei post in modo asincrono] o vengono interrogati [o con un processo in
    cron, oppure richiamati dal processo che riceve i dati] e scrivono i dati
    su un file di log.
    Questo non è particolarmente critico in quanto cresce di circa 20 kB al giorno.
    in modo asincrono una richiesta di una certa pagina web deve ritornare un contenuto comprendente due valori, che sono per l'appunto il contenuto
    degli ultimi due campi dell'ultima riga del log [file CSV].
    il tail può funzionare ma non mi pare elegante.
    per quello avere quei due valori come unico contenuto di un file che puoi
    usare in tanti modi mi sembrava il più semplice.
    memcached non può essere usato come un file [passato come file di configurazione per un comando !].

    La domanda la pongo in maniera diversa: c'è in uno dei fs tempfs, ossia
    che sta solo in ram, un posto dove possano essere dati accessi in scrittura a www-data e un altro gruppo, in lettura per tutti per creare questo file ?
    [il fatto che sia in ram non è un problema, i dati sono comunque presenti
    sul log, e se occasionalmente fosse vuoto è accettabile]

    ho trovato a giro il suggerimento di usare /dev/shm che in effetti
    funziona. . vado con quello ? (tanto è un file di massimo 48 byte)

    Soluzione alternativa al disco: usa memcached.
    Il processo aggiorna la entry di memcache, e php la legge. Semplice, lineare, utile anche per altre cose.

    Diego

    --
    Leonardo Boselli
    Firenze, Toscana, Europa

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to Leonardo Boselli on Thu Nov 14 12:20:01 2024
    This is a multi-part message in MIME format.
    On 11/14/24 11:08, Leonardo Boselli wrote:
    On Thu, 14 Nov 2024, Diego Zuccato wrote:
    Ma quale sarebbe esattamente il problema? Se usi fpm, PHP gira con un
    suo utente diverso da Apache (www-data). Comunque eviterei l'uso
    della cartella socks.

    spiego diversamante: ci sono diversi sensori ambientali che inviano
    [con dei post in modo asincrono] o vengono interrogati [o con un
    processo in cron, oppure richiamati dal processo che riceve i dati] e scrivono i dati su un file di log.
    Questo non è particolarmente critico in quanto cresce di circa 20 kB
    al giorno.
    in modo asincrono una richiesta di una certa pagina web deve ritornare
    un contenuto comprendente due valori, che sono per l'appunto il
    contenuto degli ultimi due campi dell'ultima riga del log [file CSV].
    il tail può funzionare ma non mi pare elegante.

    Sempre che abbia capito bene a me non pare elegante leggere tutto un
    file quando ti interessa l'ultima riga. Tieni conto che non
    necessariamente devi usare tail da shell_exec, puoi usare fseek partendo dall'ultima riga (SEEK_END).

    Piviul


    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 11/14/24 11:08, Leonardo Boselli
    wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:393498d8-37e2-b711-09ed-4b7bd9d6e2a2@trail.it">On Thu,
    14 Nov 2024, Diego Zuccato wrote:
    <br>
    <blockquote type="cite">Ma quale sarebbe esattamente il problema?
    Se usi fpm, PHP gira con un suo utente diverso da Apache
    (www-data). Comunque eviterei l'uso della cartella socks.
    <br>
    </blockquote>
    <br>
    spiego diversamante: ci sono diversi sensori ambientali che
    inviano [con dei post in modo asincrono] o vengono interrogati [o
    con un processo in cron, oppure richiamati dal processo che riceve
    i dati] e scrivono i dati su un file di log.
    <br>
    Questo non è particolarmente critico in quanto cresce di circa 20
    kB al giorno.
    <br>
    in modo asincrono una richiesta di una certa pagina web deve
    ritornare un contenuto comprendente due valori, che sono per
    l'appunto il contenuto degli ultimi due campi dell'ultima riga del
    log [file CSV].
    <br>
    il tail può funzionare ma non mi pare elegante.
    <br>
    </blockquote>
    <p>Sempre che abbia capito bene a me non pare elegante leggere tutto
    un file quando ti interessa l'ultima riga. Tieni conto che non
    necessariamente devi usare tail da shell_exec, puoi usare fseek
    partendo dall'ultima riga (<span class="comment-copy">SEEK_END).</span></p>
    <p><span class="comment-copy">Piviul</span></p>
    <br>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Leonardo Boselli@21:1/5 to Diego Zuccato on Thu Nov 14 15:00:01 2024
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    di fatto io faccio come dici tu, con una piccola variante:
    alcuni sensori mandano la loro lettura con un post php, lo fanno con tempi imprevedibili in quanto l'invio viene fatto in teoria una volta al giorno,
    a meno che il valore non cambi, ma di fatto arriva in media una lettura
    ogni 45"...
    altri ricevono un poll da un processo cron, che leggew i valori degli
    altri sensori e crea un record "sintetico" con due valori.
    questo record è quello che deve essere in ram (coem l'ultimo valore dei sensori asincroni) per non fare "buchi" nel disco scrivendos empre nello
    stesso punto.
    Se mi cheidete perché insista per scrivere un file è perché alcune
    utilities si aspettano un file di configurazione o di dati, e non puoi chiedergli di fare elaborazioni.
    riguardo al "Se usi un qualsiasi mount tmpfs"
    ecco ... qui c'è il problema:
    ho provato a seguire le istruzioni che ho trovato con
    mount -F tmpfs -o size=1m swap /mnt
    ma ricvevo un "mount: bad usage"... probabile che le istruzioni [ma ho
    trovato sempre quelle] siano sballate ... avete quelle giuiste ?

    Thu, 14 Nov 2024, Diego Zuccato wrote:
    memcached è praticamente un database che puoi alimentare ed interrogare in vari modi.
    Se usi un qualsiasi mount tmpfs puoi poi dargli i permessi che ti pare.
    Ho un amico che usa un sistema simile per la gestione della sua domotica. Funziona, ma IMO è piuttosto "cervellotico" e scala malissimo, con molte race
    condition possibili.

    Da quel che hai detto finora, io farei così:
    - i sensori mandano le letture con un POST ad un php
    - il php salva i valori (eventualmente elaborati) dove serve, p.e. db o memcache
    - l'utente interroga un altro php che recupera i dati salvati dal primo

    Tutto serializza bene e scala tranquillamente.

    Diego


    --
    Leonardo Boselli
    Firenze, Toscana, Europa

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Leonardo Boselli@21:1/5 to Diego Zuccato on Fri Nov 15 07:10:01 2024
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    con questo funziona ....

    On Fri, 15 Nov 2024, Diego Zuccato wrote:

    A me così funziona:

    root@virt-diego:~# mkdir tmp
    root@virt-diego:~# mount -t tmpfs none ./tmp -o size=1m
    root@virt-diego:~# df -h
    File system Dim. Usati Dispon. Uso% Montato su
    [...]
    none 1,0M 0 1,0M 0% /root/tmp

    Nota che uso -t invece di -F (che mi pare in questo contesto non abbia senso).

    --
    Leonardo Boselli
    Firenze, Toscana, Europa
    http://i.trail.it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?iso-8859-1?Q?Francesco_Potort=EC?@21:1/5 to All on Fri Nov 15 12:30:01 2024
    ...
    Per evitare ritardi lo script di visualizzazione non va a ricalcolare il >dato, ma questo viene fatto da un processo che ogni 5 secondi legge i dati
    e se ci sono variazioni rispetto alla lettura precedente ricalcola il >risultato e va a scriverlo su un file.
    attualmente scrive su un log, ma andare a leggersi l'ultimo campo >dell´ultima riga fa consumare altrettanto tempo quando il log è lungo

    QUesto è vero solo se leggi il file sequenzialmente dall'inizio. Se il formato ha record di lungheza fissa, puoi accedere direttamente all'ultimo record, se invece la lunghezza è variabile ma conosci la lunghezza massima, puoi accedere alla stringa
    finale da cui estrarre l'ultimo record. Solo se non conosci la lunghezza massima di un record devi leggere dall'inizio.

    la soluzione potrebbe essere di metterlo in un file che contiene solo
    questo e che viene incluso con un include.
    Farlo con un file reale rischia a lungo termine di fare un "buco" sul >settore che viene riscritto nel caso peggiore ogni pochi secondi, nel caso >migliore ogni minuto o due

    Se così fosse i dischi si bucherebbero continuamente, anche solo per l'aggiornamento del journal. Nella pratica, quelli che il VFS nel SO vede come settori sono in realtà virtualizzati dal firmware del disco, che in linea di principio se li può
    rigirare come gli pare, e per di più ha una sua cache (i vecchi WD 4TB per esempio hanno una cache di 256MB).

    Inoltre, le scritture su disco viste dal processo sono in realtà virtualizzate dal VFS, che a sua volta usa abbondanti cache, e non le scrive così di frequente. Per esempio sul mio vedo:

    # sysctl vm.dirty_expire_centisecs vm.dirty_writeback_centisecs vm.dirty_expire_centisecs = 3000
    vm.dirty_writeback_centisecs = 500

    Il che significa che ogni 5s il processo di writeback va a guardare la cache e se ci sono dati non ancora scritti sul disco da più di 30s lancia una scrittura fisica. Il che in pratica significa fra una scrittura fisica e l'altra di quel dato sul disco
    passano almeno 30s.

    In pratica, ormai da una decina d'anni se non più, che io sappia il problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.

    --
    fp

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Leonardo Boselli@21:1/5 to All on Fri Nov 15 12:40:01 2024
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    On Fri, 15 Nov 2024, Francesco Potortì wrote:
    QUesto è vero solo se leggi il file sequenzialmente dall'inizio.
    (…)
    Nella pratica, quelli che il VFS nel SO vede come settori sono in realtà virtualizzati dal firmware del disco,
    (…)
    In pratica, ormai da una decina d'anni se non più, che io sappia il
    problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.

    chiarisco una cosa: il "disco" su cui va a scrivere non penso abbia tanta
    cache visto che è una chiavetta USB. per quello mi preoccupavo


    --
    Leonardo Boselli
    Firenze, Toscana, Europa
    http://i.trail.it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Francesco_Potort=C3=AC?=@21:1/5 to All on Fri Nov 15 13:00:01 2024
    On Fri, 15 Nov 2024, Francesco Potortì wrote:
    QUesto è vero solo se leggi il file sequenzialmente dall'inizio.
    (…)
    Nella pratica, quelli che il VFS nel SO vede come settori sono in realtà >> virtualizzati dal firmware del disco,
    (…)
    In pratica, ormai da una decina d'anni se non più, che io sappia il
    problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.

    chiarisco una cosa: il "disco" su cui va a scrivere non penso abbia tanta >cache visto che è una chiavetta USB. per quello mi preoccupavo

    Di tutto il processo che ho descritto prima, la cosa più importante è la cache di vfs. Poi il firmware che riordina i settori, che in un disco SSD come la tua chiavetta USB fa un grosso lavoro. La quantità di cache del disco è il fattore meno
    significativo.

    Tuttavia è vero che un ssd di chiavetta usb è probabilmente meno durevole di un ssd con interfaccia sata o nvme, che sono pensati per altri usi. Se quella chiavetta è usata solo o quasi solo per quello che hai descritto, io continuerei a usarla con l'
    unica precauzione di formattare solo metà della chiavetta, e lascerei il resto libero per la allocazione interna delle celle fisiche danneggiate. E magari eviterei le chiavette più economiche, giusto per scrupolo.

    --
    fp

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lem@21:1/5 to All on Sat Nov 16 09:50:01 2024
    Il giorno ven, 15/11/2024 alle 12.36 +0100, Leonardo Boselli ha scritto:
    chiarisco una cosa: il "disco" su cui va a scrivere non penso abbia tanta cache visto che è una chiavetta USB.

    E, tanto per stare tranquilli, usare un *CoW* filesystem, come F2FS,
    pensato apposta per quel tipo di supporti?
    Così passa ogni paura.
    --
    Bye, Lem

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lem@21:1/5 to All on Sat Nov 16 10:00:01 2024
    Il giorno ven, 15/11/2024 alle 12.26 +0100, Francesco Potortì ha scritto:
    In pratica, ormai da una decina d'anni se non più, che io sappia il problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.

    Che io sappia, invece, il problema non è proprio mai esistito.
    Né sugli HD (prima avevo letto "settore" e "disco", non pagina o
    chiavetta, quindi il pensiero era corso a quelli... con un
    notevole stupore, ammetto), né sugli SSD. Questi ultimi hanno,
    sì, un limite piuttosto basso di riscritture per cella permesse,
    ma proprio per questo sin dalla loro comparsa sono stati dotati di
    software, come scrivevi, che appositamente "spalmasse" le
    scritture in maniera *particolarmente* omogenea.
    --
    Bye, Lem

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Leonardo Boselli@21:1/5 to Lem on Sat Nov 16 10:20:02 2024
    This message is in MIME format. The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.

    On Sat, 16 Nov 2024, Lem wrote:
    E, tanto per stare tranquilli, usare un *CoW* filesystem, come F2FS,
    pensato apposta per quel tipo di supporti?
    Così passa ogni paura.

    alla fine credo che il sistema migliore sia di mettere una piccola
    directory in tmpfs, che così da anche la garanzia che al riavvio è davvero vuota [per le applicazioni che consumano i dati la mancanza di un dato è
    un problema minore che un dato _troppo_ vecchio].
    quello che chiedo ora è: come faccio a metterla all'avvio [itealmente in fstab] (in alternativa: dova va lo script che la crea, che deve partire
    PRIMA di cron e di apache [che sia inseriscono che
    consumano dati]?


    --
    Leonardo Boselli
    Firenze, Toscana, Europa
    http://i.trail.it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?utf-8?Q?Francesco_Potort=C3=AC?=@21:1/5 to All on Sat Nov 16 10:40:01 2024
    Il giorno ven, 15/11/2024 alle 12.26 +0100, Francesco Potortì ha scritto:
    In pratica, ormai da una decina d'anni se non più, che io sappia il problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.

    Che io sappia, invece, il problema non è proprio mai esistito.
    Né sugli HD [...] né sugli SSD

    Provando a scavare nella mia meoria, sicuramente esisteva sui floppy disk :) Mi sa che per gli HD hai ragione, non mi viene in mente un meccanismo per cui un settore fisico si debba usurare, in linea di principio.

    Per gli SSD a me pare di ricordare che il problema esisteva tanti anni fa nelle prime chiavette a livello di settore, e nei primi sistemi più grossi a livello di sezioni del disco fino a una decina di anni fa, quando ancora si leggevano pubblicità o
    recensioni sui nuovi algoritmi nel firmware o le nuove architetture Nand che evitavano questo problema. Poi, può anche darsi che mi stia sognando tutto, ma è un sogno realistico :)

    --
    fp

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lem@21:1/5 to All on Sat Nov 16 12:10:01 2024
    Il giorno sab, 16/11/2024 alle 10.33 +0100, Francesco Potortì ha scritto:
    Il giorno ven, 15/11/2024 alle 12.26 +0100, Francesco Potortì ha scritto:
    In pratica, ormai da una decina d'anni se non più, che io sappia il problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.

    Che io sappia, invece, il problema non è proprio mai esistito.
    Né sugli HD [...] né sugli SSD

    Provando a scavare nella mia meoria, sicuramente esisteva sui floppy disk :)

    Ti dirò, i floppy li ho certo usati, e persino quelli floppy floppy, quelli nella busta di carta. Ma non ho mai affrontato una situazione in cui sul floppy si
    facessero... scritture intensive, ecco. Anche perché, colle velocità dei tempi... cioè, altro che scritture ogni due secondi... solo per preparasi a scrivere,
    il floppy ce ne metteva almeno dieci. :-D
    Che ogni tanto qualche floppy, nel complesso, andasse a ramengo, quello di sicuro.
    Perciò, se tu mi dici che invece i buchi si creavano, non sarò certo io a smentirti. :)

    Per gli SSD a me pare di ricordare che il problema esisteva tanti anni fa nelle prime chiavette a livello di settore, e nei primi sistemi più grossi a livello di sezioni del disco fino a una decina di anni fa, quando ancora si leggevano pubblicità o
    recensioni sui nuovi algoritmi nel firmware o le nuove architetture Nand che evitavano questo problema. Poi, può anche darsi che mi stia sognando tutto, ma è un sogno realistico :)

    Anche qui, non ho esperienza diretta di defaillance di questo tipo particolare (di "buchi", per capirci)... e non credo di aver mai nemmeno sentito di cose
    così. Ma quel che ho sperimentato e sentito io conta davvero poco, quindi mi astengo volentieri in merito. :)

    Mi ripeto: che poi, anche sui dischi rigidi, alcuni settori (alcuni bit di qualche settore) si spatascino, ma certo, ma naturale, ça va sans dire. E il disco se
    può (se riesce almeno a leggere) rialloca, e comunque marca come fallato il settore e non ci scrive più. È solo la cosa dei buchi dovuti a riscritture ripetute
    di un file, che a me proprio giungeva nuova.
    --
    Bye, Lem

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lem@21:1/5 to All on Sat Nov 16 12:50:01 2024
    Il giorno sab, 16/11/2024 alle 10.16 +0100, Leonardo Boselli ha scritto:
    alla fine credo che il sistema migliore sia di mettere una piccola
    directory in tmpfs

    Non è che hai già /tmp in ram? Se è così, potresti addirittura metterla sotto /tmp.

    Se vuoi mettere /tmp in ram, esistono modi diversi a seconda della versione del sistema
    operativo.

    Anni e annorum fa, credo con debian bastasse inserire in /etc/default/tmpfs la direttiva:

    RAMTMP=yes

    Non credo che sta cosa funzioni più.

    Altrimenti, a seconda della versione, si può usare fstab o sfruttare systemd: https://unix.stackexchange.com/questions/722496/tmp-on-tmpfs-fstab-vs-tmp-mount-with-systemd

    Se invece vuoi creare un filesystem a parte, fstab andrà benissimo.
    Qualcosa come:

    none /directory/di/mount tmpfs noatime,noexec,nosuid,nodev,mode=1777,size=1G 0 0

    Prima crea la directory di mount, naturalmente. E fai il size che ti serve, abbondante.
    --
    Bye, Lem

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From franchi@modula.net@21:1/5 to All on Sat Nov 16 16:10:04 2024
    Il 15/11/2024 12:26, Francesco Potortì ha scritto:
    ...
    Per evitare ritardi lo script di visualizzazione non va a ricalcolare il
    dato, ma questo viene fatto da un processo che ogni 5 secondi legge i dati >> e se ci sono variazioni rispetto alla lettura precedente ricalcola il
    risultato e va a scriverlo su un file.
    attualmente scrive su un log, ma andare a leggersi l'ultimo campo
    dell´ultima riga fa consumare altrettanto tempo quando il log è lungo
    QUesto è vero solo se leggi il file sequenzialmente dall'inizio. Se il formato ha record di lungheza fissa, puoi accedere direttamente all'ultimo record, se invece la lunghezza è variabile ma conosci la lunghezza massima, puoi accedere alla stringa
    finale da cui estrarre l'ultimo record. Solo se non conosci la lunghezza massima di un record devi leggere dall'inizio.
    Hummm... il comando tail può leggere l'ultima riga di un file di testo e
    , con il parametro -f,   emette le righe aggiunte via via che il file
    cresce. Se uno lo usa in un pipe ....
    la soluzione potrebbe essere di metterlo in un file che contiene solo
    questo e che viene incluso con un include.
    Farlo con un file reale rischia a lungo termine di fare un "buco" sul
    settore che viene riscritto nel caso peggiore ogni pochi secondi, nel caso >> migliore ogni minuto o due
    Se così fosse i dischi si bucherebbero continuamente, anche solo per l'aggiornamento del journal. Nella pratica, quelli che il VFS nel SO vede come settori sono in realtà virtualizzati dal firmware del disco, che in linea di principio se li può
    rigirare come gli pare, e per di più ha una sua cache (i vecchi WD 4TB per esempio hanno una cache di 256MB).

    Inoltre, le scritture su disco viste dal processo sono in realtà virtualizzate dal VFS, che a sua volta usa abbondanti cache, e non le scrive così di frequente. Per esempio sul mio vedo:

    # sysctl vm.dirty_expire_centisecs vm.dirty_writeback_centisecs vm.dirty_expire_centisecs = 3000
    vm.dirty_writeback_centisecs = 500

    Il che significa che ogni 5s il processo di writeback va a guardare la cache e se ci sono dati non ancora scritti sul disco da più di 30s lancia una scrittura fisica. Il che in pratica significa fra una scrittura fisica e l'altra di quel dato sul
    disco passano almeno 30s.

    In pratica, ormai da una decina d'anni se non più, che io sappia il problema che ti stai ponendo non esiste, se non mi sfugge qualcosa.


    --
    Questa email è stata esaminata alla ricerca di virus dal software antivirus Avast.
    www.avast.com

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lem@21:1/5 to All on Sat Nov 16 18:50:01 2024
    Il giorno sab, 16/11/2024 alle 15.56 +0100, franchi@modula.net ha scritto:
    Hummm... il comando tail può leggere l'ultima riga di un file di testo [...]

    E, parlando in generale, se non si sa di preciso quante righe serva leggere, si può leggere a ritroso partendo dal fondo, riga per riga: col comando tac.

    | $ tac < <(echo -e "prima\nseconda\nterza")
    | terza
    | seconda
    | prima
    --
    Bye, Lem

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