Estou tendo muita dificuldade em tentar executar o comando abaixo em segundo plano:
find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \;
Tentei adicionar nohup
no início sem sorte. Também tentei adicionar &
no final, mas sem sorte. Você tem alguma sugestão?
Responder1
Pelo problema, parece que você deseja fechar a saída do script? Experimente isto:
nohup find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \; 0<&- >&- 2>&- &
Possível duplicata e mais informações consultehttps://stackoverflow.com/a/10908325/9008720
Pode ser útil criar um script para fazer este trabalho, como:
#!/bin/sh
nohup "$@" 0<&- >&- 2>&- &
Vamos chamá-lo de o
, então da próxima vez você apenas executa o some command script
para some command script
executar em segundo plano.
EDITAR:
Recentemente descobri que usar >&- 2>&-
with xsel
ou mpv
causa alguns problemas, então >/dev/null 2>&1
pode ser uma escolha melhor. Ao usar >&-
ou 2>&-
com um script de shell que contém xsel -ib
, xsel -ib
não tem efeito, mas xclip
não tem esse problema. Além disso, >&- 2>&-
não fecha completamente mpv
a saída, mas >/dev/null 2>&1
fecha completamente mpv
a saída. Não tenho certeza da razão por trás desses problemas. Acho que talvez alguns programas simplesmente não funcionem bem com stdout ou stderr fechados.