添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

WSL Redis encountered System has not been booted with systemd as init system (PID 1). Can't operate [closed]

Ask Question

This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers . If you believe the question would be on-topic on another Stack Exchange site , you can leave a comment to explain where the question may be able to be answered.

Closed 1 year ago .

This post was edited and submitted for review last year and failed to reopen the post:

Original close reason(s) were not resolved

I'm trying to follow the Redis installation process that was discuss in this article of digital ocean, for in WSL(Windows Sub-System for Linux). The Ubuntu version installed is Ubuntu 18.04.

Everything in redis installation is fine but when I tried to run this sudo systemctl start redis I got this message.

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

Any Idea on what should I do with that?

Instead, use: sudo service redis-server start

I had the same problem, stopping/starting other services from within Ubuntu on WSL. This worked, where systemctl did not.

And one could reasonably wonder, "how would you know that the service name was 'redis-server'?" You can see them using service --status-all

Yes.. I been using this too since I wrote the problem, that one from the comment also has a comment that help – Fil Oct 22, 2018 at 11:06 Great, thank you very much. This work for most all services that have been install in WSL environment while we cannot use systemctl to start|stop|restart services. – Bayu Dwiyan Satria Jan 11, 2020 at 9:55 Given this is the highest rated answer it would have been nice to see a little more info what happens here. To my understanding service is an abstraction and can fall back to either init.d (sysv init) or systemd which as the question implied does not work. serverfault.com/questions/867322/… – fraleone Apr 22, 2020 at 4:55 fraleone, since it was my answer, I'll try to address your concern. To be clear, the question was about an error trying to start Redis (on WSL specifically), where using the common start command documented elsewhere, systemctl start redis, was not working for the OP. It wasn't working for me, either. I found this alternative (redis-server start) and came here to offer it as an answer. I'm glad it's helped others. But I wasn't/am not in a position to explain "what happens here", or why it counters your expectations. Feel free to elaborate as you may find more, or perhaps others will. – charlie arehart Apr 23, 2020 at 16:26 You can also call the needed commands from ".profile" already at boot up time, see the similar issue for docker “sudo systemctl enable docker” not available: Automatically run Docker at boot on WSL2 (using a “sysvinit” / “init” command or a workaround) which also explains in detail why you need to use "service" here instead of systemd. – questionto42 Jul 24, 2021 at 16:03

sudo /etc/init.d/redis start

as of right now we do not have systemd in WSL

Or sometime it might be redis-server, like:

>> sudo /etc/init.d/redis-server start
Starting redis-server: redis-server.

Just do a ls, like: ls /etc/init.d

From a quick search WSL2 is not booted with systemd. There is a workaround here though which I have not tested. github.com/microsoft/WSL/issues/994#issuecomment-502055417 – Byron Gavras May 4, 2020 at 7:11 sudo /etc/init.d/redis-server start fixed the problem after all other commands had failed. I am on WSL. – Angelo Charmant Igitego Feb 13, 2022 at 17:33 you'd also have to start the distro. So I have 2 terminals one runs docker and the other one I use for my work – Svetoslav Marinov Jun 16, 2020 at 14:12

If you are using Docker, you may try an image that has Ubuntu with System D already active with this command:

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

Then you just need to run:

docker exec -it redis /bin/bash

and there you can just install Redis, start it, restart it or whatever you need.

Total newbie here - after trying most of the above suggestions, the command that worked for me was sudo service apache2 --full-restart and the web server started up.

Maybe the error came up because I have been following lots of setup instructions without a reboot/restart. I'm working on Ubuntu 20.04 in WSL2 using Apache2 Debian.

For WSL2, I had to install cgroupfs-mount, than start the daemon, as described here:

sudo apt-get install cgroupfs-mount
sudo cgroupfs-mount
sudo service docker start