PDA

Visualizza la versione completa : debian: eseguire un file in spegnimento


magnet_80
16-07-2010, 23:32
ho un problema: prima che formattassi tutto, il seguente file veniva eseguito in spegnimento, ora non più.
il file si trova in etc/init.d e si chiama cancella.sh


#! /bin/sh
### BEGIN INIT INFO
# Provides: cancella
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start:
# Default-Stop:
# X-Interactive:
# Short-Description: cancella file
### END INIT INFO
shred -v -u -n10 /home/andrea/.aMule/known.met
shred -v -u -n10 /home/andrea/.aMule/known2_64.met
shred -v -u -n10 /home/andrea/.aMule/logfile
shred -v -u -n10 /home/andrea/.aMule/logfile.bak
shred -v -u -n10 /home/andrea/.thumbnails/normal/*.*
e ho creato un link in /etc/rc.0 che si chiama S00cancella (anche con la s minuscola) e che punta a /etc/init.d/cancella.sh
purtroppo, il file non viene eseguito. ho provato a rinominarlo in K00cancella (anche con k minuscola), ma non parte.
prima che rifacessi il pc, nella cartella /etc/rc.0 c'erano alcuni link a programmi che iniziavano con Sxxyyyy, ora invece ci sono solo link che iniziano con Kxxyyyyyy
come posso farlo eseguire tale file in spegnimento senza usare cron?
EDIT: eventualmente, come posso far si che la cartella /home/andrea/.thumbnails/normal/ non venga riempita delle miniature delle immagine oppure come posso spostare tale cartella in ram (ho creato la tmpfs in ram)?

sacarde
17-07-2010, 09:58
dai un'occhiata

http://guide.debianizzati.org/index.php/SysV

magnet_80
17-07-2010, 15:51
ho letto, però c'è un passaggio che mi dà da pensare, alla voce "Comportamento per ogni Runlevel ":
"Lo script /etc/init.d/rc si occupa di lanciare, in ordine numerico/alfabetico, gli script presenti in /etc/rcX.d/, partendo per quelli K* per passare a quelli S*; accetta come parametro il numero del runlevel."
1)Se il file si chiama S00cancella, non verrà mai eseguito, perchè come c'è scritto, "prima esegue i file Kxx e poi i Sxx". infatti, l'ultimo file che esegue è K10halt.
2)ho provato a rinominarlo in K00cancella, però non funziona.
idea?

sacarde
17-07-2010, 18:34
se esegui a mano funziona?



ma per spengere, usi : init 0
vero?

magnet_80
17-07-2010, 19:55
a mano funziona e per spegnersi va in init 0

edit: come segnalato, prima che rifacessi la macchina (fine maggio) funzionava, anche perchè in rc.0 oltre ai servizi che si vermavano Kxx c'erano anche altre "servizi" che partivano con Sxx; mentre ora ci sono solo servizi che si fermano, con Kxx

sacarde
17-07-2010, 21:26
noti errori in messages?



p.s.
potresti provare il sostituto di rc.local_shutdown
http://guide.debianizzati.org/index.php/SysV#rc.local_e_rc.local_shutdown

cacao74
17-07-2010, 22:00
Originariamente inviato da magnet_80
a mano funziona e per spegnersi va in init 0

hai gia' provato a mettere il percorso assoluto di "shred" ?

sacarde
17-07-2010, 22:11
potrebbe essere un problema di variabili ?

#!/bin/bash -l

esegue lo script come shell di login

magnet_80
18-07-2010, 00:24
rimetto lo script


#! /bin/sh
### BEGIN INIT INFO
# Provides: cancella.sh
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start: 0
# Default-Stop:
# X-Interactive:
# Short-Description: Run /etc/init.d/cancella.sh
### END INIT INFO
shred -v -u -n10 /home/andrea/.aMule/known.met
shred -v -u -n10 /home/andrea/.aMule/known2_64.met
shred -v -u -n10 /home/andrea/.aMule/logfile
shred -v -u -n10 /home/andrea/.aMule/logfile.bak
shred -v -u -n10 /home/andrea/.thumbnails/normal/*.*
shred -v -u -n10 /home/root/.thumbnails/normal/*.*

e questo sotto è rc.local


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
@ cacao: lo script ha già i percorsi assoluti
@ sacarde: non esiste sul mio pc nessun /etc/init.d/local
potrebbe essere un problema di "!/bin/sh", che magari vuole "!/bin/sh -e"?

sacarde
18-07-2010, 09:57
- il percorso assoluto di shred e': /bin/shred

- local lo devi fare te:
...In Debian lo stesso effetto può essere ottenuto con un singolo script, (lo chiameremo /etc/init.d/local in questo esempio) ...

- provato con ?: #!/bin/bash -l

Loading