systemctl enable은 systemctl start와 어떻게 다른가요?


16

아치 리눅스 (최신, 최신) 상자를 실행 중이며 부팅시 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 outputs :

[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

왜 '활성화'가 작동하지 않는지에 대한 아이디어가 있습니까?

답변:


19

mysqld.service"가상"단위 – 파일 시스템에 존재하지 않으며 시스템의 호환성 계층의 일부일뿐입니다. 시작할 수 있고 systemd는 레거시 /etc/rc.d/mysqld초기화 스크립트 를 실행 하지만 올바른 위치에 심볼릭 링크 될 수 systemctl enable있는 실제 .service파일이 필요하기 때문에이를 실행할 수 없습니다 .

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

[단위]
Description = 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
WorkingDirectory = / usr

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

systemctl daemon-reload작성 / 수정 후 실행하십시오 .


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


감사! 나는 실제로 어제와 매우 비슷한 mysqld.service를 작성했지만 ExecStart / ExecStop을 위해 /etc/rc.d/mysqld start / stop으로 전달합니다. 수락, 다른 사람이 그것을 찾은 경우에도 내 버전을 게시합니다! 감사합니다
Rudi Visser

3

@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

2

참고 : 호스트 특정 장치 파일을 /etc/systemd/system/NOT 아래에 두어야합니다 /lib/systemd/system/.

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

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


1
이것은 실제로 그의 질문에 대답하지 않습니다. 이것은 @Rudi의 답변에 대한 주석과 비슷합니다.
PhilT

0

활성화는 시작시 "장치"일명 데몬 일명 서비스를 활성화하는 것입니다 systemd.

오픈 수세 :

# systemctl list-units --all | grep sql
mysql.service             loaded inactive dead          LSB: Start the MySQL database 
(good)

# systemctl enable mysql.service
mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql on
insserv: Service localfs has to exists for service vmware-USBArbitrator
insserv: Service network is missed in the runlevels 2 to use service vmware
Warning: unit files do not carry install information. No operation executed.

(it actually redirects to old chkconfig/sysvinit and that corrects init databases)

# systemctl start mysql.service

(no output)

# systemctl status mysql.service
mysql.service - LSB: Start the MySQL database server
          Loaded: loaded (/etc/init.d/mysql)
          Active: active (running) since Tue, 31 Jan 2012 20:07:52 +0100; 5s ago
         Process: 999999 ExecStart=/etc/init.d/mysql start (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/mysql.service
                  ├ 999999 /bin/sh /usr/bin/mysqld_safe --mysqld=mysqld --user=mysql...
                  └ 999999 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql...

(sort of runs)

예, 이것을 이해하고 mysqld는 시작할 때 실행하려는 데몬 / 서비스입니다. 이것이 내 요점이며, 시작 / 중지되지만 "활성화"하지는 않습니다.
Rudi Visser

0

FC15 시스템에서 'systemctl enable mysqld.service'를 실행하면 자동으로 다음과 같이 돌아 왔습니다.

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

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


0

서비스 유닛을 활성화 할 때 ...가 있으면 / etc / systemd / system에 복사하십시오.

Failed to issue method call: No such file or directory

서비스 유닛을 활성화하려면 ...을 추가하십시오 ...

[Install]
WantedBy=multi-user.target

건배, sugatang itlog

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.