추가 읽기

추가 읽기

최근에 서버를 Ubuntu V14.04에서 V16.04로 업그레이드했는데 이제 systemctl이 더 이상 작동하지 않는 것 같습니다.

부팅 시 전송 데몬이 자동으로 시작되는 것을 방지해야 하므로 다음 명령을 실행합니다.

sudo systemctl disable transmission-daemon.service

나는 다음과 같은 응답을 받았습니다

Synchronizing state of transmission-daemon.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install disable transmission-daemon
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
The script you are attempting to invoke has been converted to an Upstart job, but lsb-header is not supported for Upstart jobs.
insserv: warning: script 'screen-cleanup' missing LSB tags and overrides
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `screen-cleanup'
insserv: Default-Stop  undefined, assuming empty stop  runlevel(s) for script `screen-cleanup'
insserv: warning: current start runlevel(s) (empty) of script `transmission-daemon' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `transmission-daemon' overrides LSB defaults (0 1 6).
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused

서비스가 비활성화되지 않습니다.


고쳐 쓰다 @JdeBP에 따르면 화면 정리 스크립트를 제거하면 문제가 해결되었습니다.

$ sudo rm /etc/init.d/screen-cleanup
$ sudo systemctl disable transmission-daemon.service

Synchronizing state of transmission-daemon.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install disable transmission-daemon
insserv: warning: current start runlevel(s) (empty) of script `transmission-daemon' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `transmission-daemon' overrides LSB defaults (0 1 6).
insserv: warning: current start runlevel(s) (empty) of script `transmission-daemon' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `transmission-daemon' overrides LSB defaults (0 1 6).

이제 서비스를 볼 수 있어요장애가 있는필요에 따라

systemctl status transmission-daemon
● transmission-daemon.service - Transmission BitTorrent Daemon
   Loaded: loaded (/lib/systemd/system/transmission-daemon.service; disabled; ve
  Drop-In: /etc/systemd/system/transmission-daemon.service.d
           └─local.conf
   Active: active (running) since Thu 2018-03-08 08:16:00 EST; 2 days ago
 Main PID: 2423 (transmission-da)
   Status: "Uploading 329.89 KBps, Downloading 11.04 KBps."
   CGroup: /system.slice/transmission-daemon.service
           └─2423 /usr/bin/transmission-daemon -f --log-error -g /etc/transmissi

답변1

/lib/systemd/systemd-sysv-installsystemd-sysv-generator다른 서비스 관리 시스템이 인식할 수 있는 비기본 활성화/비활성화 작업을 수행하는 작업을 수행하는 후크입니다. Ubuntu는 /lib/systemd/systemd-sysv-install단순히 Ubuntu라고 불립니다 /usr/sbin/update-rc.d. /sbin/insserv그러면 van Smoorenbug rc스크립트 가 있음을 발견 /etc/init.d하고 여기에서 LSB 헤더 정보를 얻으려고 시도합니다.

/sbin/insservrc발견한 van Smoorenburg 스크립트가 실제로 Upstart 프로그램에 대한 심볼릭 링크임을 인식하는 특별한 경우가 있습니다 /lib/init/upstart-job. 이것은 많은 van Smoorenburg 스크립트로 채워진 일반 프로그램이기 때문에 rc특정 서비스에 적합한 LSB 헤더 정보를 갖지 않습니다. 따라서 서비스에 대한 올바른 LSB 헤더를 계산하고 인쇄할 수 있도록 하위 /sbin/insserv명령을 사용하여 rc스크립트를 호출해 보십시오./lib/init/upstart-joblsb-header

그러나 /lib/init/upstart-job이 하위 명령은 실제로 지원되지 않습니다. 소프트웨어가 제대로 통합되지 않았습니다. /lib/init/upstart-jobrunning initctl, 실행 중인 Upstart 서비스 관리자에 연결을 시도합니다. 물론 실패합니다(그 중 하나가 실행되고 있지 않기 때문에). 그리고 소켓에 연결할 수 없다는 첫 번째 오류를 인쇄한 /com/ubuntu/upstart다음 두 번째 오류를 인쇄합니다. "시작 작업에 대해" 하위 명령이 지원되지 않는다는 오류가 있습니다 lsb-header(비록그게 바로 그거야).

결과는 모든 것이 잘못된다는 것입니다.

수년 동안 문제가 발생했습니다. 이 버그를 보고하는 사람들을 찾을 수 있으며, 물론 이것은 insservUpstart 및 van Smoorenburg 밑에서 직간접적으로 운영되는 사람들 init에게 10년 넘게 발생했습니다 .이 질문은 2016년 AskUbuntu에서 제기되었습니다. 다음과 같은 여러 가지 Launchpad 오류가 있습니다.이는 2016년부터이다..

흥미롭게도 Launchpad 버그 중 하나(2010년 버그 중 하나)에서는누군가 하위 명령을 upstart-job이해하기 위해 패치를 제공하려고 했습니다.lsb-header그리고 insserv적어도 줘무엇정보가 상당히 희박하더라도 함께 작업하세요. 소프트웨어를 스스로 고칠 수 없는 일부 사용자를 제외하고는 아무도 이 사실을 눈치채지 못했습니다.

물론 이러한 van Smoorenburg rc스크립트는 Upstart를 직접 구동하는 방법은 모르지만 initctl이전 van Smoorenburg 스크립트를 구동하는 방법을 알고 있는 소프트웨어와 사람들을 용이하게 하기 위한 Upstart 주변의 래퍼입니다 rc. 그러나 Ubuntu 16 운영 체제를 사용하고 있습니다. systemd의 이전 버전과의 호환성 메커니즘은 일부 van Smoorenburg rc스크립트를 사용합니다.그들 자신다른 것이전 버전과의 호환성 메커니즘을 사용하여 이를 systemd 기본 단위로 래핑하고 궁극적으로 systemd 서비스 관리자로 전송된 명령을 존재하지 않는 Upstart 서비스 관리자에 반영하려고 합니다.

이건 말도 안 돼요.

  1. /etc/init.d을 가리키는 심볼릭 링크를 찾으세요 /lib/init/upstart-job. 상황을 보면 정말 그렇습니다 /etc/init.d/screen-cleanup.
  2. 그것을 제거.

가장 중요한 점은 Ubuntu 16의 기본 시스템 서비스 장치( )에 의해 제어되며 van Smoorenburg 이전 버전과의 호환성 메커니즘이 transmission-daemon처음부터 작동하지 않는다는 것입니다./lib/systemd/system/transmission-daemon.servicerc/lib/systemd/systemd-sysv-install

추가 읽기

관련 정보