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>
지금까지 내가 얻은 가장 먼 것은컨테이너를 실행하기 위해 systemd-nspawn 길들이기이는 컨테이너가 백그라운드에서 실행되도록 합니다 machinectl
. 하지만,
sudo systemd-run --machine <machine name> ls
오류로 인해 실패합니다:
Failed to create bus connection: Permission denied.
내 질문은 두 가지입니다. 1. 이 오류를 고칠 수 있나요? 아니면 두 가지(바람직하게는) 컨테이너를 시작하고 연결하고 명령을 실행하는 더 쉬운 방법을 알려주실 수 있나요?
(저는 인터넷에 접속할 수 없는 보안 시스템에서 Ubuntu Xenial을 실행하고 있습니다)
답변1
컨테이너를 얼마나 자주, 언제 실행하려는지에 달려 있다고 생각합니다.
Ubuntu가 로드된 후 컴퓨터가 부팅될 때마다 이 프로그램이 즉시 실행되도록 하려면 다음을 시도해 볼 것을 권장합니다.신청 시작설정. "응용 프로그램" 프로세스를 시작할 때 터미널 명령 역할을 하는 기능을 추가할 수 있습니다. 또는 스크립트를 함께 구성하고 스크립트를 시작 프로세스로 실행하면 더 효과적으로 제어할 수 있습니다. (응용 프로그램 실행 목록의 항목은알파벳 순서이름 필드로 실행 순서가 중요한 경우 그에 따라 이름을 지정하거나시작 스크립트를 생성하고 유일한 호출로 설정.)
특정 반복 시간/날짜에 프로그램을 실행하려면 cron 작업을 결합하여 동일한 작업을 수행하는 것이 좋습니다.
요청 시 실행하고 싶다면...확실하지 않습니다. 나는 systemd-nspawn에 익숙하지 않습니다.아마도 이 글또는이 기사도움이 될거야.
질문 1에 관해서는 혼란 스럽습니다. 기계 이름의 철자가 틀린 것은 아닐까요? 컨테이너 OS 권한이 systemd-run 인증 옵션과 일치하지 않습니까?sshd를 사용해 볼 수 있습니다또는도커 컨테이너다른 방법이 없다면.
물론 실제로 " --machine <machine name>
"를 입력한 경우 " "로 변경하면 --machine=<machine name>
문제가 해결될 수도 있습니다. :피