Вам необходимо исключить один процессор из общего планирования, после чего вы можете назначить ему процесс через
taskset
как вы уже выяснили. Чтобы исключить ЦП, добавьте параметр загрузки
isolcpus=N
Число (N )основано на 0 -.
Во-первых, ваш первый пример работает -что не так с этим?
Если вы действительно не хотите этого делать, попробуйте --exclude=*.{jpg,mp4}
, который будет (в некоторых оболочках )расширяться до --exclude=*.jpg --exclude=*.mp4
, но обратите внимание:
это функция оболочки , называемая расширение скобок . Это не функция rsync или правил фильтрации rsync.
Это может легко привести к путанице и «неожиданному» поведению, если вы ошибочно полагаете, что rsync будет использовать фигурные скобки сам (он не будет, и не может, и даже никогда не увидит фигурные скобки ).
Расширение выполняется до выполнения rsync. rsync видит только, например, --exclude=*.mp4
, потому что в текущем каталоге нет имени файла, соответствующего этому шаблону.
В том маловероятном случае, если есть какие-либо имена файлов, совпадающие с --exclude=*.mp4
или --exclude=*.jpg
, расширение скобок будет расширено до этих точных имен файлов без подстановочной карты -.
напр.
$ mkdir /tmp/test
$ cd /tmp/test
$ echo rsync --exclude=*.{jpg,mp4}
rsync --exclude=*.jpg --exclude=*.mp4
Пока все хорошо... но посмотрите, что происходит, когда есть имена файлов, которые на самом деле соответствуют раскрытию фигурных скобок:
$ touch -- --exclude=foo.jpg
$ touch -- --exclude=bar.mp4
$ touch -- --exclude=foobar.mp4
$ echo rsync --exclude=*.{jpg,mp4}
rsync --exclude=foo.jpg --exclude=bar.mp4 --exclude=foobar.mp4
Лучшим способом избежать ввода большого количества --exclude
параметров было бы использование массива и printf:
excludes=('*.mp4' '*.jpg')
rsync...args... $([ "${#excludes[@]}" -gt 0 ] && printf -- "--exclude='%s' " "${excludes[@]}")...more args...
Это приведет к командной строке вида:
rsync...args... --exclude='*.mp4' --exclude='*.jpg' ...more args...
Еще лучше было бы использовать подстановку массива и процесса для предоставления "файла" для --exclude-from
. например.
rsync... --exclude-from=<([ "${#excludes[@]}" -gt 0 ] && printf -- '- %s\n' "${excludes[@]}")...
--exclude={'*.jpg', '*.mp4'}
не выполняет раскрытие фигурных скобок , потому что открывающая и закрывающая фигурные скобки находятся в отдельных словах. Расширение фигурной скобки строит несколько слов из одного слова с переменной частью. Уберите пробел.
rsync … --exclude={'*.jpg','*.mp4'} …
или
rsync … --exclude='*.'{jpg,mp4} …
=
после --exclude
необходимо, потому что результатом расширения оболочки должны быть два слова --exclude=*.jpg
и --exclude=*.mp4
. Без =
расширение будет состоять из трех слов :--exclude
, *.jpg
и *.mp4
.