ปิดการใช้งานสคริปต์ init.d ใน systemd


11

ฉันเปลี่ยนระบบ init จาก sysvinit เป็น systemd ในการติดตั้ง raspbian การติดตั้งบูทดี แต่ตอนนี้เริ่ม lightdm เมื่อบู๊ต ฉันไม่ต้องการให้ทำเช่นนั้น

ฉันสังเกตเห็นว่าlightdm.serviceเริ่มต้นในการบูต หยุดบริการด้วย

systemctl stop lightdm.service

ทำงานได้ดี

systemctl disable lightdm.service ควรปิดการใช้งาน แต่ให้ฉัน

Failed to issue method call: No such file or directory

systemctl status lightdm.service ให้ฉัน

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

ฉันสมมติว่า lightdm เริ่มต้นจากสคริปต์ init.d มากกว่าสคริปต์ systemd และsystemctl disableไม่ทำงานหากแหล่งที่มาเป็นสคริปต์ init.d ฉันควรทำอย่างไรเพื่อปิดการใช้งาน lightdm โดยเริ่มตั้งแต่บูต

แก้ไข: ข้อมูลเพิ่มเติม

ผลลัพธ์ของ$ 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

ผลลัพธ์ของ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

ผลลัพธ์ของ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

เราไม่ถือว่า RPi / raspian เป็นเฉพาะที่มีความหมายของ Server Fault ผู้ที่ชื่นชอบธรรมชาติของอุปกรณ์ที่มีความเหมาะสมดีกว่าที่จะUnix และ Linux , Super Userหรือในกรณีที่ไม่ใช่คำถามที่เกี่ยวข้องยูนิกซ์ราสเบอร์รี่ Pi

ขอบคุณ คำถามที่แปลกที่ฉันสามารถหาขอบเขตที่แน่นอนของเว็บไซต์ต่าง ๆ เหล่านี้เพื่ออ่านในขอบเขตที่แน่นอนของแต่ละไซต์
Martijn

ใช่มันยากการทัวร์และศูนย์ช่วยเหลือสำหรับแต่ละแห่งเป็นจุดเริ่มต้นที่ดี เรายังมีการชี้แจงของบางจุดในเมตาของเราโดยเฉพาะอย่างยิ่งและมีความเกี่ยวข้องกับคุณmeta.serverfault.com/questions/5586/...

การบริหารทรัพยากรมนุษย์ ในขณะที่ฉันไม่เห็นด้วยกับเรื่องนี้ฉันมีผู้มาใหม่มากเกินไปที่นี่เพื่อให้ความคิดเห็นนั้นมีน้ำหนัก ในเวลาเดียวกันมันเป็นอย่างน้อยในหัวข้อบน Unix & Linux ฉันเดา ฉันจะขอการโยกย้าย
Martijn

คำตอบ:


5

ลอง (เป็น root): -

systemctl disable graphical.target

หลังจากที่เริ่มต้นที่คุณควรจะอยู่ในโหมดเมื่อเทียบกับmulti-usergraphical

หากล้มเหลวให้ตรวจสอบเป้าหมายเริ่มต้นของคุณด้วย: -

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

โปรดทราบว่าแตกต่างเฉพาะในเส้นทางที่เป็นไดเรกทอรีระดับบน - ทั้งหรือ/lib/etc

multi-user.targetดังกล่าวข้างต้นควรจะมีการเชื่อมโยงที่อ่อนนุ่ม ถ้ามันชี้ไปที่graphical.targetเปลี่ยนแล้วใช้ (เป็น 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

ขึ้นอยู่กับตำแหน่งที่พบซอฟต์ลิงค์ในls -lคำสั่งก่อนหน้า

รีบูทและหวังว่าผู้จัดการหน้าจอของคุณจะไม่เริ่มทำงาน

หากต้องการดูเป้าหมายที่คุณมีให้เรียกใช้: -

systemctl --all -t target

อาจเป็นที่น่าแปลกใจที่ยังคงที่ดินใน lightdm
Martijn

อืมมม แปลกใจเช่นกัน ฉันขุดขึ้นมาอีกเล็กน้อยปัญหาคือฉันสามารถ SSH เป็น VPS ในขณะนี้และยังไม่มีระบบ 'กราฟิก' ต่อหน้าฉันเพื่อตรวจสอบความคิดของฉัน!
garethTheRed

ฉันแก้ไขตอนนี้ที่ฉันได้เข้าถึงระบบจริง
garethTheRed

ผิดปกติมันยังคงเริ่มต้น lightdm แม้ว่า default.target ใน /etc/systemd/system/default.target จะเชื่อมโยงกับ /lib/systemd/system/multi-user.target และ systemctl list-units == type = target doesn ไม่แสดงรายการกราฟิก. เป้าหมายเป็นใช้งานอยู่ ฉันรู้สึกว่ามันเป็นเพราะสคริปต์ init.d ทางเลือกที่มีอยู่; ฉันยังไม่พบสิ่งที่ทำให้เกิดปัญหานี้ แต่ปัญหาส่วนตัวของฉันคือการหลีกเลี่ยงการเป็นคำถามทั่วไปที่มีประโยชน์และกลายเป็นคำถามเกี่ยวกับฟอรัม "ช่วยฉันแก้ไขปัญหาของฉัน" ฉันขอขอบคุณสำหรับความช่วยเหลือเพิ่มเติม แต่รับทราบว่ามันไม่ได้อยู่ในการแลกเปลี่ยนสแต็กอีกต่อไป
Martijn

1
วิธีที่ถูกต้องคือsystemctl set-default multi-user
Majenko

7

systemctl disableไม่ทำงานหากแหล่งที่มาเป็นinit.dสคริปต์ ฉันควรทำอย่างไรเพื่อปิดการใช้งานlightdmเริ่มต้นตอนบูท

แดกดันไม่มีวิธีการ "อย่างเป็นทางการ" ในการทำเช่นนี้ได้ถูกกล่าวถึงในคำตอบใด ๆ ดังนั้นเพื่อความสมบูรณ์นี่คือ:

คุณ "ปิดบัง" บริการ:

systemctl mask lightdm.service

หรือคุณสร้างไฟล์หน่วยของคุณเอง/etc/systemd/system/lightdm.serviceแล้วกลายเป็นพลเมือง systemd ชั้นหนึ่งที่เหมาะสมที่สามารถเปิดใช้งานและปิดการใช้งานด้วยคำสั่งenableและ disableไฟล์หน่วยแทนที่init.dไฟล์ของชื่อไฟล์เดียวกัน คุณสามารถlightdm.serviceเขียนสิ่งที่เขียนโดยคน Debian ถ้าคุณชอบ ☺

อ่านเพิ่มเติม


2

คุณสามารถเปิดใช้งานและปิดใช้งานสคริปต์ init ด้วยupdate-rc.dบน Debian update-rc.d lightdm disableใช้

เหตุผลในการปิดใช้งานกราฟิก.targetไม่ทำงานคือ lightdm ไม่มีความรู้เกี่ยวกับ graphics.target มันเป็นสคริปต์เริ่มต้นและเริ่มต้นใน runlevels ผู้ใช้หลายคน (2-5)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.