Skip to main content
Engineering LibreTexts

08-C.8.1: Managing Linux Services - systemctl

  • Page ID
    35220
  • The systemctl Command

    systemctl is used to examine and control the state of “systemd” system and service manager.

    systemd is system and service manager for Unix like operating systems (most of the distributions, not all). As the system boots up, the first process created, i.e., init process with PID = 1, is systemd system that initiates the userspace services.

    Syntax :

    systemctl [ OPTIONS ] COMMAND [NAME...]

    Command Options:

    Option Meaning
    -t, --type= The argument in this case should be comma-separated list of unit types such as service and socket.
    --state= This is used to show only specified states, for example --state=failed, will show only failed units.
    -a, --all Show all units, regardless of their states.
    -r, --recursive While listing units, show units of local containers also.
    --show-types Shows types of sockets along with showing sockets.
    --job-mode This option controls how to deal with already queued jobs in case of queuing a new job.
    --fail Similar to --job-mode=fail.
    -i, --ignore-inhibitors When you request system shutdown or sleep state, it ignores inhibitor locks.
    -q, --quite Suppresses printing of results of various commands and the hints about the truncated lines.
    --no-block Don't wait synchronously for process to finish.
    --user Talk to service manager of calling user, instead of system.
    --no-wall Don't send wall message before power-off, halt or reboot.
    -f, --force When used with enable, override any conflicting symlinks.
    --message= When used with halt, poweroff, reboot, kexec, you can display a short message specifying reason of operation.
    -n, --lines When used with status, controls the number of journal lines to show.
    -H, --host= Execute operation remotely.

    systemctl has numerous sub-commands to assist in managing the various services. The following example shows the command's syntax, the command, followed by a sub-command (in the example it is stop), and then the service (NetworkManager.service):

    systemctl stop NetworkManager.service
    OR
    systemctl stop NetworkManager
    

    Below are some of the common sub-commands available. See the systemctl man page for more details.

    systemctl Sub-commands:

    Subcommand Meaning
    systemctl start foobar.service Used to start a service (not reboot persistent).
    systemctl stop foobar.service Used to stop a service (not reboot persistent).
    systemctl restart foobar.service Used to stop and then start a service.
    systemctl reload foobar.service When supported, reloads the config file without interrupting pending operations.
    systemctl condrestart foobar.service Restarts if the service is already running.
    systemctl status foobar.service Tells whether a service is currently running.
    ls /lib/systemd/system/*.service /etc/systemd/system/*.service Used to list the services that can be started or stopped.
    systemctl enable foobar.service Turns the service on, for start at next boot, or other trigger.
    systemctl disable foobar.service Turns the service off for the next reboot, or any other trigger.
    systemctl is-enabled foobar.service Used to check whether a service is configured to start or not in the current environment.

    Some example output - notice that the command only used "ssh" and not "sshd.service" - this is valid syntax.

    pbmac@pbmac-server $ systemctl status sshd
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
       Active: active (running) since Wed 2020-08-19 08:11:43 PDT; 1 weeks 1 days ag
     Main PID: 1132 (sshd)
        Tasks: 1 (limit: 4915)
       CGroup: /system.slice/ssh.service
               └─1132 /usr/sbin/sshd -D
    

    Adapted from:
    "systemctl in Unix" by Mandeep Singh, Geeks for Geeks is licensed under CC BY-SA 4.0

    • Was this article helpful?