[RISOLTO]/tmp

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
navajo
Staff
Staff
Messaggi: 3884
Iscritto il: gio 8 gen 2004, 0:00
Nome Cognome: Massimiliano
Slackware: 13.37 (x86_64)
Kernel: 2.6.37.6
Desktop: KDE 4.7.0 (Alien)
Località: Roma

Re: /tmp

Messaggio da navajo »

avete ragione , se esite una dir con un solo segno non lo toglie, ma se ha almeno due caratteri si:

Codice: Seleziona tutto

Squeeze:/home/navajo# cd /tmp/
Squeeze:/tmp# mkdir .X
Squeeze:/tmp# ls -a
.   .ICE-unix   kde-root        orbit-navajo        ssh-aIBklt1939  .X0-lock
..  kde-navajo  ksocket-navajo  pulse-RwKSB1FebW39  .X              .X11-unix
Squeeze:/tmp# rm -fr /tmp/* /tmp/.??*
Squeeze:/tmp# ls -a
.  ..  .X
Squeeze:/tmp# mv .X/ .Xdir
Squeeze:/tmp# ls -a
.  ..  kde-navajo  .Xdir
Squeeze:/tmp# rm -fr /tmp/* /tmp/.??*
Squeeze:/tmp# ls -a
.  ..
Squeeze:/tmp#

boh mi spiegate il perchè per favore ? non l ho capito.. Domanda: ci sono possibilità che qualche programma/processo crei una dir di un singolo carattere ?
Posto anche il conentuto di /lib/init/bootclean.sh che si avvia al boot di debian. Magari si puo prendere come spunto per un ulteriore approfondimento.

Codice: Seleziona tutto

#!/bin/sh
#
# bootclean
#
# Clean /tmp.  Clean /var/run and /var/lock if not mounted as tmpfs
#
# DO NOT RUN AFTER S:55bootmisc.sh and do not run this script directly
# in runlevel S. Instead write an initscript to call it.
#

. /lib/init/vars.sh

. /lib/lsb/init-functions

# Should be called outside verbose message block
mkflagfile()
{
        # Prevent symlink attack  (See #264234.)
        [ -L "$1" ] && log_warning_messaggio "bootclean: Deleting symbolic link '$1'."
        rm -f "$1" || { log_failure_messaggio "bootclean: Failure deleting '$1'." ; return 1 ; }
        # No user processes should be running, so no one should be able to introduce
        # a symlink here.  As an extra precaution, set noclobber.
        set -o noclobber
        :> "$1" || { log_failure_messaggio "bootclean: Failure creating '$1'." ; return 1 ; }
        return 0
}

clean_tmp() {
        cd /tmp || { log_failure_messaggio "bootclean: Could not cd to /tmp." ; return 1 ; }

        #
        # Only clean out /tmp if it is world-writable. This ensures
        # it really is a/the temp directory we're cleaning.
        #
        [ "$(find . -maxdepth 0 -perm -002)" = "." ] || return 0

        if [ ! "$TMPTIME" ]
        then
                log_warning_messaggio "Using default TMPTIME 0."
                TMPTIME=0
        fi

        [ "$VERBOSE" = no ] || log_action_begin_messaggio "Cleaning /tmp"

        #
        # Remove regardless of TMPTIME setting
        #
        rm -f .X*-lock

        #
        # Don't clean remaining files if TMPTIME is negative or 'infinite'
        #
        case "$TMPTIME" in
          -*|infinite|infinity)
                [ "$VERBOSE" = no ] || log_action_end_messaggio 0 "skipped"
                return 0

  esac

        #
        # Wipe /tmp, excluding system files, but including lost+found
        #
        # If TMPTIME is set to 0, we do not use any ctime expression
        # at all, so we can also delete files with timestamps
        # in the future!
        #
        if [ "$TMPTIME" = 0 ]
        then
                TEXPR=""
                DEXPR=""
        else
                TEXPR="-mtime +$TMPTIME -ctime +$TMPTIME -atime +$TMPTIME"
                DEXPR="-mtime +$TMPTIME -ctime +$TMPTIME"
        fi

        EXCEPT='! -name .
                ! ( -path ./lost+found -uid 0 )
                ! ( -path ./quota.user -uid 0 )
                ! ( -path ./aquota.user -uid 0 )
                ! ( -path ./quota.group -uid 0 )
                ! ( -path ./aquota.group -uid 0 )
                ! ( -path ./.journal -uid 0 )
                ! ( -path ./.clean -uid 0 )
                ! ( -path './...security*' -uid 0 )'

        mkflagfile /tmp/.clean || return 1

        report_err()
        {
                if [ "$VERBOSE" = no ]
                then
                        log_failure_messaggio "bootclean: Failure cleaning /tmp."
                else
                        log_action_end_messaggio 1 "bootclean: Failure cleaning /tmp"
                fi
        }

        #
        # First remove all old files...
        #
        find . -depth -xdev $TEXPR $EXCEPT ! -type d -delete \
                || { report_err ; return 1 ; }

        #
        # ...and then all empty directories
        #
        find . -depth -xdev $DEXPR $EXCEPT -type d -empty -delete \
                || { report_err ; return 1 ; }

        [ "$VERBOSE" = no ] || log_action_end_messaggio 0
        return 0
}

