Cuando ejecuto un script Bash, ¿cómo puedo asegurarme de que el mismo script no se esté ejecutando?
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
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.