What is a Linux Service? It is a program that runs in the background without user interaction. It usually stays running even after a computer reboot. An example is daily backing up a database from a production server. You run a task in the background that dumps the whole database and saves it to a computer.
For example, I will empty the trash on an Ubuntu desktop every minute.
Create a bash script to empty the trash , name it empty-trash.sh, save it in /opt.
Bash #! /bin/bash
rm -rf /home/ < usernam e > /.local/share/Trash/ *
Make it executable.
Bash sudo chmod +x /opt/empty-trash.sh
Create the service file empty-trash.service in /etc/systemd/system as root.
Bash sudo touch /etc/systemd/system/empty-trash.service
Next is to copy and paste this to the empty-trash.service file.
[ Unit ]
Description = Empty trash every minute
[ Service ]
ExecStart = bash /opt/empty-trash.sh
User =< usernam e >
[ Install ]
WantedBy = multi-user.target
The [Unit] section holds the description of the service file.
The [Service] section tells how the service should run
ExecStart directive is where we specify the command that we want to run which is the bash /opt/empty-trash.sh.
The User directive specifies the account under which the script will execute.
The [Install] section defines how systemd should manage the service during system startup or when it is enabled.
WantedBy with a value of multi-user.target means it will be linked to the system’s boot process.
Create a timer file empty-trash.timer in /etc/systemd/system as root.
Bash sudo touch /etc/systemd/system/empty-trash.timer
Next is to copy and paste this to the empty-trash.timer file.
[ Unit ]
Description = Run empty-trash service every minute
[ Timer ]
OnUnitActiveSec = 1 min
Persistent = true
[ Install ]
WantedBy = timers.target
The [Unit] section holds the description of the timer file.
The [Timer] section holds the configuration of the scheduling of the timer
OnUnitActiveSec directive means that the timer will trigger on the scheduled time
Persistent=true means the timer will compensate for the missed schedule if the system is powered off.
The [Install] section specifies how the timer will connect to the system
WantedBy=timers.target means the timer will be added to timers.target. timers.target organizes and starts all timers.
To modify the time, change the value of OnUnitActiveSec .
Run the command below to let the system know of a new service:
Bash sudo systemctl daemon-reload
Run the commands below to start the services:
Bash sudo systemctl start empty-trash.service
sudo systemctl start empty-trash.timer
Run the commands below if you want it to enable the service at startup:
Bash sudo systemctl enable empty-trash.service
sudo systemctl enable empty-trash.timer
Run the commands below if you want to check the status:
Bash sudo systemctl status empty-trash.service
sudo systemctl status empty-trash.timer
Run the commands below if you want to stop the services:
Bash sudo systemctl stop empty-trash.service
sudo systemctl stop empty-trash.timer
Now, you can check the trash from time to time to see if it empties.
Github Gist: https://gist.github.com/rinavillaruz/eb4b5230d5bb0fbded2e916ad0ca189c