前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6 Linux 包管理以及 systemctl

6 Linux 包管理以及 systemctl

作者头像
Lemon黄
发布2023-11-30 11:16:25
2620
发布2023-11-30 11:16:25
举报
文章被收录于专栏:Lemon黄

本文我们将学习的是 Linux 中的包管理器以及强大的 systemctl命令,并了解 systemd在管理系统服务中的作用。

Linux 中的包管理器

包管理器是在 Linux 系统中安装、更新和删除软件报的重要工具。它们提供集中的软件包存储库并处理依赖关系,确保顺利高效的软件安装。

APT(Advanced Package Tool)

APT(高级打包工具)是一种广泛使用的包管理系统,主要用于 Ubuntu 等基于 Debian 的发行版。它提供了一个用户友好的命令行界面来与软件包管理系统交互。

使用 APT,可以执行各种操作,包括软件包的安装、更新和删除。APT 自动解决依赖关系,确保正确安装所有必需的软件包。

YUM(Yellowdog Updater Modified)

YUM(Yellowdog 更新程序修改版)是另一种流行的包管理系统,用于 CentOS 等基于 Red Hat(红帽)的发行版。它简化了软件包管理和依赖关系处理。

YUM 提供了用户管理包的命令行界面。可以使用 YUM 命令搜索包、安装、更新和删除它们。它负责解决包依赖性,确保安装过程顺利进行。

APT 和 YUM 都极大地简化了管理关键包的过程,使在不同 Linux 发行版上工作的 DevOps 工作变得高效且无忧。

Systemctl 和 Systemd

systemctl是一个命令行实用程序,用于管理采用systemd init系统的 Linux 发行版中的系统服务。systemd是一个系统和服务管理器,提供进程管理、日志记录和服务依赖项等高级功能。

systemd取代了传统的 sysv init系统,并提供增强的功能和对系统服务的控制。它支持并行服务启动、高效的依赖关系管理以及更好的监控和日志记录功能。

systemctlsystemd相关的关键概念如下:

  • 服务单元(Service Uints)systemd使用服务单元(扩展名为 .service的配置文件)来定义和管理服务。这些单元描述了服务的属性和行为。
  • 服务管理(Service Management)systemctl提供诸如 startstoprestartenabledisable等命令来管理服务。这些命令允许我们控制系统中服务的生命周期和行为。
  • 系统状态(System status) :可以使用 systemctl status 获取服务的详细信息,包括其当前状态、启用或禁用状态以及最近的日志条目。该功能有助于排除故障和监控服务。

systemctlsystemd提供了一种现代且高效的方法来管理 Linux 系统上的服务。它们在管理服务方面提供了更大的控制力、灵活性和一致性,是沃尔玛你能够更轻松地处理各种与服务相关的任务。

使用包管理安装 Docker 和 Jenkins

下面,我们将通过使用包管理器在 Ubuntu 上安装 Docker 和 Jenkins,加深我们对包管理器的知识的实践。

在 Ubuntu 上安装 Docker

使用 APT 在 Ubuntu 上安装 Docker,可按照以下步骤操作:

设置存储库
  1. 更新 apt软件包索引并安装软件包以允许 apt通过 Https 使用存储库:
代码语言:javascript
复制
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
  1. 添加 Docker 的官方 GPG 密钥:
代码语言:javascript
复制
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  1. 使用以下命令设置存储库:
代码语言:javascript
复制
 echo \
   "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
   "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新 apt包索引:
代码语言:javascript
复制
sudo apt-get update
  1. 安装 Docker 引擎,containerd 和 Docker Compose:
代码语言:javascript
复制
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动 Docker:
代码语言:javascript
复制
sudo systemctl start docker

在 Ubuntu 上安装 Jenkins

使用 APT 在 Ubuntu 上安装 Jenkins,可按照以下步骤操作:

  1. Jenkins 需要 Java 才能运行,因此我们将更新 Debian apt 存储库,安装 OpenJDK 11,并使用以下命令检查安装:
代码语言:javascript
复制
 sudo apt update
 sudo apt install openjdk-11-jre
 java -version
 openjdk version "11.0.20.1" 2023-08-24
 OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04)
 OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
  1. 接下来,我们就可以使用以下命令安装 Jenkins 长期支持版本:
代码语言:javascript
复制
 sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
  https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
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-get update
sudo apt-get install jenkins
  1. 启动 Jenkins 服务:
代码语言:javascript
复制
sudo systemctl start jenkins
  1. 在系统启动自动启动 jenkins:
代码语言:javascript
复制
sudo systemctl enable jenkins
  1. jenkins 现在应该已安装并在你的 ubuntu 系统上运行了。你可以通过打开浏览器输入:http://localhost:8080来访问它。

检查 Docker 服务的状态

现在 Docker 已经安装,我们可以使用 systemctl检查 Docker 服务的状态。

要检查 Docker 服务的状态,可以运行以下命令:

代码语言:javascript
复制
systemctl status docker

输出将显示有关 Docekr 服务当前状态的信息,包括它是否正在运行,已启动以及任何最近的日志信息。

代码语言:javascript
复制
root@huang-ubuntu:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-11-28 15:03:29 UTC; 24min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1630 (dockerd)
      Tasks: 7
     Memory: 24.3M
        CPU: 713ms
     CGroup: /system.slice/docker.service
             └─1630 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Nov 28 15:03:27 huang-ubuntu systemd[1]: Starting Docker Application Container Engine...
