如何在后台运行这个简单的命令

如何在后台运行这个简单的命令

我很难尝试在后台运行以下命令:

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 关闭的情况下不能很好地工作。

相关内容