To enable a systemd service to start automatically at system boot in Linux, you need to follow a few steps. Systemd is a system and service manager that provides a range of features for managing processes and services in a Linux system. By configuring systemd, you can ensure that a specific service starts automatically when the system boots up.
Here is a detailed explanation of how to enable a systemd service to start automatically at system boot:
Step 1: Create a systemd Service Unit File
To begin, you need to create a systemd service unit file. This file contains the configuration for your service, including its dependencies, startup commands, and other parameters. The unit file should be placed in the appropriate directory based on your Linux distribution. Typically, this directory is /etc/systemd/system/. You can use any text editor to create the unit file, such as nano or vi.
For example, let's assume you want to create a service called "my_service" that runs a script located at /opt/my_script.sh. Open a terminal and run the following command to create the unit file:
bash sudo nano /etc/systemd/system/my_service.service
Step 2: Define the Service Unit File
In the unit file, you need to define various settings for your service. Here is an example of how the contents of the unit file might look like:
plaintext [Unit] Description=My Service After=network.target [Service] ExecStart=/opt/my_script.sh Restart=always [Install] WantedBy=multi-user.target
In the [Unit] section, you can provide a description for your service and specify any dependencies it may have. In this example, the service will start after the network.target is reached.
In the [Service] section, you define the command or script that should be executed when the service starts. The ExecStart parameter should point to the location of your script or the command you want to run. The Restart parameter ensures that the service is automatically restarted if it fails.
The [Install] section specifies the target that the service should be associated with. In this case, the multi-user.target ensures that the service starts during the system boot process.
Step 3: Reload and Enable the Service
After creating the unit file, you need to reload systemd's configuration to recognize the new service. Run the following command to reload the configuration:
bash sudo systemctl daemon-reload
Next, you can enable the service to start automatically at boot by running the following command:
bash sudo systemctl enable my_service
This command creates symbolic links from the appropriate target directory to the unit file you created. The service will now start automatically during system boot.
Step 4: Start and Verify the Service
To start the service immediately, run the following command:
bash sudo systemctl start my_service
You can verify the status of the service by running:
bash sudo systemctl status my_service
If everything is configured correctly, you should see the status as "active" or "running". Additionally, you can check the system logs for any error messages related to your service by using the journalctl command:
bash sudo journalctl -u my_service
That's it! You have successfully enabled a systemd service to start automatically at system boot. The service will now be launched each time the system is booted, ensuring its availability without manual intervention.
Other recent questions and answers regarding Advanced sysadmin in Linux:
- Apart from the mentioned commands, what other options and functionalities does the journalctl command offer? How can you access the manual page for journalctl?
- What is the role of the systemd journal in storing logs in Linux systems?
- What are the advantages and disadvantages of using the journalctl command to access logs compared to traditional plain text log files?
- What is the significance of the "-fu" flag in the "journalctl -fu [unit]" command? How does it help in real-time log monitoring?
- What is the purpose of the "journalctl -u [unit]" command in Linux system administration? How does it differ from the default "journalctl" command?
- Why is it important to run the cleanup commands with sudo privileges?
- What command can you use to restrict the cleanup of logs based on their size using the systemd journalctl tool?
- How can you specify the time measure when using the "–vacuum-time" option with the journalctl command?
- What command can you use to delete logs older than a certain time period using the systemd journalctl tool?
- How can you check the size of the systemd journal on a Linux system?
View more questions and answers in Advanced sysadmin in Linux

