Linux run service on start

How to Start, Stop & Restart Services in Ubuntu and Other Linux Distributions

Last updated October 29, 2020 By Sergiu 9 Comments

Services are essential background processes that are usually run while booting up and shut down with the OS.

If you are a sysadmin, you’ll deal with the service regularly.

If you are a normal desktop user, you may come across the need to restart a service like setting up Barrier for sharing mouse and keyboard between computers. or when you are using ufw to setup firewall.

Today I will show you two different ways you can manage services. You’ll learn to start, stop and restart services in Ubuntu or any other Linux distribution.

systemd vs init

Ubuntu and many other distributions these days use systemd instead of the good old init.

In systemd, you manage sevices with systemctl command.

In init, you manage service with service command.

You’ll notice that even though your Linux system uses systemd, it is still able to use the service command (intended to be used with init system). This is because service command is actually redirect to systemctl. It’s sort of backward compatibility introduced by systemd because sysadmins were habitual of using the service command.

I’ll show both systemctl and service command in this tutorial.

I am Ubuntu 18.04 here, but the process (no pun intended) is the same for other versions.

Method 1: Managing services in Linux with systemd

I am starting with systemd because of the obvious reason of its widespread adoption.

1. List all services

In order to manage the services, you first need to know what services are available on your system.

You can use the systemd command to list all the services on your Linux system:

This command will output the state of all services. The value of a service’s state can be enabled, disabled, masked (inactive until mask is unset), static and generated.

Combine it with the grep command and you can display just the running services:

Now that you know how to reference all different services, you can start actively managing them.

Note: in the commands should be replaced by the name of the service you wish to manage (e.g. network-manager, ufw etc.).

2. Start a service

To start a service in Linux, you just need to use its name like this:

3. Stop a service

To stop a systemd service, you can use the stop option of systemctl command:

4. Restart a service

To restart a service in Linux with systemd, you can use:

5. Check the status of a service

You can confirm that you have successfully executed a certain action by printing the service status:

Читайте также:  Windows 10 как услуг

This will output information in the following manner:

That was systemd. Let’s switch to init now.

Method 2: Managing services in Linux with init

The commands in init are also as simple as system.

1. List all services

To list all the Linux services, use

The services preceded by [ – ] are disabled and those with [ + ] are enabled.

2. Start a service

To start a service in Ubuntu and other distributions, use this command:

3. Stop a service

Stopping a service is equally easy.

4. Restart a service

If you want to restart a service, the command is:

5. Check the status of a service

Furthermore, to check if your intended result was achieved, you can output the service status:

This will output information in the following manner:

This will, most importantly, tell you if a certain service is active (running) or not.

Wrapping Up

Today I detailed two very simple methods of managing services on Ubuntu or any other Linux system. I hope this article was helpful to you.

Which method do you prefer? Let us know in the comment section below!

Like what you read? Please share it with others.

Источник

How to run a Linux Program on Startup

Here are the steps to have a program or script start on boot on a linux machine using Systemctl. I’m currently using this start several services on my raspberry pi. DigitalOcean wrote an article that goes into more detail on Systemctl.

  1. Run this command
  2. Paste in the command below. Press ctrl + x then y to save and exit

