如何在背景執行這個簡單的命令

如何在背景執行這個簡單的命令

我很難嘗試在後台運行以下命令:

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 scriptmakesome command script在後台運行即可。

編輯:

我最近發現>&- 2>&-xselor一起使用mpv會導致一些問題,所以>/dev/null 2>&1可能是更好的選擇。使用>&-2>&-與包含 , 的 shell 腳本一起使用時xsel -ibxsel -ib沒有任何效果,但xclip不會出現此問題。另外,>&- 2>&-不完全關閉mpv輸出,而>/dev/null 2>&1完全關閉mpv輸出。我不確定這些問題背後的原因。我想也許有些程式在 stdout 或 stderr 關閉的情況下無法正常運作。

相關內容