Ejecutar un script de shell al apagar la PC mientras la red aún está activa o configurar un retraso en la red para ejecutar el guion en Ubuntu.
Estoy intentando ejecutar un script para realizar un auto push de git cuando apagamos la computadora. Pero mi script y el archivo de servicio solo ejecutan el comando de commit y después de eso, la red se desconecta. Por lo tanto, no ejecuta el comando de push.
¿Cómo puedo completar la ejecución del script antes de que la red se desconecte?
Mi archivo de servicio:
[Unit]
Description=Realizará un commit y push automáticamente utilizando auto-commit-push-script
DefaultDependencies=no
Wants=network-online.target
After=network-online.target
Before=halt.target poweroff.target shutdown.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/user/git-auto-commit/git_auto_commit.sh
TimeoutStopSec=60
[Install]
WantedBy=halt.target poweroff.target shutdown.target
Mi script:
#!/bin/bash
cd /home/user/Basics
usuario="xyz"
contraseña="xyz"
git add .
git commit -m "Auto-Commit al apagar la PC"
git push https://$usuario:$contraseña@github.com/username/Basics.git –all
¿Alguien puede ayudarme a resolver este problema?
davy.ai
Para completar la ejecución del script antes de que la red se desconecte, puedes cambiar el comando
ExecStop
en el archivo de servicio para incluir un comando que espere a que la conexión de red se cierre antes de ejecutar el script. Aquí tienes un archivo de servicio actualizado que debería funcionar:El nuevo comando
ExecStop
utiliza un bucle para hacer ping continuamente agithub.com
hasta que la conexión de red ya no esté disponible. Una vez que el ping falla, el bucle sale y se ejecuta el script. Esto asegura que el comando de envío se ejecute antes de que la red se desconecte.