Es fällt mir wirklich schwer, den folgenden Befehl im Hintergrund auszuführen:
find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \;
nohup
Ich habe versucht, es am Anfang hinzuzufügen, aber ohne Erfolg. Ich habe es auch versucht &
, es am Ende hinzuzufügen, aber ohne Erfolg. Haben Sie einen Vorschlag?
Antwort1
Aus dem Problem geht hervor, dass Sie die Ausgabe des Skripts schließen möchten. Versuchen Sie Folgendes:
nohup find /dir -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 1 \; 0<&- >&- 2>&- &
Mögliche Duplikate und weitere Informationen finden Sie unterhttps://stackoverflow.com/a/10908325/9008720
Es kann praktisch sein, hierfür ein Skript zu erstellen, etwa:
#!/bin/sh
nohup "$@" 0<&- >&- 2>&- &
Nennen wir es o
, damit es beim nächsten Mal einfach im Hintergrund ausgeführt o some command script
wird .some command script
BEARBEITEN:
Ich habe kürzlich festgestellt, dass die Verwendung >&- 2>&-
mit xsel
oder mpv
einige Probleme verursacht, also >/dev/null 2>&1
ist es vielleicht die bessere Wahl. Wenn >&-
oder 2>&-
mit einem Shell-Skript verwendet wird, das enthält xsel -ib
, xsel -ib
hat es keine Auswirkung, xclip
hat aber dieses Problem nicht. Außerdem >&- 2>&-
schließt es mpv
die Ausgabe nicht vollständig, während es die Ausgabe >/dev/null 2>&1
vollständig schließt mpv
. Ich bin mir nicht sicher, was der Grund für diese Probleme ist. Ich denke, vielleicht funktionieren manche Programme einfach nicht gut, wenn stdout oder stderr geschlossen sind.