Лучше всего ввести каждую из ваших команд в терминал, чтобы проверить, что будет делать команда. В вашем случае, я думаю, вы хотите использовать следующее:
shutdown now
Примерно так:
gpus=2
find files |
parallel -j +$gpus '{= $_ = slot() > '$gpus' ? "foo" : "bar" =}' {}
Менее страшно:
parallel -j +$gpus '{=
if(slot() > '$gpus') {
$_ = "foo"
} else {
$_ = "bar"
}
=}' {}
-j +$gpus
Запуск одного задания на поток ЦП + $gpus
{=... =}
Используйте код Perl для установки $ _.
slot()
Номер слота задания (1..cpu _threads+$gpus ).
#!/usr/bin/env bash
values=( a b c d e f g h i j k l m n o p q r s t u v w x y z)
start=0
function foo()
{
sleep 4
echo "foo ${1}"
}
function bar()
{
sleep 4
echo "bar ${1}"
}
function baz()
{
sleep 4
echo "baz ${1}"
}
while [ ${#values[@]} -gt 0 ]
do
if [ ${#values[@]} -gt 0 ]
then
foo "${values[0]}" &
values=("${values[@]:1}")
fi
if [ ${#values[@]} -gt 0 ]
then
bar "${values[0]}" &
values=("${values[@]:1}")
fi
if [ ${#values[@]} -gt 0 ]
then
baz "${values[0]}" &
values=("${values[@]:1}")
fi
wait
done
значения values=( a b c d e f g h i j k l m n o p q r s t u v w x y z)
можно заменить наvalues=$(ls -1)