Check running services on Linux

  • Last updated on: 2018-10-16
  • Authored by: Rackspace Support

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 Ubuntu®.

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 superserver 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 that your application is consuming.

Continue the conversation in the Rackspace Community.