How to Fix "Systemctl Command Not Found" Error in Linux
systemctl being an important utility in the Linux ecosystem, it is very common that you may encounter a problem “systemctl: command not found” error when you try to run the systemctl command. This may not be the case for all the distributions of Linux, but you can probably encounter this error when you are using an older version of the Linux distribution which does not support the systemctl command.
The problem occurring to you is a very common issue and can be easily fixed. So, do not worry at all and just go through the complete tutorial to find a quick and easy fix.
We will try to understand the problem first and then fix it.
Insights into systemctl and systemd
As the error is with reference to the systemctl command, it would be good to know the basics of this command to understand the fix for this error better.
systemctl is a command-line utility Linux offers, which is used to monitor and control one other command-line utility named ‘systemd‘. It also inspects and controls the system manager along with the ‘systemd‘ utility.
General syntax:
systemctl [option] [name]systemd is a bundle of daemons, libraries and utilities which controls the programs that run when your system boots up. systemd also manages to initiate an important job like starting a journal of system activity.
This utility functions as the central management utility for most if not all of the Linux-based operating systems.
Root cause of the error
The most probable cause for this error might be that you are using an older version of the Linux distribution. Many of the older versions use the SysV init instead of the systemd utility.
systemd utility is absent in the previous Linux versions as it is a recent addition to the basket of utilities provided by Linux. systemctl is compatible to function and monitor with the systemd utility and will fail to work with the previous configurations like SysV init or Upstart.
If you aren’t using systemd, then this error is expected. It is as simple and straightforward as that.
You may encounter this error in the following way.
gaurav@ubuntu:~$ sudo systemctl start ufw
[sudo] password for gaurav:
sudo: systemctl: command not found
gaurav@ubuntu:~$ Here, we attempted to start the Ubuntu Fire Wall (ufw) using the systemctl command and encountered the “systemctl: command not found” error.
So, what to do now if you do not wish to change your current Linux distribution which is using some other central management utility other than systemd? Well, we do have a quick fix for you which would allow you to keep your current Linux distribution as well as fix your error in no time.
Let us observe the fix now.
Fixing “systemctl: command not found” error
Finally, let us now look at the solution of the problem in question after analyzing the causes and basic facts about the problem.
Fix 1: Replacing systemctl with service command
A simple fix for the error in question is to use the service command instead of the error causing systemctl command.
service command helps in running the SystemV init script which is used by the older Linux distributions. If you do not wish to install the systemd utility on your system, this fix will surely work for you.
You can start, restart or stop any services and daemons on your Linux distribution using the service command.
The service command and the systemctl command function in the same way, the only difference here is the compatibility of the command with the utilities that are responsible for the graceful running of your system.
Let us see the service command with an illustration.
General Syntax:
sudo service [service_name] [action]In the above syntax, the [action] space may include actions like start, stop, restart or status.
We’ll run the same command to start the ufw service using the service command.
sudo service ufw startOutput:
gaurav@ubuntu:~$ sudo service ufw start
gaurav@ubuntu:~$ sudo service ufw status
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enab
Active: active (exited) since Mon 2020-09-28 11:22:34 IST; 1h 5min ago
Docs: man:ufw(8)
Process: 333 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SU
Main PID: 333 (code=exited, status=0/SUCCESS)
Sep 28 11:22:34 ubuntu systemd[1]: Started Uncomplicated firewall.
Warning: Journal has been rotated since unit was started. Log output is incompleHere, the service command is used instead of the systemctl command and it worked out absolutely fine.
Let us see one more example of the service command to get a proper understanding of it.
sudo service apache2 startOutput:
gaurav@ubuntu:~$ sudo service apache2 status
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Mon 2020-09-28 11:22:47 IST; 1h 16min ago
Process: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCE
Main PID: 1248 (apache2)
Tasks: 55 (limit: 4456)
CGroup: /system.slice/apache2.service
├─1248 /usr/sbin/apache2 -k start
├─1249 /usr/sbin/apache2 -k start
└─1250 /usr/sbin/apache2 -k start
Sep 28 11:22:43 ubuntu systemd[1]: Starting The Apache HTTP Server...
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00112: Warning: DocumentRoot [/var/www
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Could not reliably det
Sep 28 11:22:47 ubuntu systemd[1]: Started The Apache HTTP Server.
gaurav@ubuntu:~$ We have used the service command to start the apache2 utility. Using the status option with the service command will display the current status of the service. We will get the details whether it is running or is dead (inactive).
Let us now use the stop action to stop the apache2 service using the service command.
gaurav@ubuntu:~$ sudo service apache2 stop
gaurav@ubuntu:~$ sudo service apache2 status
lines 1--1...skipping...
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: inactive (dead) since Mon 2020-09-28 12:42:06 IST; 1s ago
Process: 4928 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 1248 (code=exited, status=0/SUCCESS)
Sep 28 11:22:43 ubuntu systemd[1]: Starting The Apache HTTP Server...
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00112: Warning: DocumentRoot [/var/www/html] does not exist
Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'S
Sep 28 11:22:47 ubuntu systemd[1]: Started The Apache HTTP Server.From the detailed examples explained above, we can conclude that we can use this command instead of the systemctl command to control and monitor other daemons and services under the Linux distribution.
Fix 2: Checking for systemd package
Sometime it may be the case that only the systemd package installation may fix the problem. First, you need to check the installation status of the systemd package on your system.
Use the following command to check the package on your system.
sudo dpkg -l | grep systemdIf the systemd utilty is already installed you will get an output similar as shown below.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd
[sudo] password for gaurav:
ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 simple interprocess messaging system (systemd --user integration)
ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss module providing dynamic user and group name resolution
ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 system and service manager - PAM module
ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd utility library
ii libsystemd0:i386 237-3ubuntu10.42 i386 systemd utility library
ii networkd-dispatcher 1.7-0ubuntu3.3 all Dispatcher service for systemd-networkd connection status changes
ri python3-systemd 234-1build1 amd64 Python 3 bindings for systemd
ii systemd 237-3ubuntu10.42 amd64 system and service manager
ii systemd-sysv 237-3ubuntu10.42 amd64 system and service manager - SysV links
gaurav@ubuntu:~$ If you get an output similar to this, it means that systemd is installed on your system.
If it’s not installed, you can install it in the following way.
sudo apt-get updatesudo apt-get install systemdIf it is installed and still the error persists, then try reinstalling it using the following command.
sudo apt-get install --reinstall systemdThis will solve your problem by installing the systemd utility.
We learnt to fix the “systemctl: command not found” in this tutorial. We can safely conclude that using the service command instead of the systemctl is a good idea and resolves the issue very well. We can easily use the service command after understanding the illustrative examples shown in the tutorial.
Comments