ยังไม่ได้บูตระบบด้วย systemd เป็นระบบ init (PID 1) ไม่สามารถใช้งานได้


143

ฉันพยายามทำตามขั้นตอนการติดตั้ง Redis ตามที่กล่าวไว้ในบทความเรื่องมหาสมุทรดิจิทัลใน WSL เวอร์ชัน Ubuntu ที่ติดตั้งคือ Ubuntu 18.04

ทุกอย่างในการติดตั้ง redis เรียบร้อยดี แต่เมื่อฉันพยายามเรียกใช้สิ่งนี้sudo systemctl start redisฉันได้รับข้อความนี้

System has not been booted with systemd as init system (PID 1). Can't operate.

มีความคิดอย่างไรกับสิ่งนั้น?


1
ทำตามวิธีนี้github.com/Microsoft/WSL/issues/365
Biswapriyo

คำตอบ:


254

ให้ใช้: sudo service redis-server start

ฉันมีปัญหาเดียวกันหยุด / เริ่มบริการอื่น ๆ จากภายใน Ubuntu บน WSL สิ่งนี้ใช้ได้ผลโดยที่ systemctl ไม่ทำ

และอาจมีคนสงสัยว่า "คุณจะรู้ได้อย่างไรว่าชื่อบริการคือ 'redis-server'? คุณสามารถดูได้โดยใช้service --status-all


ใช่ .. ฉันก็ใช้สิ่งนี้เช่นกันตั้งแต่ฉันเขียนปัญหาซึ่งจากความคิดเห็นนั้นก็มีความคิดเห็นที่ช่วยได้
Fil

เยี่ยมมากขอบคุณมาก สิ่งนี้ใช้ได้กับบริการส่วนใหญ่ที่ติดตั้งในสภาพแวดล้อม WSL ในขณะที่เราไม่สามารถใช้ systemctl เพื่อเริ่ม | หยุด | เริ่มบริการใหม่ได้
Bayu Dwiyan Satria

1
เนื่องจากนี่เป็นคำตอบที่ได้รับคะแนนสูงสุดจึงเป็นเรื่องดีที่จะได้เห็นข้อมูลเพิ่มเติมว่าเกิดอะไรขึ้นที่นี่ สำหรับความเข้าใจของฉันserviceเป็นนามธรรมและสามารถถอยกลับไปที่init.d( sysv init) หรือsystemdซึ่งเป็นคำถามที่บอกเป็นนัยว่าไม่ได้ผล serverfault.com/questions/867322/…
fraleone

1
fraleone เนื่องจากเป็นคำตอบของฉันฉันจะพยายามตอบข้อกังวลของคุณ เพื่อความชัดเจนคำถามเกี่ยวกับข้อผิดพลาดในการพยายามเริ่ม Redis (บน WSL โดยเฉพาะ) โดยที่การใช้คำสั่ง start ทั่วไปที่บันทึกไว้ในที่อื่นsystemctl start redisไม่ทำงานสำหรับ OP มันก็ไม่ได้ผลสำหรับฉันเช่นกัน ฉันพบทางเลือกนี้ ( redis-server start) และมาที่นี่เพื่อเสนอเป็นคำตอบ ฉันดีใจที่ได้ช่วยเหลือผู้อื่น แต่ฉันไม่ / ไม่อยู่ในฐานะที่จะอธิบายว่า "เกิดอะไรขึ้นที่นี่" หรือเหตุใดจึงตอบสนองความคาดหวังของคุณ อย่าลังเลที่จะอธิบายอย่างละเอียดเนื่องจากคุณอาจพบมากขึ้นหรือคนอื่น ๆ อาจจะ
charlie arehart

14

แทนที่จะใช้sudo systemctl start redis ให้ใช้: sudo /etc/init.d/redis start

ณ ตอนนี้เราไม่มี systemd ใน WSL


1
คุณรู้หรือไม่ว่ามีอยู่ใน WLS 2?
thanos

1
จากการค้นหาด่วน WSL2 ไม่ได้บูตด้วย systemd มีวิธีแก้ปัญหาที่นี่แม้ว่าฉันยังไม่ได้ทดสอบ github.com/microsoft/WSL/issues/994#issuecomment-502055417
Byron Gavras

7

หากคุณใช้ Docker คุณอาจลองใช้อิมเมจที่มี Ubuntu พร้อม System D ใช้งานอยู่แล้วด้วยคำสั่งนี้:

docker run -d --name redis --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu:18.04

จากนั้นคุณต้องเรียกใช้:

docker exec -it redis /bin/bash

และที่นั่นคุณสามารถติดตั้ง Redis เริ่มต้นรีสตาร์ทหรืออะไรก็ได้ที่คุณต้องการ


Docker จะไม่ทำงานใน WSL
Aditya T

2
@Aditya มันทำใน WLS 2
thanos.a

5

ฉันมีปัญหานี้ในการเรียกใช้ WSL 2

วิธีแก้ปัญหาคือคำสั่ง

 $ sudo dockerd

หากหลังจากนั้นคุณยังมีปัญหากับสิทธิ์ให้รันคำสั่ง:

 $ sudo usermod -aG docker your-user

1
คุณจะต้องเริ่มดิสโทรด้วย ดังนั้นฉันจึงมี 2 เทอร์มินัลที่หนึ่งรันนักเทียบท่าและอีกอันที่ฉันใช้สำหรับงานของฉัน
Svetoslav Marinov

3

ฉันพยายามเริ่ม Docker ภายใน ubuntu และ WSL

สิ่งนี้ได้ผลสำหรับฉัน

sudo service docker start


0

สิ่งนี้ใช้ได้ผลสำหรับฉัน (ใช้ WSL)

sudo /etc/init.d/redis start

(สำหรับบริการอื่น ๆ ให้ตรวจสอบโฟลเดอร์ init.d สำหรับชื่อไฟล์)


0

ใช้คำสั่งนี้เพื่อเรียกใช้ทุกบริการ เพียงแค่เขียนชื่อบริการเช่น:

สำหรับxrdp :

sudo /etc/init.d/xrdp start

สำหรับredis :

sudo /etc/init.d/redis start

(สำหรับบริการอื่น ๆ ให้ตรวจสอบโฟลเดอร์ init.d สำหรับชื่อไฟล์)


-1

ฉันเจอปัญหาเดียวกัน! ps --no-headers -o comm 1 หลังจากรันสิ่งนี้ในเทอร์มินัลระบบจะส่งคืนsystemdหรือinit

หากส่งคืนค่า 'init' คำสั่ง 'systemctl' จะไม่ทำงานสำหรับระบบของคุณ


คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับคำตอบของคุณได้ไหม
jpnadas

ในการรันและจัดการกระบวนการ mongod ของคุณคุณกำลังใช้ระบบ init ในตัวของระบบปฏิบัติการ Linux เวอร์ชันล่าสุดมักจะใช้ systemd (ซึ่งใช้คำสั่ง systemctl) ในขณะที่ Linux เวอร์ชันเก่ามักจะใช้ System V init (ซึ่งใช้คำสั่ง service) หากระบบของคุณใช้systemdคำสั่งคือ: - 'sudo systemctl start mongod 'และถ้าใช้System V Initคำสั่งคือ: -' sudo service mongod start '
RoninS28
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.