linux - mac - musicbrainz picard español
Evita temporalmente que se apague Linux (6)
No puedo evitar sentir que no estás asimilando la metáfora de Unix, y lo que estás pidiendo es un desafío.
Si un usuario se ejecuta como root, no hay nada que pueda hacer root para evitar que root cierre el sistema. Puedes hacer cosas como ocultar la interfaz de usuario de apagado, pero eso no está logrando nada.
No puedo decir si estás hablando de esto en el contexto de una máquina multiusuario, o de una máquina que se usa como "PC de escritorio" con un solo usuario sentado en una consola. Si es el primero, sus usuarios realmente no deberían tener acceso a la máquina con credenciales que pueden apagar el sistema para las actividades cotidianas. Si es el último, recomiendo educar a los usuarios para que (a) verifiquen si el script se está ejecutando, o (b) usa un script de apagado en particular que designe que verifique el proceso del script y se rehúse a cerrarlo hasta que desaparezca.
Tengo un script de respaldo que se ejecuta diariamente en segundo plano en mi computadora Linux (Fedora 9). Si la computadora se apaga mientras la copia de seguridad está en curso, la copia de seguridad puede dañarse, por lo que me gustaría escribir una pequeña secuencia de comandos que deshabilite temporalmente la capacidad del usuario para reiniciar o apagar la computadora.
No es necesario que la secuencia de comandos no se pueda eludir, solo para que los usuarios del sistema sepan que la copia de seguridad está en progreso y que no deben cerrarse. He visto el método Inhibit en la especificación de administración de energía de escritorio gratuita de DBus: http://people.freedesktop.org/~hughsient/temp/power-management-spec-0.3.html pero eso solo evita las paradas si el sistema está inactivo. no explícitamente a petición de los usuarios.
¿Hay alguna manera fácil de hacer esto en C / Python / Perl o bash?
Actualización: para aclarar la pregunta anterior, es una máquina con múltiples usuarios, pero que la usa secuencialmente a través del teclado / mouse conectado. No estoy buscando un sistema que me impida "piratearlo" como root. Pero una secuencia de comandos que me recordaría (u otro usuario) que la copia de seguridad todavía se está ejecutando cuando elijo cerrar desde los menús de Gnome / GDM
Otra solución para comenzar: durante el cierre, el sistema ejecuta los scripts en /etc/init.d/ (o realmente, un script en /etc/rc.*/, pero se entiende la idea). Podría crear un secuencia de comandos en ese directorio que verifica el estado de su copia de seguridad, y los retrasos se apagan hasta que la copia de seguridad finaliza. O mejor aún, interrumpe con gracia tu copia de seguridad.
El superusuario podría solucionar este script (con / sbin / halt, por ejemplo), pero no se puede evitar que el superusuario haga cualquier cosa si su mente está realmente decidida a hacerlo.
Más una solución de iniciación que una solución completa, puede alias el comando de apagado y luego usar un script como
#!/bin/sh
ps -ef|grep backupprocess|grep -v grep > /dev/null
if [ "$?" -eq 0 ]; then
echo Backup in progress: aborted shutdown
exit 0
else
echo Backup not in progress: shutting down
shutdown-alias -h now
fi
guardado en la ruta del usuario como apagado. Espero que haya alguna variación dependiendo de cómo los usuarios invocan el apagado (iconos del administrador de Windows / línea de comandos) y quizás también para diferentes distribuciones.
Si los usuarios van a estar cerrando a través de GNOME / KDE, simplemente impídelos de hacerlo.
http://live.gnome.org/GnomePowerManager/FAQ#head-1cf52551bcec3107d7bae8c332fd292ec2261760
Hay protector de molly para evitar las sombras accidentales, reinicios, etc. hasta que se cumplan todas las condiciones requeridas: las condiciones se pueden autodefinir.
Como ya se sugirió, también puede realizar operaciones de copia de seguridad como parte del proceso de cierre. Ver por ejemplo esta página .
Pero una secuencia de comandos que me recordaría (u otro usuario) que la copia de seguridad todavía se está ejecutando cuando elijo cerrar desde los menús de Gnome / GDM
Uno puede usar polkit para bloquear completamente el apagado / reinicio, pero no pude encontrar el método que proporcionaría una respuesta clara por qué está bloqueado.
Agregar las siguientes líneas como /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla
funciona:
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
Todavía ve un cuadro de diálogo de confirmación, pero no hay botones para confirmar. Se ve feo, pero funciona;)
Desafortunadamente, esto se aplica a todos los usuarios, no solo a la sesión lightdm, por lo que debe agregar una segunda regla para incluirla en la lista blanca si lo desea.
Tenga en cuenta que este método bloquea únicamente los comandos de reinicio / etc emitidos desde la GUI. Para bloquear comandos de reinicio / etc desde la línea de comandos, se puede usar molly-guard, como se explica en https://askubuntu.com/questions/17187/disabling-shutdown-command-for-all-users-even-root-consequences/17255 # 17255