Kayode Oluwasegun
Kayode Oluwasegun

Follow

Kayode Oluwasegun

Follow
Running scripts on boot in Linux using systemd

Running scripts on boot in Linux using systemd

Kayode Oluwasegun's photo
Kayode Oluwasegun
·Apr 9, 2022·

2 min read

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.

 
Share this