Check running services on Linux
When you need to troubleshoot a network service, the first step is to ensure
that the service is running.
If the service has an initialization (init) script installed, you can use the
service
command to start, stop, and check the status of the service. This
command references a service by using its init script, which is stored in the
/etc/init.d
directory for Debian®-based distributions and the
etc/rc.d/init.d
directory for Red Hat®-based distributions.
If you don't know the name that the system uses for a service, check either
of the preceding directories by using the ls
command followed by the
directory name. Some names vary depending on your distribution. For example,
Apache® is httpd
on CentOS® and apache2
on the Ubuntu® operating system.
Note: Many newer Linux® distributions use systemd
instead of
netstat
to check services. If you're using systemd
, replace all
service <service-name> <status>
commands with systemct1 <status> <service-name>
.
For more information about systemct1
commands, see the Fedora™
SysVinit to Systemd Cheatsheet.
Check the service status
A service can have any of the following statuses:
start
: The service has started.stop
: The service has stopped running.restart
: The service is rebooting and will start after the process is
complete.
The following example shows how to check the status of httpd
on CentOS
by using the service
command:
$ sudo service httpd status
httpd is stopped
Start the service
If a service isn't running, you can use the service
command to start it. The
following example starts the httpd
service:
$ sudo service httpd start
Starting httpd: [ OK ]
If the application can't be started, the system reports the
failure and usually displays a message that indicates the cause of the problem.
$ sudo service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[FAILED]
Use netstat to find port conflicts
In the preceding example, httpd
can't be started because something is
already listening on the port. To find out what's listening, you can run the
netstat
command.
Run the following command to display a list of listening programs and the
ports that they're using:
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.176.77.113:3306 0.0.0.0:* LISTEN 28509/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2113/nc
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1115/master
tcp 0 0 :::22 :::* LISTEN 1051/sshd
The output shows that the nc
program (which appears in the Program name
column) is listening on port 80 (which appears in the Local Address
column). Stopping this program should enable httpd
to be started.
Note: For more information about the netstat
command, see Check listening ports with netstat.
Check xinetd status
If the service isn't running, it might be because a super-server such as
an Extended Internet Service Daemon (xinetd
) is being used to launch the
program when a connection is received. If this is the case, starting the
service might have resolved the issue. Run the following command to verify
that the issue is resolved:
$ sudo service xinetd status
xinetd (pid 8795) is running...
Check logs
If you can’t start your service, review your logs to
see if they contain information about the issue.
Next steps
After you're sure that the application is running, check the
server resources to verify how much
your application is consuming.
Updated about 1 year ago