clean_lock() {
        if [ yes = "$RAMLOCK" ] ; then
            return 0
        fi

        cd /var/lock || { log_failure_messaggio "bootclean: Could not cd to /var/lock." ; return 1 ; }

        [ "$VERBOSE" = no ] || log_action_begin_messaggio "Cleaning /var/lock"
        report_err()
        {
                if [ "$VERBOSE" = no ]
                then
                        log_failure_messaggio "bootclean: Failure cleaning /var/lock."
                else
                        log_action_end_messaggio 1 "bootclean: Failure cleaning /var/lock"
                fi
        }
        find . ! -type d -delete \
                || { report_err ; return 1 ; }
        [ "$VERBOSE" = no ] || log_action_end_messaggio 0
        mkflagfile /var/lock/.clean || return 1
        return 0
}

clean_run() {
        if [ yes = "$RAMRUN" ] ; then
            return 0
        fi

        cd /var/run || { log_action_end_messaggio 1 "bootclean: Could not cd to /var/run." ; return 1 ; }

        [ "$VERBOSE" = no ] || log_action_begin_messaggio "Cleaning /var/run"
        report_err()
        {
                if [ "$VERBOSE" = no ]
                then
                        log_failure_messaggio "bootclean: Failure cleaning /var/run."
                else
                        log_action_end_messaggio 1 "bootclean: Failure cleaning /var/run"
                fi
        }
        find . ! -xtype d ! -name utmp ! -name innd.pid -delete \
                || { report_err ; return 1 ; }
        [ "$VERBOSE" = no ] || log_action_end_messaggio 0
        mkflagfile /var/run/.clean || return 1
        return 0
}

which find >/dev/null 2>&1 || exit 1
log_begin_messaggio "Cleaning up temporary files..."

:
# If there are flag files that have not been created by root
# then remove them
for D in /tmp /var/run /var/lock
do
        if [ -f $D/.clean ]
        then
                which stat >/dev/null 2>&1 && cleanuid="$(stat -c %u $D/.clean)"
                # Poor's man stat %u, since stat (and /usr) might not be
                # available in some bootup stages
                [ "$cleanuid" ] || cleanuid="$(find $D/.clean -printf %U)"
                [ "$cleanuid" ] || { log_failure_messaggio "bootclean: Could not stat '$D/.clean'." ; exit 1 ; }
                if [ "$cleanuid" -ne 0 ]
                then
                        rm -f $D/.clean || { log_failure_messaggio "bootclean: Could not delete '$D/.clean'." ; exit 1 ; }
                fi
        fi
done

[ -f /tmp/.clean ] && [ -f /var/run/.clean ] && [ -f /var/lock/.clean ] && { log_end_messaggio 0 ; exit 0 ; }



Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /tmp

Messaggio da targzeta »

conraid ha scritto:...ma se non vogliamo utilizzare rm -rf .??* utilizzato in altre distribuzioni...[/code]
e loro come risolvono il problema descritto da Mario. Nel senso, un file /tmp/.a come lo eliminano?
conraid ha scritto: a quel find ci aggiungerei

Codice: Seleziona tutto

-mount ! -name lost+found
ci scordiamo sempre che in ambiti non casalinghi /tmp e /var/tmp spesso sono su partizioni separate, per montarle con permessi particolari, etc...
Beh, rm non cancella lo stesso la directory lost+found? Inoltre perchè '-mount', vuoi dire che a volte in /tmp viene montata un altra directory? L'ultimo comando find che ho postato dovrebbe ritornare esattamente tutti i file e le directory contenute in /tmp a prescindere dal fatto che sia o meno nel filesystem root. O mi sfugge qualcosa?

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
navajo
Staff
Staff
Messaggi: 3884
Iscritto il: gio 8 gen 2004, 0:00
Nome Cognome: Massimiliano
Slackware: 13.37 (x86_64)
Kernel: 2.6.37.6
Desktop: KDE 4.7.0 (Alien)
Località: Roma

Re: /tmp

Messaggio da navajo »

spina, ripeto la domanda, perchè non avviene la cancellazione di dir con un solo carattere ?
è cosi facile che si possa creare una dir del genere ?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: /tmp

Messaggio da conraid »

@spina

il mio non era un confronto tra find e rm, semplicemente dicevo di tener conto di questa cosa

io usavo questo
find /tmp ! -name . ! -name .. ! -name lost+found -mount -print0 | xargs -0 rm -rf

ora letto i tuoi messaggi (sempre interessanti per me riguardo bash e dintorni lo sai) ho messo

find /tmp ! -name lost+found -mount -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /tmp

Messaggio da targzeta »

Oh navajo, il tuo post non l'avevo proprio visto :). Comunque si, il problema è che il tuo comando non elimina quei file o directory che hanno un solo carattere. Ovviamente non solo non è facile che ci siano ma non ci saranno praticamente mai, la nostra è solo pignoleria :). Un utente maligno potrebbe intasare il filesystem di root (a meno che /tmp non sia su un file system diverso) con un file /tmp/.a e questo non verrebbe cancellato al riavvio.

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /tmp

Messaggio da targzeta »

@conraid
Solo non ho capito bene il perchè di '-mount'. Da find(1)
-mount Don't descend directories on other filesystems. An alternate name for -xdev, for compatibility with some other versions of find.
Cosa mi sfugge?

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: /tmp

Messaggio da conraid »

spina ha scritto:@conraid
Solo non ho capito bene il perchè di '-mount'. Da find(1)
-mount Don't descend directories on other filesystems. An alternate name for -xdev, for compatibility with some other versions of find.
Cosa mi sfugge?

Emanuele
io per prove di mount uso /mnt/tmp, ma non si sa mai che qualcuno usi /tmp direttamente
ho non ho capito niente di cosa serve quel comando?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /tmp

Messaggio da targzeta »

conraid ha scritto:...o non ho capito niente di cosa serve quel comando?
Ti riferisci all'opzione '-mount' di find? E' semplice, ad esempio io nella directory /mnt attualmento ho montata la directory Spina, ovvero /mnt/Spina. Se faccio:

Codice: Seleziona tutto

$> find /mnt
/mnt/
/mnt/dvd
...
/mnt/Spina
/mnt/Spina/tmp
/mnt/Spina/tmp/ISO
...
find scende nella directory Spina. Se invece faccio:

Codice: Seleziona tutto

$> find /mnt -mount
/mnt
/mnt/dvd
...
/mnt/Spina
/mnt/cdrom
...
come vedi find non discende la directory Spina perchè risiede in un altro file system diverso da quello di /mnt.

Però attenzione, se io faccio:

Codice: Seleziona tutto

find /mnt -mount | xargs rm -rf
ma anche usando l'opzione '-exec rm -rf {}' questo comunque mi cancella anche il contenuto di Spina, perché è una directory e il '-rf' di rm fa il suo dovere.

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: /tmp

Messaggio da Mario Vanoni »

