Me está costando mucho intentar ejecutar el siguiente comando en segundo plano:
find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \;
Intenté agregar nohup
al principio sin suerte. También intenté agregar &
al final pero no tuve suerte. ¿Tienes alguna sugerencia?
Respuesta1
Por el problema, ¿parece que quieres cerrar la salida del script? Prueba esto:
nohup find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \; 0<&- >&- 2>&- &
Posible duplicado y más información verhttps://stackoverflow.com/a/10908325/9008720
Puede resultar útil crear un script para hacer este trabajo, como:
#!/bin/sh
nohup "$@" 0<&- >&- 2>&- &
Llamémoslo o
, así que la próxima vez simplemente ejecute o some command script
para some command script
ejecutar en segundo plano.
EDITAR:
Recientemente descubrí que usarlo >&- 2>&-
con xsel
o mpv
causa algunos problemas, por lo que >/dev/null 2>&1
podría ser una mejor opción. Cuando se usa >&-
o 2>&-
con un script de shell que contiene xsel -ib
, xsel -ib
no tiene ningún efecto, pero xclip
no tiene este problema. Además, >&- 2>&-
no cierra completamente mpv
la salida, pero sí la >/dev/null 2>&1
cierra por completo mpv
. No estoy seguro de la razón detrás de esos problemas. Creo que tal vez algunos programas simplemente no funcionen bien con stdout o stderr cerrados.