systemctl 활성화는 systemctl start와 어떻게 다릅니까?

systemctl 활성화는 systemctl start와 어떻게 다릅니까?

저는 Arch Linux(최신, 최신) 상자를 실행하고 있으며 부팅 시 MySQL을 시작하려고 합니다. systemd 패키지를 설치하면 systemctl을 사용할 수 있으므로 다음과 같은 작업을 수행할 수 있습니다.

systemctl start mysqld.service
systemctl [stop|status|restart] mysqld.service

모두 괜찮고 수동으로 시작/중지하고 싶을 때는 훌륭하게 작동합니다. 그러나 부팅 시 시작하게 하는 경우(systemctl에서 'enable'을 사용하면 불쾌한 출력이 나타납니다):

[root@rudivarch ~]# systemctl enable mysqld.service
Failed to issue method call: No such file or directory

분명히, 다른 명령은 잘 작동하기 때문에 나는 이것 때문에 심각하게 혼란스러워서 그것을 알아내려고 노력하는 동안 많은 시간을 보냈습니다... systemctl status는 다음을 출력합니다:

[root@rudivarch ~]# systemctl status mysqld.service
mysqld.service
     Loaded: loaded (/etc/rc.d/mysqld)
     Active: inactive (dead) since Tue, 31 Jan 2012 15:32:28 +0000; 1min 25s ago
    Process: 589 ExecStop=/etc/rc.d/mysqld stop (code=exited, status=0/SUCCESS)
    Process: 257 ExecStart=/etc/rc.d/mysqld start (code=exited, status=0/SUCCESS)
    CGroup: name=systemd:/system/mysqld.service

왜 '활성화'가 작동하지 않는지에 대한 아이디어가 있는 사람이 있나요?

답변1

mysqld.service"가상" 단위입니다. 파일 시스템에 존재하지 않으며 systemd 호환성 계층의 일부일 뿐입니다. 이를 시작하면 systemd가 레거시 initscript를 실행 /etc/rc.d/mysqld하지만 적절한 위치에 심볼릭 링크할 수 있는 systemctl enable실제 파일이 필요하기 때문에 그렇게 할 수 없습니다..service

그러한 단위를 직접 작성하여 다음 위치에 넣을 수 있습니다 /etc/systemd/system/mysqld.service.

[단위]
설명=MySQL 서버
이후=network.target

[서비스]
ExecStart=/usr/bin/mysqld --defaults-file=/etc/mysql/my.cnf --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock
사용자=mysql
그룹=mysql
작업디렉토리=/usr

[설치하다]
WantedBy=다중 사용자.대상

systemctl daemon-reload생성/수정 후 실행합니다 .


또는 에 정의된 서비스 자동 시작을 initscripts-systemd포함하는 패키지를 설치할 수 있습니다 . 그러나 이 패키지는 곧 사라질 수 있으므로 init 시스템에 대한 기본 구성 파일을 사용하는 것이 항상 더 좋습니다.arch-daemons.targetrc.conf

답변2

@Grawity의 답변은 정확하고 아마도 이보다 더 나을 것입니다. 하지만 어제 기본적으로 rc.d 스크립트를 통과하여 문제를 해결했습니다...

/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/mysqld start
ExecStop=/etc/rc.d/mysqld stop

[Install]
WantedBy=multi-user.target

답변3

참고: 호스트별 단위 파일을 /etc/systemd/system/및 NOT 아래에 두는 것을 잊지 마십시오 /lib/systemd/system/.

후자는 배포판 관련 내용을 위한 것입니다. 전자는 사용자가 직접 구성하는 호스트별 항목을 위한 것입니다. 각각 /usr/bin/vs. 와 같습니다 /usr/local/bin/.

따라서 패키지가 자체적으로(아래에 /lib/systemd/system/) 단위 파일을 설치하지 않는 한, 자신만의 "사용자 정의" 항목을 아래에 넣으십시오 /etc/systemd/system/.

답변4

내 FC15 시스템에서 'systemctl 활성화 mysqld.service'를 실행하면 자동으로 다음 메시지가 반환됩니다.

mysqld.service는 /sbin/chkconfig로 리디렉션되는 기본 서비스가 아닙니다. /sbin/chkconfig mysqld 실행 중

따라서 다음을 실행해 보십시오. /sbin/chkconfig mysqld on

관련 정보