Article explaining service management in Linux. Learn how to restart service in Linux distro like Red Hat, Debian, Ubuntu, CentOS, etc.
Managing services in Linux is one of the frequent task sysadmins need to take care of. In this post, we will be discussing several operations like –
- How to stop service in Linux
- How to start service in Linux
- How to restart service in Linux
- How to check the status of service in Linux
Different distributions have different ways of service management. Even within the same distro, different versions may have different service management aspects. Like RHEL 6 and RHEL7 has different commands to manage services.
Let’s see service related tasks in various flavors of Linux –
How to stop service in Linux
Service can be stopped with below commands (respective distro specified)
# service <name> stop (RHEL6 & lower, Ubuntu, CentOS, Debian, Fedora)
# systemctl stop <name>.service (RHEL7)
# stop <name> (Ubuntu with upstart)
here <name> is service name like telnet, NTP, NFS, etc. Note that upstart is pre-installed with Ubuntu 6.10 later, if not you can install using the APT package.
Newer versions are implementing systemctl
now in place of service
command. Even if you use service command in RHEL7 then it will call systemctl
in turns.
# service sshd-keygen status
Redirecting to /bin/systemctl status sshd-keygen.service
● sshd-keygen.service - OpenSSH Server Key Generation
Loaded: loaded (/usr/lib/systemd/system/sshd-keygen.service; static; vendor preset: disabled)
Active: inactive (dead)
-----output clipped-----
In the above output, you can see it shows you which systemctl
command its executing in place of service
command. Also, note that it appends .service to service_name supplied to service
command.
Old service
commands like RHEL6 & lower, prints status of operation as OK (success) or FAILED (failure) for start, stop, restart operations. systemctl
the command doesn’t print any output on the console.
How to start service in Linux
Starting service follows same above syntax.
# service <name> start (RHEL6 & lower, Ubuntu, CentOS, Debian, Fedora)
# systemctl start <name>.service (RHEL7)
# start <name> (Ubuntu with upstart)
How to restart service in Linux
# service <name> restart (RHEL6 & lower, Ubuntu, CentOS, Debian, Fedora)
# systemctl restart <name>.service (RHEL7)
# restart <name> (Ubuntu with upstart)
It stops service and then immediately starts it. So basically its a combined command of above two.
Mostly to reload edited new configuration we seek restart of service. But this can be done without restarting it provided service supports reload config. This can be done by using reload
option instead of restart
.
How to check the status of service in Linux
Checking the status of service makes you aware of if service is currently running or not. Different distros give different details about service in the output of status. Below are a few examples for your reference.
Service status information in Ubuntu :
# service cron status
â cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-03-10 17:53:23 UTC; 2s ago
Docs: man:cron(8)
Main PID: 3506 (cron)
Tasks: 1
Memory: 280.0K
CPU: 1ms
CGroup: /system.slice/cron.service
ââ3506 /usr/sbin/cron -f
Mar 10 17:53:23 ip-172-31-19-90 systemd[1]: Started Regular background program processing daemon.
Mar 10 17:53:23 ip-172-31-19-90 cron[3506]: (CRON) INFO (pidfile fd = 3)
Mar 10 17:53:23 ip-172-31-19-90 cron[3506]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
It has details about the service state, its man page, PID, CPU & MEM utilization, and recent happenings from the log.
Service status information in RHEL6:
# service crond status
crond (pid 1474) is running...
It only shows you PID and state of service.
Service status information in RHEL7:
# systemctl status crond.service
â crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-03-10 13:04:58 EST; 1min 2s ago
Main PID: 499 (crond)
CGroup: /system.slice/crond.service
ââ499 /usr/sbin/crond -n
Mar 10 13:04:58 ip-172-31-24-59.ap-south-1.compute.internal systemd[1]: Started Command Scheduler.
Mar 10 13:04:58 ip-172-31-24-59.ap-south-1.compute.internal systemd[1]: Starting Command Scheduler...
Mar 10 13:04:58 ip-172-31-24-59.ap-south-1.compute.internal crond[499]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 85% if used.)
Mar 10 13:04:59 ip-172-31-24-59.ap-south-1.compute.internal crond[499]: (CRON) INFO (running with inotify support)
It prints all details as Ubuntu but doesn’t show CPU and memory utilization, manpage.
List all services on the system
If you want to see all services running on the system and their statuses then you can use below command :
# service --status-all (RHEL6 & lower, Ubuntu, CentOS, Debian, Fedora)
# systemctl list-units --type service --all (RHEL7)
It will present you list of all services and their status with few other details.