저는 systemd를 처음 사용합니다. 무인 키오스크 애플리케이션을 효과적으로 시작할 수 있도록 systemd를 설정하려고 합니다.
- Postgresql이 로드된 후에만 시작됩니다.
- 단일 기명 사용자가 로그인한 후부터
- 죽으면 자동으로 다시 시작됩니다.
또한 이 설정은 사용자 로그인을 요청하거나 다른 상호 작용을 요구하지 않고 즉시 시작되어야 하지만 이는 현재 질문의 범위를 벗어나며 해당 부분은 이미 완료했다고 생각합니다.
저는 Debian 9 호스트에서 실행되는 Debian 9 qemu/kvm 게스트에서 시스템 부분을 개발 중입니다. systemd 구성이 예상대로 작동하는 게스트가 있습니다. 모든 요구 사항을 올바르게 문서화했는지 확인하기 위해 또 다른 동일한 게스트를 만들고 필요한 도구 등을 단계별로 설치했습니다.
두 번째 게스트에서는 내 애플리케이션이 직접 실행되면 올바르게 실행되지만 systemd는 이에 만족하지 않습니다. .service 및 .target 파일은 각 시스템에서 동일하고(작업 파일은 새 시스템에 복사됨) 동일한 위치에 있으며 동일한 권한을 갖습니다.
안내를 좀 받았는데이 블로그 게시물
내 /etc/systemd/system/MyApp.target
모습은 다음과 같습니다.
[Unit]
Description=MyApp Target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
내 /etc/systemd/system/MyApp.target.wants/MyApp.service
파일은 다음과 같습니다.
[Unit]
Description=MyApp
Requires=postgresql.service
After=postgresql.service
[Service]
Type=simple
Restart=always
RestartSec=20
User=myuser
WorkingDirectory=/home/myuser/MyApp
ExecStart=/home/myuser/MyApp/MyApp.exe
#StandardOutput=journal+console
StandardOutput=console
#CapabilityBoundingSet=
[Install]
WantedBy=MyApp.target
systemctl 명령을 실행할 때 나타나는 오류 메시지는 다음과 같습니다.
~$sudo systemctl enable MyApp
장치를 활성화할 수 없습니다: 파일 MyApp.service: 해당 파일 또는 디렉터리가 없습니다.
~$sudo systemctl status MyApp
MyApp.service 장치를 찾을 수 없습니다.
~$sudo systemd-analyze verify MyApp
dev-disk-by\x2duuid-d732e7b2\x2ddb0a\x2d42a3\x2d8f66\x2db392c05f9cbb.swap: 비활성 장치에 바인딩된 장치 dev-disk-by\x2duuid-d732e7b2\x2ddb0a\x2d42a3\x2d8f66\x2db392 c 05f9cbb.장비. 너도 그만해. 파일 이름 MyApp을 준비할 수 없습니다: 잘못된 인수*
설정하는 동안 필요한 파일을 게스트에 복사할 수 있도록 호스트와 게스트 간에 공유되는 디렉터리를 만들었습니다. 나는 systemd가 분명히 파일 시스템을 마운트 해제하는 데 문제가 있거나 있었다는 것을 알고 있으며 내 질문은 그것과 관련이 있을 수 있습니다(https://github.com/systemd/systemd/issues/9869etc) 그래서 /etc/fstab을 살펴보았습니다.
작동하지 않는 VM의 fstab에는 작업 복사본에 없는 추가 항목이 있으며 해당 항목은 systemd-analyze 오류 메시지의 UUID와 일치합니다. 항목에 주석을 달았습니다. 이로 인해 다른 항목이 예상대로 작동하는 것을 방지할 수는 없지만 시스템 동작은 변경되지 않습니다. 영향을 미칠 수 있다고 생각되는 변경 작업을 수행할 때 항상 "systemctl daemon-reload", 재부팅 등을 수행합니다. 실패한 게스트에서 공유 파일 시스템을 완전히 제거하려고 시도하지 않았습니다. 작업 게스트에서 공유 파일 시스템이 존재하고 제대로 실행됩니다.
작동하지 않는 가상 머신의 fstab은 다음과 같습니다.
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/vda1 during installation
UUID=cbb7f406-f4d6-4617-af14-33465513a57b / ext4 errors=remount-ro 0 1
# swap was on /dev/vda5 during installation
UUID=d732e7b2-db0a-42a3-8f66-b392c05f9cbb none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
나는 정확히 systemd가 만족하지 못하는 것이 무엇인지, 내가 찾아야 할 것이 무엇인지, 무엇을 바꿔야 하는지 모릅니다. 이 구성은 한 시스템에서는 완벽하게 작동하지만 다른 시스템에서는 작동하지 않습니다. 다른 시스템에서는 분명히 동일하고 동일한 시스템 파일을 사용합니다.
분명히 있기 때문에무엇두 시스템 사이에는 차이점이 있습니다. 누군가 이를 추적하는 데 도움이 되도록 가상 머신과 "비교"하는 방법을 제안할 수 있을까요?