버전 제어하에 시작 스크립트가 있는 CentOS 7에 사용자 정의 시스템 서비스가 있습니다 /srv/etc/systemd/website.service
.
[Unit]
Description=website
After=syslog.target network.target
[Service]
Type=forking
User=website
ExecStart=/opt/perl5/perls/perl-5.20.2/bin/hypnotoad /var/www/domains/<domain>/script/site.pl
ExecStop=/opt/perl5/perls/perl-5.20.2/bin/hypnotoad --stop /var/www/domains/<domain>/script/site.pl
[Install]
WantedBy=multi-user.target
실행하면 systemctl enable /srv/etc/systemd/website.service
심볼릭 링크가 제대로 생성되고 실행될 수 있으며 systemctl start website
서비스가 시작되지만 [Install] 섹션이 누락되었다고 불평하는데 이는 분명히 잘못된 것입니다.
$ sudo systemctl enable /srv/etc/systemd/website.service
Created symlink from /etc/systemd/system/website.service to /srv/etc/systemd/website.service.
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
다시 시작한 후 서비스가 시작되지 않고 systemctl start website
반환되었습니다 Failed to start website.service: Unit not found
. 을 실행하면 systemctl daemon-reload
명령 start
이 다시 작동합니다.
그러나 만약 내가복사파일을 /etc/systemd/system에 넣고 실행하면 systemctl enable website
모든 것이 예상대로 작동했으며 재부팅 후 즉시 서비스가 시작되었습니다.
내가 원하는 것을 실제로 수행하는 것이 가능합니까, 아니면 변경 사항을 적용할 때 Git 저장소에서 시스템 스크립트를 수동으로 복사해야 한다는 것을 기억해야 합니까?
답변1
서비스 시작 시 심볼릭 링크가 참조하는 드라이브가 마운트되어 있는지 확인해야 합니다.