308

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?

Fil
  • 8,225
  • 14
  • 59
  • 85

9 Answers9

475

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

charlie arehart
  • 6,590
  • 3
  • 27
  • 25
  • 1
    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 '18 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 '20 at 09:55
  • 3
    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. https://serverfault.com/questions/867322/what-is-the-difference-between-service-and-systemctl – fraleone Apr 22 '20 at 04:55
  • 5
    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 '20 at 16:26
  • 2
    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)](https://stackoverflow.com/a/65814529/11154841) which also explains in detail why you need to use "service" here instead of systemd. – questionto42 Jul 24 '21 at 16:03
61

Instead of using

sudo systemctl start redis

use:

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

Maifee Ul Asad
  • 3,992
  • 6
  • 38
  • 86
Byron Gavras
  • 970
  • 10
  • 16
27

I had this problem running WSL 2

the solution was the command

 $ sudo dockerd

if after that you still have a problem with permission, run the command:

 $ sudo usermod -aG docker your-user
Felipe Augusto
  • 1,341
  • 1
  • 16
  • 18
17

I was trying to start Docker within ubuntu and WSL.

This worked for me,

sudo service docker start

Sangeetha
  • 187
  • 1
  • 2
11

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.

Carlos Saltos
  • 1,385
  • 15
  • 15
6

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.

Rickmakeitquick
  • 102
  • 1
  • 9
5

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
amy8374
  • 1,450
  • 3
  • 17
  • 26
3

This worked for me (using WSL)

sudo /etc/init.d/redis start

(for any other service, check the init.d folder for filenames)

assayag.org
  • 709
  • 10
  • 24
2

use this command for run every service just write name service for example :

for xrdp :

sudo /etc/init.d/xrdp start

for redis :

sudo /etc/init.d/redis start

(for any other service, check the init.d folder for filenames)

mamal
  • 1,791
  • 20
  • 14