DEV Community

Cover image for Running scripts on boot in Linux using systemd
Kayode
Kayode

Posted on • Originally published at Medium

4 3

Running scripts on boot in Linux using systemd

Introduction

In this article, we will configure our Linux computer to autorun a script on boot. For the purpose of this article, we will be making use of systemd services.

BTW, I use Arch Linux so if there’s any difference using a different distro, do not hesitate to leave a comment, please.

linux-when.gif

What is systemd

systemd is a suite of basic building blocks for a Linux system. It provides a system and a service manager that runs as PID and starts the rest of the system. systemd provides aggressive parallelisation capabilities, uses sockets and D-Bus activation for starting services, keep track of processes etc.

You can read more on systemd here.

The main command used to introspect and control systemd is systemctl.

Steps

  • First, we will create a Bash script in /usr/local/sbin, for instance [notifyRemote.sh](http://notifyRemote.sh) that would notify a remote machine once it’s booted.
  • We will make the file executable by running the command:

    sudo chmod +x /usr/local/sbin/notifyRemote.sh
    
  • Create a Unit file called startup.service in /etc/systemd/system/ to define a systemd service. You would need root access (sudo) to make changes or create these files.

  • We will make the file executable by running the command:

    sudo chmod +x /etc/systemd/system/startup.service
    
  • In /etc/systemd/system/startup.service we would paste the below into the file as such:

    [Unit]
    Description=My Startup
    
    [Service]
    ExecStart=/usr/local/sbin/notifyRemote.sh
    
    [Install]
    WantedBy=multi.user.target
    
  • The ExecStart is the most important key here because it points to the Bash program that will be run when the service is started.

  • We can test the service by running sudo systemctl start startup.service to confirm that the script will run

  • Now to enable services to run on boot, we will run the command

    sudo systemctl enable startup.service
    

Conclusion

Now we should successfully create a script that runs automatically anytime we start our Linux machine.

You can consult systemd man page for more information.

I hope you find this helpful. Please leave a like, comment and share if you find this helpful and also you can consider buying me a coffee too.

Billboard image

Monitor more than uptime.

With Checkly, you can use Playwright tests and Javascript to monitor end-to-end scenarios in your NextJS, Astro, Remix, or other application.

Get started now!

Top comments (0)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay