Taking Control of Your Linux System: Exploring Package Management and systemctl

Oct 10, 2023ยท

4 min read

Your Linux system is like a well-oiled machine, and at the heart of its smooth operation are two trusty assistants - package managers and systemctl. They're the backstage crew that keeps your software up to date and your services running smoothly. Whether you're a Linux pro or just starting, these tools are your friends in the world of system management.

What is a package?

In Linux, a "package" is a software package that contains one or more programs or files designed for installation on a Linux-based operating system. These packages are typically bundled with all the necessary files, libraries, and metadata required for a specific software application to function correctly.

Different kinds of package managers

Linux distributions, such as Ubuntu, Debian, Red Hat, and CentOS, use package management systems to organize, distribute, and maintain software packages. The two most commonly used package management systems in Linux are:

  1. Debian Package Management (APT): Used by Debian, Ubuntu, and related distributions. Debian packages have the ".deb" file extension.

  2. Red Hat Package Management (RPM): Used by Red Hat, CentOS, Fedora, and related distributions. RPM packages have the ".rpm" file extension.

These package management systems provide tools and commands for installing, updating, and removing software packages. Some common package management commands include:

  • apt-get (Debian/Ubuntu) or yum (Red Hat/CentOS) for package installation and management.

  • dpkg (Debian/Ubuntu) or rpm (Red Hat/CentOS) for package manipulation.

  • yum (Yellowdog Updater, Modified) and dnf (Dandified Yum) as package managers for RPM-based distributions.

  • Example of Docker and Jenkins installations:

    sudo apt update

sudo apt install docker.io -y

sudo apt install openjdk-11-jdk

java --version

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

sudo apt update

sudo apt install -y jenkins

systemctl and systemd

systemctl and systemd are two closely related components in modern Linux systems, and they play crucial roles in managing system services and processes.


systemd serves as the init process, the first process that starts when the Linux kernel boots. It initializes the system, starts essential system services, and manages user sessions.


systemctl is a command-line tool used for interacting with systemd. It allows administrators to control system services, view their status, enable or disable them, and perform other management tasks.
systemctl commands are typically run with administrative privileges (using sudo or as the root user) because managing system services often requires elevated permissions.

Common systemctl commands include:

  • systemctl start <servicename>: Starts a service.

  • systemctl stop <servicename>: Stops a service.

  • systemctl restart <servicename>: Restarts a service.

  • systemctl enable <servicename>: Enables a service to start automatically at boot.

  • systemctl disable <servicename>: Disables a service from starting automatically at boot.

  • systemctl status <servicename>: Shows the status and logs of a service.

systemctl vs service

  • systemctl and service are both commands used in Linux for managing services, but they serve slightly different purposes and are often used in different contexts.

  • systemctl is a more modern and comprehensive tool for managing services in Linux. It is a part of the systemd init system, which is widely adopted in modern Linux distributions.

  • service is an older and more basic command for managing services in Linux. It is often used with init scripts that were common in older Linux distributions that didn't use systemd.

  • It provides a simplified and backward-compatible way of starting, stopping, and checking the status of services.

  • While service can manage system services, it is less versatile compared to systemctl and may not handle certain advanced features provided by systemd.

  • Example service commands:

    • Start a service: sudo service serviceName start

    • Stop a service: sudo service serviceName stop

    • Restart a service: sudo service serviceName restart

    • Check the status of a service: sudo service serviceName status

  • Example of Docker and Jenkins services:

    sudo systemctl status docker

sudo systemctl status jenkins

sudo systemctl stop jenkins

sudo systemctl status jenkins

In summary, while both systemctl and service can be used to manage services in Linux, systemctl is the more modern and versatile option, especially in distributions that use systemd as the init system.

Thank you!