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.
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.
#!/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 ; }
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
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
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:
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
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
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.
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.
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
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.