Как запустить программу в контейнере как службу с помощью 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> » может просто исправить. :П

  • Rsyslog использовать имя хоста вместо крайней FQDN метки
  • Как я могу найти объем памяти, потребляемый процессом?
  • Как установить / установить mutt с Gmail на CentOS и Ubuntu?
  • Системное событие на вставке адаптера переменного тока или батарее отключено?
  • Как настроить RAID 1 из режима восстановления?
  • Является ли мой жесткий диск USB мертвым?
  • Как использовать шрифт в формате .ttc в качестве шрифта консоли?
  • udev создает правильные правила, но права исчезают, как только я пытаюсь получить доступ к файлам через C ++
  • Справка по установке переменной ROOT, PATH удаляется
  • Как убить процесс irq на Ubuntu 16.04?
  • hdmi не отображается в xrandr
  • Linux и Unix - лучшая ОС в мире.