Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
An example with an oneshot service on systemd. #systemd #systemd.service #oneshot


Services declared as oneshot are expected to take some action and exit immediatelly (thus, they are not really services, no running processes remain). A common pattern for these type of service is to be defined by a setup and a teardown action.

Let's create a example foo service that when started creates a file, and when stopped it deletes it.

Define setup/teardown actions

Create executable file /opt/foo/

echo "Setting up foo ..."
touch /tmp/foo-activated

Create executable file /opt/foo/

echo "Tearing down foo ..."
if [ -f /tmp/foo-activated ]; then
    rm /tmp/foo-activated
    echo "Doesnt seem to be up: Skipping ..."

Define the service unit

Now, we define the systemd unit file as /etc/systemd/system/foo.service. Note that we must specify RemainAfterExit=true so that systemd considers the service as active after the setup action is successfully finished.

Description=Setup foo



Reload the systemd daemon and start the service as normally (systemctl start foo.service). Check the status to verify that the correct actions are taking place.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.