Regularmente me olvido de agregar algo && shutdown -h now
a un proceso de larga duración. ¿Hay alguna forma de agregar un shutdown -h now
comando?después¿Se invocó el primer comando? No se pretende interrumpir el proceso en curso. ¿Quizás sea posible observar el PID?
Respuesta1
No es necesario ejecutar ps repetidamente para enumerar todos los procesos y revisar la salida. Ponga en segundo plano el proceso con Ctrl-Z, luego ejecute
bg %1 ; wait %1 ; shutdown -h now
Si tiene otros trabajos en segundo plano ejecutándose, se le dará una especificación de trabajo diferente en lugar de [1] cuando presione Ctrl-z. Si es así, úsalo en su lugar.
Respuesta2
Hago esto todo el tiempo.
- Inicie el proceso.
- Date cuenta de que olvidé hacer mi
&&
comando. - Presione Ctrl+ Zpara suspender el proceso y regresar al shell.
- Correr
fg && shutdown -h now
hacia:- Ponga en primer plano y reanude el proceso que acaba de suspender.
- Luego, una vez que finalice, ejecutará lo que usted quería ejecutar.
Alternativamente, puede realizar una encuesta como se sugiere en otras respuestas como esta:
while ps -p $PID ; do sleep 5 ; done ; shutdown -h now
Respuesta3
Podrías hacer algo como esto, que comprobará si el proceso se ejecuta cada 5 segundos y tomará las medidas adecuadas:
while true; do
if ps -ef | grep -q '[l]ong-running-process'; then
sleep 5
else
sudo poweroff
fi
done
Tenga en cuenta los corchetes en la grep
expresión. Esto es para garantizar que el grep
proceso no coincida si termina en la ps
lista. Es suficiente rodear cualquier carácter con corchetes.
Respuesta4
Cree un script de shell para ejecutar ambos procesos:
MiShellScript.txt:
#!/bin/sh
MyProcessIdLikeToStart -o options && shutdown -h now
Después de guardar esto en el directorio donde inicia el proceso dado, haga lo siguiente:
chmod +x MyShellScript.txt
Luego, cuando quieras ejecutar el comando, simplemente escribe ./MyShellScript.txt
y hará ambas cosas por ti.