Nov 28 15:03:27 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:27.874467315Z" level=inf>Nov 28 15:03:27 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:27.876008569Z" level=inf>Nov 28 15:03:28 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:28.367600524Z" level=inf>Nov 28 15:03:29 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:29.139869418Z" level=inf>Nov 28 15:03:29 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:29.200860701Z" level=inf>Nov 28 15:03:29 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:29.201228267Z" level=inf>Nov 28 15:03:29 huang-ubuntu dockerd[1630]: time="2023-11-28T15:03:29.279347015Z" level=inf>Nov 28 15:03:29 huang-ubuntu systemd[1]: Started Docker Application Container Engine.

停止 Jenkins 服务

下面,我们来停止 jenkins 服务并查看下前后的状态显示。

要停止 Jenkins 服务,请运行以下命令:

代码语言:javascript
复制
sudo systemctl stop jenkins

在停止 Jenkins 之前显示的状态:

代码语言:javascript
复制
root@huang-ubuntu:~# systemctl status jenkins.service
● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
     Active: activating (start) since Tue 2023-11-28 15:29:59 UTC; 1min 11s ago
   Main PID: 5995 (java)
      Tasks: 41 (limit: 2221)
     Memory: 150.0M
        CPU: 16.078s
     CGroup: /system.slice/jenkins.service
             └─5995 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war>
Nov 28 15:30:13 huang-ubuntu jenkins[5995]: d981ea8b31ef481c9957d0f9798bed39
Nov 28 15:30:13 huang-ubuntu jenkins[5995]: This may also be found at: /var/lib/jenkins/sec>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: ***********************************************>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: ***********************************************>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: ***********************************************>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: WARNING: An illegal reflective access operation>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: WARNING: Illegal reflective access by org.codeh>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: WARNING: Please consider reporting this to the >Nov 28 15:30:13 huang-ubuntu jenkins[5995]: WARNING: Use --illegal-access=warn to enable wa>Nov 28 15:30:13 huang-ubuntu jenkins[5995]: WARNING: All illegal access operations will be >

在停止 Jenkins 之后显示的状态:

代码语言:javascript
复制
root@huang-ubuntu:~# systemctl stop jenkins.service
root@huang-ubuntu:~# systemctl status jenkins.service
○ jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2023-11-28 15:33:44 UTC; 1s ago
    Process: 6150 ExecStart=/usr/bin/jenkins (code=exited, status=143)
   Main PID: 6150 (code=exited, status=143)
     Status: "Jenkins stopped"
        CPU: 14.866s

Nov 28 15:33:43 huang-ubuntu jenkins[6150]:         at jenkins.model.Jenkins.<init>(Jenkins>Nov 28 15:33:43 huang-ubuntu jenkins[6150]:         at hudson.model.Hudson.<init>(Hudson.ja>Nov 28 15:33:43 huang-ubuntu jenkins[6150]:         at hudson.model.Hudson.<init>(Hudson.ja>Nov 28 15:33:43 huang-ubuntu jenkins[6150]:         at hudson.WebAppMain$3.run(WebAppMain.j>Nov 28 15:33:43 huang-ubuntu jenkins[6150]: Caused: hudson.util.HudsonFailedToLoad
Nov 28 15:33:43 huang-ubuntu jenkins[6150]:         at hudson.WebAppMain$3.run(WebAppMain.j>Nov 28 15:33:43 huang-ubuntu jenkins[6150]: 2023-11-28 15:33:43.957+0000 [id=24]        INF>Nov 28 15:33:44 huang-ubuntu systemd[1]: jenkins.service: Deactivated successfully.
Nov 28 15:33:44 huang-ubuntu systemd[1]: Stopped Jenkins Continuous Integration Server.
Nov 28 15:33:44 huang-ubuntu systemd[1]: jenkins.service: Consumed 14.866s CPU time.

了解 systemctl 和 service

systemctlservice都是用于管理 Linux 上的服务的命令行实用程序。但是,它们之间存在一些差异:

  • systemctl是用于管理使用 systemd的 Linux 发行版中的服务的主要命令行实用程序。它提供了更高级的特性和功能,例如服务依赖性管理和改进的日志记录。
  • service是一个向后兼容的命令。适用于 systemd和旧版 SysV init系统。它在许多系统上仍然可用,但逐渐被 systemctl取代。

为了比较特定服务的 systemctlservice的输出,我们以 Docker 为例。

运行以下命令,实用 systemctlservice检查 Docker 服务的状态:

代码语言:javascript
复制
systemctl status docker
service docker status

观察上面命令的输出中的差异(如果有,有可能是一样的)。那么将帮助你了解 systemctlservice之间的差异以及它们在不同 Linux 发行版中的用法。

以上就是本文介绍的内容,我们学习了 Linux 中的包管理器,以及使用 apt 安装了 Docker 和 Jenkins,并了解systemctlsystem两个命令,并执行了与服务管理相关的各种任务。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 莫奈黄 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux 中的包管理器
    • APT(Advanced Package Tool)
      • YUM(Yellowdog Updater Modified)
      • Systemctl 和 Systemd
      • 使用包管理安装 Docker 和 Jenkins
        • 在 Ubuntu 上安装 Docker
          • 设置存储库
        • 在 Ubuntu 上安装 Jenkins
        • 检查 Docker 服务的状态
        • 停止 Jenkins 服务
        • 了解 systemctl 和 service
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档