fix(browser): guards chromium-por-udd dejan de auto-matchear el propio grep
Bug descubierto al ejecutar el reset real: los guards y los kills usaban 'pgrep -af [c]hromium | grep -F <udd>'. Como la ruta del user-data-dir contiene la cadena 'chromium' (~/.config/chromium-cdp), el propio proceso grep/ugrep —cuyo cmdline incluye <udd>— era capturado por pgrep, dando un falso positivo perpetuo: el guard creía siempre que había un chromium abierto y delete/restore abortaban con exit 2, y el lazo de cierre nunca convergía. Fix en delete_chrome_profile, restore_chrome_bookmarks, create_chrome_profile y el pipeline reset_chrome_profiles: enumerar por PID con 'pgrep -x chromium' (comm exactamente 'chromium', nunca grep/pgrep/bash) y leer /proc/PID/cmdline para comprobar el udd. Validado: reset destructivo real de los 4 perfiles completó OK, cada perfil quedó con solo uBlock + web_proxy y los bookmarks restaurados.
This commit is contained in:
@@ -204,18 +204,23 @@ EOF
|
||||
# este propio script porque filtramos por '[c]hromium').
|
||||
systemctl --user kill -s SIGKILL "$_unit" 2>/dev/null || true
|
||||
systemctl --user stop "$_unit" 2>/dev/null || true
|
||||
local _wait=0 _pids
|
||||
# Matar por PID los procesos cuyo comm es exactamente "chromium" (pgrep -x) y cuyo cmdline
|
||||
# contiene la ruta del udd. Usamos pgrep -x para NO auto-matchear grep/pgrep: el path del udd
|
||||
# contiene la cadena "chromium" (~/.config/chromium-cdp).
|
||||
local _wait=0 _p _pids
|
||||
while :; do
|
||||
_pids=$(pgrep -af '[c]hromium' 2>/dev/null | grep -F -- "${_udd}" | awk '{print $1}')
|
||||
[[ -z "$_pids" ]] && break
|
||||
_pids=""
|
||||
for _p in $(pgrep -x chromium 2>/dev/null); do
|
||||
tr '\0' ' ' < "/proc/$_p/cmdline" 2>/dev/null | grep -qF -- "$_udd" && _pids="$_pids $_p"
|
||||
done
|
||||
[[ -z "${_pids// }" ]] && break
|
||||
# shellcheck disable=SC2086
|
||||
kill -TERM $_pids 2>/dev/null || true
|
||||
sleep 0.5
|
||||
(( _wait++ )) || true
|
||||
if [[ $_wait -ge 20 ]]; then
|
||||
_pids=$(pgrep -af '[c]hromium' 2>/dev/null | grep -F -- "${_udd}" | awk '{print $1}')
|
||||
# shellcheck disable=SC2086
|
||||
[[ -n "$_pids" ]] && kill -9 $_pids 2>/dev/null || true
|
||||
kill -9 $_pids 2>/dev/null || true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user