Centos Service Start On Boot

admin14 April 2024Last Update :

Understanding CentOS and System Initialization

CentOS, a popular Linux distribution in the enterprise environment, is known for its stability and robustness. It’s derived from Red Hat Enterprise Linux (RHEL) sources and aims to be fully compatible with it. One of the critical aspects of managing CentOS servers is ensuring that necessary services start automatically at boot time. This capability is crucial for maintaining uptime and ensuring that applications and services are always available when the system restarts.

Systemd: The Heart of Service Management

With the introduction of CentOS 7, systemd became the init system, replacing the previous SysVinit system. Systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, and keeps track of processes using Linux control groups. Understanding systemd is essential for managing services and their behavior on boot.

Key Components of systemd

  • Unit files: Configuration files for services, sockets, devices, and other resources managed by systemd.
  • Targets: Group units together to achieve a specific state, similar to runlevels in SysVinit.
  • systemctl: The primary command-line tool to interact with systemd.

Enabling and Disabling Services

To control which services start at boot, you can use the systemctl command. Here’s how to enable or disable services:

sudo systemctl enable service_name.service
sudo systemctl disable service_name.service

When you enable a service, systemd creates a symbolic link for the service’s unit file in the appropriate target’s directory, indicating that the service should start when that target is reached during the boot process. Disabling a service removes this symbolic link.

Checking Service Status

Before enabling or disabling services, it’s often helpful to check their current status:

sudo systemctl status service_name.service

This command provides information about whether the service is active, loaded, and enabled to start on boot, along with recent log entries for the service.

Managing Custom Scripts and Legacy Services

Sometimes, you may need to ensure custom scripts or legacy services without native systemd support start at boot. For these cases, creating a custom unit file is the solution.

Creating a Custom Unit File

Here’s an example of a simple custom unit file for a hypothetical script located at /usr/local/bin/my_custom_script.sh:

Description=My Custom Script



After creating this file under /etc/systemd/system/ as my_custom_script.service, you would enable it just like any other service.

Utilizing Targets for Service Management

Targets are used to group services and other units together. They are similar to the concept of runlevels but more flexible. Common targets include graphical.target, multi-user.target, and network-online.target. By associating your service with the right target, you ensure it starts at the correct point during the boot process.

Example: Associating Service with Network-Online Target

If your service requires network availability, you might want it to start only after the network is online. You can do this by adding a directive to the service’s unit file:


Handling Dependencies and Order

In some cases, services depend on other services. Systemd allows you to specify the order and dependencies between services using directives such as After, Requires, and Wants within unit files.

Specifying Service Dependencies

For instance, if service_b.service depends on service_a.service, you would configure service_b.service like this:


Troubleshooting Common Issues

Occasionally, services may fail to start on boot due to various issues such as misconfigurations, missing dependencies, or conflicts. Logs are invaluable for troubleshooting these problems.

Viewing System Logs with journalctl

The journalctl command is used to view logs maintained by systemd. To see messages related to a specific service, use:

journalctl -u service_name.service

This command filters the logs to show only those related to the specified service, helping you diagnose startup issues.

Best Practices for Managing Services on Boot

Adhering to best practices ensures a smooth experience when managing services on CentOS. These include understanding the default services, avoiding unnecessary services to reduce security risks, and regularly checking service statuses and logs.

Maintaining a Lean Boot Process

Only enable services that are essential for your server’s operation. This not only improves boot times but also reduces potential attack vectors.

FAQ Section

How do I list all services enabled at boot?

Use the following command to list all enabled services:

systemctl list-unit-files --type=service --state=enabled

Can I set a service to start after a certain delay?

Yes, you can add a ExecStartPre directive with a sleep command in the service’s unit file to introduce a delay.

What is the difference between Requires and Wants?

Requires makes the dependent service essential, meaning if it fails, the dependent service won’t start. Wants is a weaker dependency and will attempt to start the dependent service even if the required service fails.

How do I customize which services start in a particular target?

You can create or edit target-specific override configuration files within /etc/systemd/system/ to manage which services start in a given target.

Is there a way to temporarily disable a service from starting on boot without permanently changing its configuration?

Yes, you can use the mask command to prevent a service from being started manually or on boot:

sudo systemctl mask service_name.service

To reverse this action, use unmask:

sudo systemctl unmask service_name.service


Leave a Comment

Your email address will not be published. Required fields are marked *

Comments Rules :

Breaking News