Enable the service

  • Start the service
  • Check the status of your service
  • Reboot your device and the program/script should be running. If it crashes it will attempt to restart
  • Share this:

    42 thoughts to “How to run a Linux Program on Startup”

    Thanks for this Tim – your articles helped me getting homebridge working perfectly! I was so lost without these articles – really appreciate it.

    I’m trying to take these learnings and get the alexa > sonos node.js service running explained here

    They give not so detailed instructions on how to get it up and running..

    Optional: You probably want to set this up to auto-start in the event it dies. Auto-launch is one of many solutions to make that happen. – https://www.npmjs.com/package/auto-launch

    As you may guess i’m completely lost!

    This is what I created – assuming I usually go to the folder home/pi/node_modules/sonos-http-api/
    then just type “npm start” and it starts..

    Description=Sonos Alexa Node Server

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=home/pi/node_modules/sonos-http-api/npm start
    Restart=on-failure
    RestartSec=10
    KillMode=process

    Thanks glad they have helped! I think you would want your command to first change to the directory then run npm start.

    You could also try npm start –prefix path/to/your/app

    Thanks for this article Tim.
    Sorry tehat I bother you.
    I’m making a service unit file that starts a Firefox script on boot. (I’m using Ubuntu)
    I’m need your help, please contact me to fix this unit.

    Opening web browser on boot

    I thought I might be able to get this done by making a service unit file that starts a firefox script on boot.

    Description=”Run firefox at boot”
    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple ExecStart=/usr/bin/google (“#!/bin/bash su ‘username’ -c /usr/bin/firefox-stable)
    Restart=on-failure
    RestartSec=10
    KillMode=process

    Читайте также:  Комбинация клавиш windows tab

    I don’t think you need the /usr/bin/google part

    What command is this? No one says what this command is supposed to be. Am I supposed to just “know” what goes there?

    YOUR_COMMAND_HERE can be whatever command you want to run on startup

    Thank you for this straight-forward article – it’s exactly what I’ve been searching for. I’ve written a daemon process in C but was having trouble with other complicated instructions in getting it to run as a system process. This worked first time!
    I hope you can understand the simple delight of an engineer of some thirty years experience on seeing a System OK LED start flashing on boot!

    Best regards,
    Peter

    That’s great to hear!! Glad it helped

    When i try to boot .net core app, it’s not working fully, any other way?

    Are you seeing any errors?

    This article has made a local hero at my place of work. Thanks a lot.

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=/root/EAP-7.1.0/bin/standalone.sh
    Restart=on-failure
    RestartSec=10
    KillMode=process

    That’s awesome! Glad it helped.

    Hi Tim,
    I tried your method on my application program on Debian OS. It is not working for me.
    My program is a GUI based application program, which is located in the folder of /home/linaro/. I run my application from Terminal is as below:
    ./my_app
    It works fine.

    Below is the service file my_app.service, which is stored in the folder of /ect/ststemd/system/
    Description=My_main_app

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=/home/linaro/my_app
    Restart=on-failure
    RestartSec=10
    KillMode=process

    It failed on start the service.
    The systemctl log is as below:
    [/etc/system/system/my_app.service:1] Assignment outside of section. Ignoring.
    [/etc/system/system/my_app.service:3] Assignment outside of section. Ignoring.
    [/etc/system/system/my_app.service:4] Assignment outside of section. Ignoring.
    [/etc/system/system/my_app.service:6] Unknown section ‘service’. Ignoring.
    my_app.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

    Would you please let me know what’s wrong with it?
    Thanks.

    Is there a formatting issue with the service file?

    I checked again. I can’t find out any formatting issue.

    Unfortunetly, this doesn’t work for me. I have the following service setup:
    Description=xbindkeys packege

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=/usr/bin/xbindkeys
    Restart=on-failure
    RestartSec=10
    KillMode=process

    But at boot nothing happens.

    Do you see any errors?

    Hi Tim,
    so if my Server.js file is in home/ubuntu/backend/Server.js my EXECSTART should be home/ubuntu/backend/node Server.js?

    Is home your user home folder? May need to be the full path.

    Hi Tim,
    i want to run a startup code for ZED board how could i do because in zed board there is no system and bashrc

    No sure about a ZED board. What operating system is I running ?

    Hi Tim – Been trying this method to get HomeBridge to launch on start vs. your prior post. I keep getting an error message when I start the service:

    $ sudo systemctl start home
    Failed to start home.service: Unit home.service is not loaded properly: Invalid argument.
    See system logs and ‘systemctl status home.service’ for details.

    When I go into the Log this is what I see:
    ● home.service
    Loaded: error (Reason: Invalid argument)
    Active: inactive (dead)

    Jun 17 08:37:15 raspberrypi systemd[1]: [/etc/systemd/system/home.service:1] Assignment outside of section. Ignoring.
    Jun 17 08:37:15 raspberrypi systemd[1]: [/etc/systemd/system/home.service:3] Assignment outside of section. Ignoring.
    Jun 17 08:37:15 raspberrypi systemd[1]: [/etc/systemd/system/home.service:4] Assignment outside of section. Ignoring.
    Jun 17 08:37:15 raspberrypi systemd[1]: [/etc/systemd/system/home.service:8] Executable path is not absolute, ignoring: homebridge
    Jun 17 08:37:15 raspberrypi systemd[1]: home.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

    Читайте также:  Tp link wifi adapter linux driver

    The command is as follows:

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=homebridge
    Restart=on-failure
    RestartSec=10
    KillMode=process

    Hey John, try adding the full path to the homebridge command. You should be able to use whereis homebridge

    Thanks. That sort of worked… It launches Homebridge on start. But it seems like its launches a different instance / config file than I setup in my user (pi). Do I fix that by changing the revised path (/usr/bin/homebridge)?

    Yes that should fix it

    Sorry for the stupid questions, but this is all new to me. If the user is “pi”, how would I update the path? the path “/usr/bin/homebridge” launched a version of Homebridge that didn’t have my config file.

    Hello Tim, I tried setting up pCloud on Ubuntu 16.04 with the walkthrough a few days ago, but something’s wrong and I don’t understand what it’s trying to tell me. Just to be clear, it has not been able to launch pCloud once since I set it up like this. I just didn’t find the time to post about it here. “ultra” is the name of my system.

    “`
    $ systemctl status pcloud

    ● pcloud.service
    Loaded: loaded (/etc/systemd/system/pcloud.service; enabled; vendor preset: enabled)
    Active: activating (auto-restart) (Result: exit-code) since Sam 2019-06-22 11:48:12 CEST; 1s ago
    Process: 8534 ExecStart=/home/thymaro/opt/pcloud/pcloud (code=exited, status=1/FAILURE)
    Main PID: 8534 (code=exited, status=1/FAILURE)
    CGroup: /system.slice/pcloud.service

    Jun 22 11:48:12 ultra systemd[1]: pcloud.service: Unit entered failed state.
    Jun 22 11:48:12 ultra systemd[1]: pcloud.service: Failed with result ‘exit-code’.

    First, how do you format code in this reply box?

    Maybe this helps identifying the problem:

    *************************************
    Description=Starts the pCloud service on startup.

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=/home/thymaro/opt/pcloud/pcloud
    Restart=on-failure
    RestartSec=10
    KillMode=process

    @TIM,
    i’m using a linux as well.

    I’m new to linux, python3 & Raspberry Pi. My forte is Windows & Visual Basic. I’m
    having problems setting up a service for the following.

    “/home/pi/test” – This is the script I want to run after the Raspberry Pi boots.
    It ensures the current directory is ‘/home/pi’ (for system data logging), then
    starts a terminal and runs a python3 program that monitors home system status
    (Network & AC power). The scripts are executable and work from a terminal and
    the GUI, and I’ve tried it both ways below:

    #!/bin/sh
    #
    chdir /home/pi
    /usr/bin/x-terminal-emulator -e /usr/bin/python3 /home/pi/HomeStat.py

    #!/bin/sh
    #
    cd /home/pi
    x-terminal-emulator -e python3 HomeStat.py

    “HomeStat.service” – The following is the service I set up per your instructions

    Wants=network.target
    After=syslog.target network-online.target

    [Service]
    Type=simple
    ExecStart=/home/pi/test
    Restart=on-failure
    RestartSec=10
    KillMode=process

    This is the status message I received

    ● HomeStat.service
    Loaded: loaded (/etc/systemd/system/HomeStat.service; enabled; vendor preset: enabled)
    Active: activating (auto-restart) (Result: exit-code) since Thu 2019-07-18 19:18:23 EDT; 9s ago
    Process: 1587 ExecStart=/home/pi/test (code=exited, status=1/FAILURE)
    Main PID: 1587 (code=exited, status=1/FAILURE)

    Jul 18 19:18:23 raspberrypi systemd[1]: HomeStat.service: Unit entered failed state.
    Jul 18 19:18:23 raspberrypi systemd[1]: HomeStat.service: Failed with result ‘exit-code’.

    I don’t understand what the status message is saying! Where do I find out information on these
    status messages? What is status=1/FAILURE? Is there a listing of these error
    codes with a breakdown or synopsis of the failure. Any help would be appreciated.

    Does chdir work? I believe that is a Windows command to change directories.

    Источник

    Оцените статью