Выполните следующие шаги:
/etc/systemd/user
. Выполните mv /etc/systemd/system/Testing1.service /etc/systemd/user/
для этого. systemctl --user start Testing1.service
из своей учетной записи пользователя (, а не root ), чтобы запустить службу. Пояснениеsystemd имеет два режима работы: системный режим и пользовательский режим . Системный режим запускается до входа пользователя в свою сессию, поэтому графической сессии в этот момент нет. FreeFileSync и ReadTimeSync требуется доступ к графическому X11 дисплею, поэтому они не могут работать через системный режим . В пользовательском режиме , systemd знает о пользовательском графическом сеансе и использует его(только в том случае, оболочка, выполняющая команду, принадлежит пользователю и его графическому окружению ). Более подробную информацию можно найти в ArchWiki или на StackOverflow .
Вы можете сделать это с помощью while
, почему бы и нет? Это должно работать:
while read suffix; do cat freq_"${suffix}"; done < list > freq_all; done
Кроме того, вы можете сгенерировать команду с помощью printf
и запустить ее вручную:
$ echo "cat $(printf 'freq_%s ' $(cat list)) > freq_out"
cat freq_003137F freq_002980F freq_002993F > freq_out
Или просто выполнить его напрямую:
cat $(printf 'freq_%s ' $(cat list)) > freq_out
Если вы собираетесь использовать xargs, обычно вы хотите воспользоваться его способностью помещать более 1 аргумента в командную строку одного процесса.(Запуск одного cat
цикла, перебирающего свои аргументы, более эффективен, чем запуск отдельного cat
процесса для каждого файла, учитывая дополнительные затраты на запуск процесса ).
xargs '-I{}' cat freq_'{}'
, к сожалению, подразумевает-x
-L 1
и не позволяет переопределить его обратно на выполнение нескольких аргументов для каждой команды.
Вместо этого мы можем использовать sed
для подстановки. Это может быть хорошо, если у вас очень большой список, который может быть слишком большим для замены команды bash -на printf в ответе @terdon. xargs умеет группировать аргументы в куски текста размером до 128 КБ (по умолчанию ).
sed 's/^/freq_/' list | xargs -d'\n' cat > freq_out
s/^/foo/
добавляет материал в начало строки. Шаблон соответствует 0 ширине в начале каждой строки.