Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    bash: /bin/rm: Argument list too long

    Volendo eliminare tutti i messaggi presenti in quarantena, ho dato il seguente comando.

    #rm -r /var/spool/qmailscan/quarantine/new/*

    Ha funzionato senza problemi, così l'ho messo in cron.daily ma dopo qualche giorno mi sono accorto che i file non venivano cancellati!
    Ho quindi lanciato a mano lo script e mi ha restituitop questo messaggio:
    bash: /bin/rm: Argument list too long

    Infatti la differenza è che adesso ci sono dentro molti file...


    ...e quindi? E' sbagliato cancellare i file di una directory in quel modo? Come si dovrebbe fare?

    Ciao

  2. #2
    rm -Rf /var/spool/qmailscan/quarantine/new
    mkdir /var/spool/qmailscan/quarantine/new

  3. #3
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,347
    La butto li` perche` ora non posso provarla, ma forse xargs puo` fare al caso tuo.

    codice:
    ls /var/spool/qmailscan/quarantine/new/ | xargs rm -rf
    Non mi assumo responsabilita`

  4. #4
    Originariamente inviato da Ilmalcom
    La butto li` perche` ora non posso provarla, ma forse xargs puo` fare al caso tuo.

    codice:
    ls /var/spool/qmailscan/quarantine/new/ | xargs rm -rf
    Non mi assumo responsabilita`
    http://openskills.info/view/boxdetai...xtype=commands

    comunque penso che il problema sia che i file superano i 36000passa(quando si fa un ./configure viene scritto il massimo numero di caratteri..) caratteri della shell bash..

  5. #5
    Originariamente inviato da Ilmalcom
    La butto li` perche` ora non posso provarla, ma forse xargs puo` fare al caso tuo.

    codice:
    ls /var/spool/qmailscan/quarantine/new/ | xargs rm -rf
    Non mi assumo responsabilita`
    Quasi giusta!

    Dando solo questo venivano passati a xargs solo i nomi dei file, senza il percorso completo, quindi non trovava i file da cancellare.
    Quindi è bastato aggiungere un "cd":

    cd /var/spool/qmailscan/quarantine/new/
    ls /var/spool/qmailscan/quarantine/new/ | xargs rm -rf

    Poi per sicurezza ho lasciato l'intero pecorso anche dopo "ls"... mi inquietava un po' vedere quel comando da solo!
    A proposito, se in uno script del genere una riga dà errore, si bloca tutto o va avanti lo stesso?


    Grazie!

  6. #6
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,347
    Originariamente inviato da daviweb
    A proposito, se in uno script del genere una riga dà errore, si bloca tutto o va avanti lo stesso?


    Grazie!
    va avanti stampando gli errori, se non sopprimi l'output

  7. #7
    Capito!

    Grazie ancora, alla prossima!


  8. #8
    Mi piacerebbe migliorare questo script, facendo in modo che cancelli solo i file più vecchi di 10 giorni. In modo cioè di avere sempre la quarantena degli ultimi 9 giorni. Come potrei fare?
    Purtroppo non sono pratico di script del genere... :rollo:

    Grazie

  9. #9
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,578
    find /var/spool/qmailscan/quarantine/new/ -mtime +10 -exec rm -rf '{}' ';'

    provalo prima su una directory di 'test', magari così modificato:
    find /var/spool/qmailscan/quarantine/new/ -daystart -mtime +10 -exec echo "rm -rf" '{}' ';'

    ciao
    slack? smack!

  10. #10
    potresti pure farglielo fare file per file..

    for x in /var/spool/qmailscan/quarantine/new/*; do rm -rf $x; done


    provalo...?
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.