Cuando ejecuto un script Bash, ¿cómo puedo asegurarme de que el mismo script no se esté ejecutando?

Nov 06 2020

He visto sugerencias de cómo puedo terminar mi script si ya se está ejecutando otra instancia. Mi problema es al revés: me gustaría encontrar una manera de eliminar todas las demás instancias del mismo script, si las hubiera, y continuar ejecutando mi script. ¿Hay alguna manera de hacerlo?

Respuestas

3 Chota Nov 06 2020 at 12:24

Puede hacer algo como ... PIDS=$(pidof -x nameofyourscript)para obtener todos los pids, si los hay, incluidos los scripts. Entonces puedes simplementekill $PIDS

EDITAR: Como lo anterior también mataría su script actual, luego revise la respuesta, agregando una opción -ocomo esta: Eso haría que omita el pid de su script actual.PIDS=$(pidof -x -o $$ nameofyourscript)-o $$

Y mejor aún, en lugar de codificar el nombre de su script, simplemente obtenga su propio nombre de $0:

kill $(pidof -x -o $$ $0)

Así que coloque eso cerca del comienzo de su secuencia de comandos, tal vez con un 2>/dev/null, en caso de que no encuentre otras instancias y el problema esté resuelto.