vô hiệu hóa tập lệnh init.d trong systemd


11

Tôi đã thay đổi hệ thống init từ sysvinit sang systemd trên bản cài đặt raspbian. Cài đặt khởi động tốt, nhưng bây giờ bắt đầu lightdm khi khởi động. Tôi không muốn nó làm điều đó.

Tôi nhận thấy lightdm.serviceđược bắt đầu khi khởi động. Dừng dịch vụ với

systemctl stop lightdm.service

hoạt động tốt

systemctl disable lightdm.service nên vô hiệu hóa nó, nhưng cho tôi

Failed to issue method call: No such file or directory

systemctl status lightdm.service đưa cho tôi

lightdm.service - LSB: Light Display Manager
      Loaded: loaded (/etc/init.d/lightdm)
      Active: inactive (dead) since Thu, 03 Jul 2014 09:33:00 +0000; 22min ago
     Process: 762 ExecStop=/etc/init.d/lightdm stop (code=exited, status=0/SUCCESS)
     Process: 411 ExecStart=/etc/init.d/lightdm start (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/lightdm.service

Tôi giả sử rằng lightdm được bắt đầu từ tập lệnh init.d chứ không phải tập lệnh systemd và systemctl disablekhông hoạt động nếu nguồn là tập lệnh init.d. Thay vào đó, tôi nên làm gì để tắt lightdm khi khởi động?

chỉnh sửa: Thêm thông tin

đầu ra của $ ls -l /etc/systemd/system:

total 20
lrwxrwxrwx 1 root root   42 Jul  3 09:04 dbus-fi.epitest.hostap.WPASupplicant.service -> /lib/systemd/system/wpa_supplicant.service
lrwxrwxrwx 1 root root   37 Jul  3 13:03 default.target -> /lib/systemd/system/multi-user.target
drwxr-xr-x 2 root root 4096 Jul  3 09:00 getty.target.wants
drwxr-xr-x 2 root root 4096 Jul  3 09:04 graphical.target.wants
drwxr-xr-x 2 root root 4096 Oct 11  2013 local-fs.target.wants
drwxr-xr-x 2 root root 4096 Jul  3 09:04 multi-user.target.wants
drwxr-xr-x 2 root root 4096 Oct 11  2013 sysinit.target.wants
lrwxrwxrwx 1 root root   35 Mar 20  2013 syslog.service -> /lib/systemd/system/rsyslog.service

đầu ra của systemctl --all -t target:

UNIT                LOAD   ACTIVE   SUB    JOB DESCRIPTION
all.target          error  inactive dead       all.target
basic.target        loaded active   active     Basic System
cryptsetup.target   loaded active   active     Encrypted Volumes
emergency.target    loaded inactive dead       Emergency Mode
final.target        loaded inactive dead       Final Step
getty.target        loaded active   active     Login Prompts
local-fs-pre.target loaded active   active     Local File Systems (Pre)
local-fs.target     loaded active   active     Local File Systems
multi-user.target   loaded active   active     Multi-User
network.target      loaded inactive dead       Network
nss-lookup.target   loaded inactive dead       Name Lookups
remote-fs.target    loaded active   active     Remote File Systems
rescue.target       loaded inactive dead       Rescue Mode
shutdown.target     loaded inactive dead       Shutdown
sockets.target      loaded active   active     Sockets
sound.target        loaded active   active     Sound Card
swap.target         loaded active   active     Swap
sysinit.target      loaded active   active     System Initialization
syslog.target       loaded active   active     Syslog
time-sync.target    loaded inactive dead       System Time Synchronized
umount.target       loaded inactive dead       Unmount All Filesystems

đầu ra của ls -l /etc/systemd/system/multi-user.target.wants/:

total 8
drwxr-xr-x 2 root root 4096 Jul  3 09:04 .
drwxr-xr-x 7 root root 4096 Jul  3 13:03 ..
lrwxrwxrwx 1 root root   36 Oct 11  2013 remote-fs.target -> /lib/systemd/system/remote-fs.target
lrwxrwxrwx 1 root root   33 Jul  3 09:04 rsync.service -> /lib/systemd/system/rsync.service
lrwxrwxrwx 1 root root   35 Mar 20  2013 rsyslog.service -> /lib/systemd/system/rsyslog.service
lrwxrwxrwx 1 root root   32 Jul  3 09:04 sudo.service -> /lib/systemd/system/sudo.service
lrwxrwxrwx 1 root root   42 Jul  3 09:04 wpa_supplicant.service -> /lib/systemd/system/wpa_supplicant.service

Chúng tôi không coi RPi / raspian là chủ đề với ý nghĩa của Lỗi Máy chủ. Bản chất đam mê của thiết bị phù hợp hơn với Unix & Linux , Super User hoặc trong trường hợp không có câu hỏi không liên quan đến Raspberry Pi .

Cảm ơn. Câu hỏi kỳ lạ, tôi có thể tìm phạm vi chính xác của các trang web khác nhau này để đọc về phạm vi chính xác của từng trang web?
Martijn

Vâng, thật khó khăn, trung tâm du lịchtrợ giúp cho mỗi người là một nơi tốt để bắt đầu. Chúng tôi cũng đã làm rõ một số điểm nhất định trên meta của chúng tôi nói riêng và có liên quan đến bạn meta.serverfault.com/questions/5586/ .

Hrm. Trong khi tôi không đồng ý với điều đó, tôi quá nhiều người mới đến đây để ý kiến ​​đó có trọng lượng. Đồng thời, tôi đoán ít nhất là về chủ đề trên Unix & Linux. Tôi sẽ yêu cầu di chuyển.
Martijn

Câu trả lời:


5

Hãy thử (với quyền root): -

systemctl disable graphical.target

Sau khi khởi động lại, bạn sẽ ở multi-userchế độ trái ngược với graphical.

Nếu thất bại, hãy kiểm tra mục tiêu mặc định của bạn là gì: -

ls -l /lib/systemd/system/default.target
# or, depending on your distro
ls -l /etc/systemd/system/default.target

Lưu ý rằng sự khác biệt duy nhất trong các đường dẫn là thư mục cấp cao nhất - /libhoặc /etc.

Ở trên nên là một liên kết mềm đến multi-user.target. Nếu nó trỏ đến graphical.targetthì thay đổi nó bằng cách sử dụng (như root): -

ln -sf /lib/systemd/system/multi-user.target /lib/systemd/system/default.target
# or
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

tùy thuộc vào nơi liên kết mềm được tìm thấy trong ls -llệnh trước đó .

Khởi động lại và hy vọng trình quản lý hiển thị của bạn sẽ không bắt đầu.

Để xem mục tiêu bạn có, hãy chạy: -

systemctl --all -t target

có thể đáng ngạc nhiên, điều đó vẫn đưa tôi đến trong lightdm
Martijn

Hừm. Ngạc nhiên quá. Tôi đã đào sâu hơn một chút - vấn đề là hiện tại tôi chỉ có thể SSH tới VPS và không có hệ thống 'đồ họa' trước mặt để kiểm tra suy nghĩ của mình!
garethTheRed

Tôi đã chỉnh sửa, bây giờ tôi đã truy cập vào một hệ thống thực sự.
garethTheRed

Điều kỳ lạ là nó vẫn bắt đầu lightdm, mặc dù default.target trong /etc/systemd/system/default.target được liên kết với /lib/systemd/system/multi-user.target và systemctl list-units == type = target doesn 't liệt kê đồ họa. Mục tiêu là hoạt động. Tôi có cảm giác đó là do các tập lệnh init.d dự phòng cụ thể có mặt; Tôi chưa tìm thấy nguyên nhân gây ra nó, nhưng vấn đề cá nhân của tôi không còn là câu hỏi mục đích chung hữu ích nữa và đang trở thành câu hỏi diễn đàn "giúp tôi khắc phục vấn đề". Tôi rất biết ơn vì đã giúp đỡ nhiều hơn, nhưng thừa nhận nó không thuộc về trao đổi ngăn xếp nữa.
Martijn

1
Cách chính xác làsystemctl set-default multi-user
Majenko

7

systemctl disablekhông hoạt động nếu nguồn là một init.dtập lệnh. Tôi nên làm gì thay vào đó để vô hiệu hóa lightdmbắt đầu khi khởi động?

Trớ trêu thay, cho đến nay, cả hai cách "chính thức" này đều không được đề cập trong bất kỳ câu trả lời nào. Vì vậy, để đầy đủ, đây là:

Bạn "che dấu" dịch vụ:

systemctl mask lightdm.service

Hoặc bạn tạo một tệp đơn vị của riêng mình /etc/systemd/system/lightdm.serviceđể sau đó trở thành một công dân hệ thống hạng nhất thích hợp có thể được bật và tắt bằng các lệnh enabledisable. Các tập tin đơn vị thay thế init.dcác tập tin có cùng tên cơ sở. Bạn có thể đặt tên lightdm.servicecho cái được viết bởi người Debian, nếu bạn thích. ☺

đọc thêm


2

Bạn có thể bật và tắt các tập lệnh init với update-rc.dtrên Debian. Sử dụng update-rc.d lightdm disable.

Lý do vô hiệu hóa đồ họa.target không hoạt động là lightdm không có kiến ​​thức về đồ họa. Nó là một tập lệnh init và bắt đầu trên tất cả các runlevels nhiều người dùng (2-5).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.