我的问题可以通过使这个简单的命令起作用来总结:
nice -n 10 "ls|xargs -I% echo \"%\""
失败了:
nice: ls|xargs -I% echo "%": No such file or directory
删除引号使其有效,但我的意思是将多个引用的命令包装成一个以执行更复杂的操作,如:
ftphost="192.168.1.1"
dirinputtopush="/tmp/archivedir/"
ftpoutputdir="mydir/"
nice -n 19 ls $dirinputtopush | xargs -I% "lftp $ftphost -e \"mirror -R $dirinputtopush% $ftpoutputdirrecent ;quit\"; sleep 10"
答案 0 :(得分:2)
尝试使用nice -n 10 bash -c 'your; commands | or_complex pipelines'
作为命令。这种方式bash
是二进制文件,-c
之后的字符串包含由bash
解释的序列,因此它可以包含管道,循环等。注意正确引用。您需要这样做,因为nice
需要二进制文件,而不是shell解释的表达式。相比之下,shell内置函数(如time
(但不是/usr/bin/time
是一个单独的二进制文件)将接受shell表达式作为要执行的命令。它们可以因为它们被构建到shell中。 nice
不是,所以它需要二进制文件才能执行。
答案 1 :(得分:2)
儿童继承了良好的价值:
nice -n 10 bash -c 'ls | xargs -I% echo %'
各个命令分别很好:
nice -n 10 ls | nice -n 10 xargs -I% echo %