navajo ha scritto:spina, ripeto la domanda, perchè non avviene la cancellazione di dir con un solo carattere ?
è cosi facile che si possa creare una dir del genere ?
Faccio su /
root@va2:/# find -name '\.[a-zA-Z0-9]' | less
e trovo questi files

Codice: Seleziona tutto

./root/.z
./usb00/root/.z
./usb00/va/cuasso/.z
./usb00/va/grieder/.a
./usb00/va/grieder/e/.a
./usb00/va/historical/c/.a
./usb00/va/historical/data/.a
./usb00/va/historical/lpbin/.z
./usb00/va/sissach/grieder/.a
./usb00/va/sissach/grieder/e/.a
./usb00/va/special/awk/.z
./usb00/va/src/bin/.z
./va/historical/c/.a
./va/historical/lpbin/.z
./va/historical/data/.a
./va/sissach/grieder/e/.a
./va/sissach/grieder/.a
./va/cuasso/.z
./va/src/bin/.z
./va/special/awk/.z
./va/grieder/e/.a
./va/grieder/.a
./src/C/data/.a
./src/awk/.z
./src/old/source_code_1991_1993/newsgrps/misc.src/volume16/i099/MENU/.v
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.1
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.2
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.3
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.4
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.5
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.6
./src/old/source_code_1993_1996/newsgrps/misc.src/volume42/i078/sacdrt3.1/.7
Il nome .z sono spesso programmi miei per testare qualcosa,
ai tempi UNIX era usuale usare files .a - .z, .A - .Z o .0 - .9
per lunghe sequenze di files, meno bytes, meno spazio, allora.
Pensa che allora dichiarare char a[2+1] per .a
costava molto meno che char abcdefghijklmn[14+1] al massimo 14 segni + \0!
Guadagno in segno di prestazione con memoria di 512kB, AT&T UNIX SVR2.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: /tmp

Messaggio da conraid »

spina ha scritto: Però attenzione, se io faccio:

Codice: Seleziona tutto

find /mnt -mount | xargs rm -rf
ma anche usando l'opzione '-exec rm -rf {}' questo comunque mi cancella anche il contenuto di Spina, perché è una directory e il '-rf' di rm fa il suo dovere.
thanks

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: /tmp

Messaggio da conraid »

Mario Vanoni ha scritto: Guadagno in segno di prestazione con memoria di 512kB, AT&T UNIX SVR2.
in effetti è così, il consumo di memoria anche ai giorni nostri è importante, anche se ci sono utenti che si sono lasciati trascinare da microsoft e si lamentano se la scheda madre non riconosce 4gb quando basta poco per ottimizzare il consumo di memoria

Avatar utente
navajo
Staff
Staff
Messaggi: 3884
Iscritto il: gio 8 gen 2004, 0:00
Nome Cognome: Massimiliano
Slackware: 13.37 (x86_64)
Kernel: 2.6.37.6
Desktop: KDE 4.7.0 (Alien)
Località: Roma

Re: /tmp

Messaggio da navajo »

Hai ragione Conraid. purtroppo la maggior parte degli utenti si lamentano per lo spreco di RAM e spazio disco.
Figurati che oramai un pc non è un vero pc se non ha almeno 4gb di RAM e almeno un disco rigido da 1TB e vanno poi in cerca di programmi per ottimazzare RAM e spazio.
Uno spreco quando basterebbe veramente poco, come dimostrato, per ottimizzare un computer.

Avatar utente
mohaa
Linux 1.x
Linux 1.x
Messaggi: 181
Iscritto il: mar 4 mar 2008, 8:52
Slackware: 12.1
Kernel: 3
Desktop: Gnome2
Distribuzione: Gentoo
Località: Francia

Re: /tmp

Messaggio da mohaa »

johnpad ha scritto:rm -r * ogni volta che vuoi
That command is blacklisted in the forums :oops: </kidding>
Teh internet is full of nice documentation on Filesystem Hierarchy Standards (fhs) that tells:
- what is /tmp ?
- why do I need /tmp for ?
- when and how do I remove the stuff in it ?
http://www.pathname.com/fhs/2.2/fhs-3.15.html
If you want more on FHS http://www.pathname.com/fhs/pub/fhs-2.3.pdf :thumbright:

Rispondi