Как запустить программу в контейнере как службу с помощью systemd-nspawn, systemd-run?

Как запустить программу прослушивания (в частности, unoconv как слушатель) внутри контейнера с помощью systemd-nspawn , чтобы он мог работать в фоновом режиме (без консоли) и быть достигнут другими процессами? Например, в идеальном мире это было бы так просто:

 # something like this to start the container and program in background systemd-nspawn -D <container path> --background <unoconv --listener> # something like this to connect to container and execute command systemd-run --machine <machine name> <unoconv -f pdf file.txt> 

Самое длинное, что я до сих пор использую, это руководство , которое запускает контейнер в фоновом режиме с помощью machinectl . Однако sudo systemd-run --machine <machine name> ls завершается с ошибкой:

 Failed to create bus connection: Permission denied. 

Мой вопрос в два раза. Один, вы можете решить эту ошибку? Или два (желательно) вы можете дать мне более простой способ начать и подключиться к контейнеру и запустить команды?

(Я запускаю Ubuntu Xenial на защищенной машине без доступа в Интернет)

One Solution collect form web for “Как запустить программу в контейнере как службу с помощью systemd-nspawn, systemd-run?”

Я думаю, это зависит от того, как часто вы хотите запускать контейнер и когда.

Если это то, что вы хотите запустить, как только Ubuntu загружается, каждый раз, когда компьютер запускается, я бы рекомендовал попробовать настройки Startup Applications . Вы можете добавить что-либо, что функционирует как команда терминала, как процесс запуска приложения. Кроме того, вы можете собрать скрипт, а затем запустить сценарий в качестве процесса запуска, что даст вам более тонкий контроль. (Имейте в виду, что элементы в списке «Запуск приложений» выполняются в алфавитном порядке по полю «Имя», поэтому, если порядок выполнения важен, укажите его соответственно или просто создайте сценарий запуска и сделайте это единственным вызовом .)

Если вы хотите запустить программу с конкретным временем повторения / датой, я бы рекомендовал собрать задание cron, чтобы сделать то же самое.

Если вы хотите запустить его по требованию … не уверен в этом. Я не слишком хорошо знаком с systemd-nspawn; возможно эта статья или эта статья поможет.

На вопрос 1, я в тупике. Может быть, Typo в названии машины? Несоответствие между разрешениями контейнера ОС и вариантами проверки подлинности с помощью systemd-run? Вы можете попробовать sshd или контейнер докера, если ничего не работает.

Конечно, если вы на самом деле печатаете его как « --machine <machine name> », изменение его на « --machine=<machine name> » может просто исправить. :П

  • Круговая зависимость в обновлении версии Ubuntu
  • Настройка общего IP-адреса в контейнере LXC
  • redhat vs debian / ubuntu системная архитектура (& not deb vs rpm)?
  • Не удалось подключиться к серверу через PXE
  • Что именно делает logrotate для файлов журнала Apache? (apache 2.4 - ubuntu 14.04)
  • Широковещательный порт для других компьютеров после обратного туннелирования SSH
  • Zenity отказывается работать в фоновом режиме
  • Способы обновления Ubuntu (debian-based distros) в автономном режиме
  • Пользователь Ubuntu исчез из машины
  • Создание зашифрованного раздела на существующем диске с одним основным разделом при сохранении данных
  • Как изменить thisName @ HostName ~ $
  • Установка загрузчика ядра EFI в ядре 3.2?
  • Linux и Unix - лучшая ОС в мире.