Estoy ejecutando ubuntu 11.10 en una máquina virtual (VirtualBox) para obtener más información sobre el desarrollo en Linux. Estoy usando un repositorio git para guardar mi trabajo y he escrito un script para agrupar mi trabajo y guardarlo en la carpeta compartida para usar mientras la máquina virtual no se está ejecutando.
Me gustaría ejecutar este script automáticamente antes de apagarlo para que mi trabajo esté siempre disponible si el vm está apagado (actualmente tengo que ejecutar el script manualmente).
No sé si el advenedizo es la mejor manera de lograr esto, pero esta es la configuración que escribí como prueba:
description "test script to run at shutdown"
start on runlevel [056]
task
script
touch /media/sf_LinuxEducation/start
sleep 15
touch /media/sf_LinuxEducation/start-long
end script
pre-start script
touch /media/sf_LinuxEducation/pre-start
sleep 15
touch /media/sf_LinuxEducation/pre-start-long
end script
post-start script
touch /media/sf_LinuxEducation/post-start
sleep 15
touch /media/sf_LinuxEducation/post-start-long
end script
pre-stop script
touch /media/sf_LinuxEducation/pre-stop
sleep 15
touch /media/sf_LinuxEducation/pre-stop-long
end script
post-stop script
touch /media/sf_LinuxEducation/post-stop
sleep 15
touch /media/sf_LinuxEducation/post-stop-long
end script
El resultado es que solo se logra un toque (el primer toque en pre-inicio). ¿Qué necesito cambiar para ver uno de los toques después del sueño para trabajar? ¿O hay una manera más fácil de lograr esto?
Gracias por adelantado.
test.conf
es solo un nombre de archivo aleatorio. Podrías usarlo con la misma facilidadwhatEverYouWant.conf
. Su comentario también muestra que no leyó el "Libro de cocina" mencionado en la respuesta. Si mira en la sección 4.2, el archivo de configuración del trabajo se explica más detalladamente.Creo que esto no se puede hacer a través de advenedizo , como el /etc/init.d/sendsigs guión, que se invoca por el recién llegado al detener / reiniciar, mata a todos los procesos (
killall5 -9
) dentro de 10 segundos, e incluso si eso no tiene éxito, va para desmontar todo y apagarlo.La mejor manera sería utilizar los guiones de estilo oxidado /etc/init.d .
Ejemplo: /etc/init.d/shutdown_job
Luego active el script
Esto colocará la secuencia de comandos antes que la secuencia de comandos de envío en los niveles de ejecución 0 a 6 (apagado, reinicio). Este script de muestra registrará la fecha, luego dormirá durante 20 segundos y luego volverá a registrar la fecha en /root/s.log ).
Más información:
man update-rc.d
fuente
touch /media/sf_LinuxEducation/start
ytouch /media/sf_LinuxEducation/start-long
justo al lado de los comandos de la fecha. Se registran las fechas, pero no se tocan los toques. Esto me hace preguntarme si esa unidad está desmontada en el momento en que se ejecuta el script. Creo que puede tener algo que ver con el argumento NN, aunque no estoy realmente seguro de cómo funciona este argumento (la página del manual lo explica de una manera muy alucinante). ¿Cómo sabe qué número (o par de números) debe establecerse en este argumento?/etc/rc6.d
directorio. Por lo tanto, el script de apagado 19 debería haberse ejecutado antes de realizar cualquier desmontaje (> 31). Pero, ¿por qué no probar su hipótesis y tocar un archivo en su/root
lugar?/etc/rc6.d
revela que las carpetas compartidas se están montando / desmontando con elK70vboxadd
script. ¿Cambiar el argumento NN (para mi script) a 71 hará que mi script se ejecute antes de desmontar las carpetas compartidas de VB? Lo intentaré más tarde hoy.touch /root/start
antes delsleep 20
comando y no se creó ningún archivo. Ni siquiera sé por dónde empezar a averiguar por qué. Las fechas se agregan felizmente al/root/s.log
archivo ¿por qué no puedo tocar un archivo?