Skip to content

Instantly share code, notes, and snippets.

@tstellanova
Last active September 26, 2023 09:43
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save tstellanova/7323116 to your computer and use it in GitHub Desktop.
Save tstellanova/7323116 to your computer and use it in GitHub Desktop.
How to setup a service to automatically run a python script when the BeagleBone Black (BBB) reboots. These instructions allow you to setup a python script to automatically start when the BeagleBone (running Angstrom linux with systemd) restarts.

Creating a service to startup at BeagleBone Black boot time:

  • Create a shell script such as /usr/bin/myFancyBash.sh:

      #!/bin/bash
    
      # this could be any runnable code or shell script, really
      /usr/bin/myFancyPython.py 
    

Note that the first line is critical.

  • Create a service file in /lib/systemd/myFancy.service such as:

      [Unit]
      Description=My Fancy Service
    
      [Service]
      Type=simple
      ExecStart=/usr/bin/myFancyBash.sh
    
      [Install]
      WantedBy=multi-user.target
    
  • Create a symbolic link between your script and a special location under /etc:

      ln -s /lib/systemd/myFancy.service /etc/systemd/system/myFancy.service
    
  • Make systemd aware of your new service

      systemctl daemon-reload
      systemctl enable myFancy.service
      systemctl start myFancy.service
    
  • Reboot the BeagleBone Black to see your script in action

  • If you wish to control the service at runtime, you can use systemctl commands:

      systemctl status myFancy.service
      systemctl stop myFancy.service
      systemctl start myFancy.service
      systemctl disable myFancy.service
    
@atulanandbel
Copy link

I have followed the steps and created
1: /usr/bin/atul_start.sh
2: /lib/systemd/system/atul_start_sr.service
3: ln -s /lib/systemd/system/atul_start_sr.service /etc/systemd/system/atul_start_sr.service
4: systemctl daemon-reload
systemctl enable atul_start_sr.service
systemctl start atul_start_sr.service

Observations:
1:The scripts "atul_start.sh" is working fine.
2: root@beaglebone:/usr/bin# "systemctl list-unit-files" is listing
atul_start_sr.service loaded active running My Auto Start Service

Issue: The service is not able to run the script on reboot.

@gajjar8055
Copy link

Hey, do you have any idea about a script run with virtual environment.

@prinand01
Copy link

prinand01 commented Jun 21, 2021

I have a python script which uses Adafruit_BBIO.GPIO
this works fine when I start the script from the cloud9 environment.
but when I try to schedule it like above, if fails stating import error: no module named Adafruit_BBIO.GPIO as GPIO
and when running from cloud9, it works like a charm ?!?!
I also tried moving it into the autorun folder, but that does not work either

@Sundbergarn
Copy link

If doing this for a bash script and executable inside a user account:
Replace:
ExecStart=/usr/bin/myFancyBash.sh
With, for example:
ExecStart=/home/debian/.../myFancyBash.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment