Мне очень трудно выполнить следующую команду в фоновом режиме:
find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \;
Я пробовал добавлять nohup
в начале, но безуспешно. Также пробовал добавлять &
в конце, но безуспешно. Есть ли у вас какие-либо предложения?
решение1
Из проблемы следует, что вы хотите закрыть вывод скрипта? Попробуйте это:
nohup find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \; 0<&- >&- 2>&- &
Возможный дубликат и более подробную информацию см.https://stackoverflow.com/a/10908325/9008720
Может быть полезно создать скрипт, выполняющий эту работу, например:
#!/bin/sh
nohup "$@" 0<&- >&- 2>&- &
Давайте назовем его o
, так что в следующий раз вы просто запустите его, o some command script
чтобы some command script
он работал в фоновом режиме.
РЕДАКТИРОВАТЬ:
Недавно я обнаружил, что использование >&- 2>&-
с xsel
или mpv
вызывает некоторые проблемы, поэтому >/dev/null 2>&1
может быть лучшим выбором. При использовании >&-
или 2>&-
со скриптом оболочки, содержащим xsel -ib
, xsel -ib
не имеет никакого эффекта, но xclip
не имеет этой проблемы. Кроме того, >&- 2>&-
не полностью закрывает mpv
вывод, хотя >/dev/null 2>&1
полностью закрывает mpv
вывод. Я не уверен, в чем причина этих проблем. Я думаю, что, возможно, некоторые программы просто плохо работают с закрытыми stdout или stderr.