Difference between Systemctl and service command
ApacheUbuntuServiceSystemctlApache Problem Overview
I always run my Apache server in this way:
sudo service apache2 start
But in many guides I saw commands like this:
sudo systemctl start apache2
Can somebody shortly write the difference between these commands and give me advice about what command I should use in everyday work?
Apache Solutions
Solution 1 - Apache
service
operates on the files in /etc/init.d and was used in conjunction with the old init system. systemctl
operates on the files in /lib/systemd. If there is a file for your service in /lib/systemd it will use that first and if not it will fall back to the file in /etc/init.d.
Also If you are using OS like ubuntu-14.04 only service command will be available.
So if systemctl is available ,it will be better to use it
Solution 2 - Apache
With borrowing from this answer:
> service
is an "high-level" command used for start
, restart,
stop
and status
> services in different Unixes and Linuxes. Depending on the
> "lower-level" service manager, service redirects on different
> binaries.
>
> For example, on CentOS 7 it redirects to systemctl, while on CentOS 6
> it directly called the relative /etc/init.d
script. On the other
> hand, in older Ubuntu releases it redirects to upstart.
>
> service
is adequate for basic service management, while directly
> calling systemctl
give greater control options.
Moreover, systemctl
runs services file from this path: /lib/systemd/
Solution 3 - Apache
Service started as a helper script for sysvinit an latter became a wrapper script that works regardless of having sysvinit or systemd.
Solution 4 - Apache
For my choice service
is more reliable, especially in automatization tasks. It's wrapping commands for different init systems, thus you can use it for older distributions and expect the same result. And in my observation there is often no working reload
command (update daemon config without process killing ) for systemd unit, when it works with service <service-name> reload
normally.