• [问题求助] repo.huaweicloud.com域名解析失败
    请问curl: (6) Could not resolve host: repo.huaweicloud.com无法解析域名该怎么解决呀?下图是我的sources.list文件配置: 下图是输入sudo apt update命令后的输出:下图是测试与华为云服务器的连接   
  • [技术干货] ubuntu部署DeepSeek-R1-转载
    1. Ollama 简介Ollama 是一个开源的本地化大模型部署工具,旨在简化大型语言模型(LLM)的安装、运行和管理。它支持多种模型架构,并提供与 OpenAI 兼容的 API 接口,适合开发者和企业快速搭建私有化 AI 服务。官网:https://ollama.com/Github:https://github.com/ollama/ollamaOllama 的主要特点包括:轻量化部署:支持在本地设备上运行模型,无需依赖云端服务。多模型支持:兼容多种开源模型,如 LLaMA、DeepSeek 等。高效管理:提供命令行工具,方便用户下载、加载和切换模型。跨平台支持:支持 Windows、macOS 和 Linux 系统。2. DeepSeek-R1 简介DeepSeek-R1 是由深度求索(DeepSeek)公司开发的高性能 AI 推理模型,专注于数学、代码和自然语言推理任务。其核心优势包括:强化学习驱动:通过强化学习技术显著提升推理能力,仅需少量标注数据即可高效训练。长链推理(CoT):支持多步骤逻辑推理,能够逐步分解复杂问题并解决。模型蒸馏:支持将推理能力迁移到更小型的模型中,适合资源有限的场景。开源生态:遵循 MIT 开源协议,允许用户自由使用、修改和商用。DeepSeek-R1 在多个基准测试中表现优异,性能对标 OpenAI 的 o1 正式版,同时具有更高的性价比。 3. 使用 Ollama 部署 DeepSeek-R1 的步骤3.1 安装 Ollama下载 Ollamacurl -fsSL https://ollama.com/install.sh | shAI写代码安装完成安装完成后,打开命令行工具,输入以下命令验证是否安装成功:ollama --versionAI写代码3.2 安装deepseek(base) panny@panny-Raider-GE76-12UHS:~$ ollama run deepseek-r1:7bAI写代码该命令会自动下载并加载模型,下载时间取决于网络速度和模型大小。下载完成后,可以使用以下命令查看模型信息:ollama listAI写代码该命令会列出本地已下载的模型及其状态 3.3 启动deepseek使用以下命令启动 DeepSeek-R1 模型:ollama run deepseek-r1:7bAI写代码启动后,模型会进入交互模式,用户可以直接输入问题并获取回答。3.4 使用 Open WebUI 增强交互体验安装安装 pip install open-webui 启动服务 open-webui serveAI写代码启动后,在浏览器中访问 http://localhost:8080/ 即可进入 Open WebUI 界面。选择模型并测试在 Open WebUI 界面中,选择已下载的 DeepSeek-R1 模型,即可开始对话测试。3.5 使用python脚本进行推理执行ollama serveAI写代码发现(openwebui-env) panny@panny-Raider-GE76-12UHS:~$ ollama serveError: listen tcp 127.0.0.1:11434: bind: address already in useAI写代码测试curl http://localhost:11434/api/tagsAI写代码返回 说明ollama已经在运行中编写python脚本import requests # 构造 prompt:你想问模型的问题prompt = "请用中文解释这段代码是否有问题:\n\nint main() {\n  set_speed(speed);\n  int speed = 0;\n}" # 发送 POST 请求到本地 Ollama 服务res = requests.post("http://localhost:11434/api/generate", json={    "model": "deepseek-r1:7b",    "prompt": prompt,    "stream": False}) # 打印模型的响应内容print("模型回答:\n", res.json()["response"])AI写代码执行python test_ollama.py————————————————                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                        原文链接:https://blog.csdn.net/hayyhh/article/details/151830110
  • [技术干货] 在Ubuntu中进行磁盘分区或合并的操作指南 --转载
    在 Ubuntu 中进行磁盘分区或合并以下操作均在 Ubuntu 22.04 LTS 上操作成功,其他版本的系统可以此作为参考。1.查看当前分区情况打开终端,输入以下命令来查看磁盘的分区情况:1sudo fdisk -l会查看到如下情况:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354Disk /dev/loop0:12.2 MiB,12791808 字节,24984 个扇区单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节 Disk /dev/loop1:505.09 MiB,529625088 字节,1034424 个扇区单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节     .    .    . Disk /dev/sda:447.13 GiB,480103981056 字节,937703088 个扇区Disk model: Colorful SL500 4单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xb729ad70 设备       启动      起点      末尾      扇区   大小 Id 类型/dev/sda1  *         2048   1126399   1124352   549M  7 HPFS/NTFS/exFAT/dev/sda2         1126400 124657224 123530825  58.9G  7 HPFS/NTFS/exFAT/dev/sda3       124657664 125837311   1179648   576M 27 隐藏的 NTFS WinRE/dev/sda4       125841345 937697984 811856640 387.1G  f W95 扩展 (LBA)/dev/sda5       125841408 937695565 811854158 387.1G  7 HPFS/NTFS/exFAT     .    .    . Disk /dev/sdb:931.51 GiB,1000204886016 字节,1953525168 个扇区Disk model: ST1000VX001-1HH1单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 4096 字节I/O 大小(最小/最佳):4096 字节 / 4096 字节磁盘标签类型:gpt磁盘标识符:99704150-A336-47F6-8E05-8A2D6F3C5F4F 设备          起点       末尾       扇区  大小 类型/dev/sdb1     2048    1050623    1048576  512M EFI 系统/dev/sdb2  1050624 1953523711 1952473088  931G Linux 文件系统  Disk /dev/loop8:91.69 MiB,96141312 字节,187776 个扇区单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节     .    .    .其中列出的 /dev/sda1 ~ /dev/sda5 表示的是 sda 磁盘共有 5 个分区,并展示了这 5 个分区的详细信息;/dev/sdb1 和 /dev/sdb2 表示的是 sdb 磁盘共有 2 个分区,并展示了这 2 个分区的详细信息。2.卸载目标分区如果这些分区已被挂载,需要先将它们卸载。可以使用以下命令来卸载分区(这里是卸载了 sda 磁盘的 5 个分区):12345sudo umount /dev/sda1sudo umount /dev/sda2sudo umount /dev/sda3sudo umount /dev/sda4sudo umount /dev/sda53.使用 fdisk 进行分区操作使用 fdisk 命令进入磁盘分区操作的交互模式(这里是对 sda 磁盘进行分区操作):1sudo fdisk /dev/sda输入 p 列出分区表,查看当前分区信息。可以看到如下信息:123456789101112131415命令(输入 m 获取帮助): pDisk /dev/sda:447.13 GiB,480103981056 字节,937703088 个扇区Disk model: Colorful SL500 4单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xb729ad70 设备       启动      起点      末尾      扇区   大小 Id 类型/dev/sda1  *         2048   1126399   1124352   549M  7 HPFS/NTFS/exFAT/dev/sda2         1126400 124657224 123530825  58.9G  7 HPFS/NTFS/exFAT/dev/sda3       124657664 125837311   1179648   576M 27 隐藏的 NTFS WinRE/dev/sda4       125841345 937697984 811856640 387.1G  f W95 扩展 (LBA)/dev/sda5       125841408 937695565 811854158 387.1G  7 HPFS/NTFS/exFAT输入 d 进入分区删除操作,然后按提示输入分区编号,即可删除不想要的分区。如:1234命令(输入 m 获取帮助): d分区号 (1-5, 默认  5): 1 分区 1 已删除。对每个想要删除的分区重复 d 命令,直到这些分区都被删除。删除分区后,输入 n 进入新建分区操作,可以选择主分区或逻辑分区(一个磁盘最多可以有 4 个主分区,逻辑分区数量不受限制),然后按提示先后输入新建分区的首区域和尾区域的扇区号(注意:不是直接指定空间大小),即可创建一个新的分区。如果要合并分区,就先删除不需要的分区,然后创建一个空间更大的新分区。4.格式化新分区建立新分区后,需要对它进行格式化(一般情况下都格式化为 ext4 文件系统):1sudo mkfs.ext4 /dev/[新分区的名称]
  • [技术干货] Ubuntu如何分配​​未使用的空间​ --转载
    1:原因发现Ubuntu的空间不够了,我给了他20G的空间,发现他用了10G,,通过lsblk 输出,发现没有未挂载的情况,只有未分配的空间;1234567891011121314root@szcb:~# lsblkNAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTSloop0                       7:0    0   87M  1 loop /snap/lxd/27037loop1                       7:1    0 63.9M  1 loop /snap/core20/2105loop2                       7:2    0 40.4M  1 loop /snap/snapd/20671loop3                       7:3    0 50.9M  1 loop /snap/snapd/24505loop4                       7:4    0 63.8M  1 loop /snap/core20/2571loop5                       7:5    0 89.4M  1 loop /snap/lxd/31333sda                         8:0    0   20G  0 disk├─sda1                      8:1    0    1M  0 part├─sda2                      8:2    0  1.8G  0 part /boot└─sda3                      8:3    0 18.2G  0 part  └─ubuntu--vg-ubuntu--lv 253:0    0   10G  0 lvm  /sr0                        11:0    1 1024M  0 rom设备路径​​: sda3(LVM 物理卷)​​总大小​​: 18.2G​​已分配逻辑卷​​: ubuntu--vg-ubuntu--lv(10G)​​剩余未分配空间​​: 约 ​​8.2G​​(这部分空间在 LVM 卷组中未分配给任何逻辑卷)2:操作123# 扩展现有逻辑卷(例如将 8.2G 全部分配给 ubuntu--lv)sudo lvextend -l +100%FREE /dev/ubuntu--vg/ubuntu--lvsudo resize2fs /dev/ubuntu--vg/ubuntu--lv  # 调整文件系统大小3:报错1234root@szcb:~# sudo lvextend -l +100%FREE /dev/ubuntu--vg/ubuntu--lv  Volume group "ubuntu--vg" not found  Cannot process volume group ubuntu--vg4:问题分析系统中实际存在的卷组名称可能不是 ubuntu--vg(双破折号),而是 ubuntu-vg(单破折号)。这是由于某些系统在安装时默认生成的 LVM 名称格式不同。5:解决问题:确认卷组名称​123root@szcb:~# sudo vgs  VG        #PV #LV #SN Attr   VSize  VFree  ubuntu-vg   1   1   0 wz--n- 18.22g 8.22g6:再次操作12345678root@szcb:~# sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv #扩展逻辑卷(逻辑卷名称是 ubuntu-lv)  Size of logical volume ubuntu-vg/ubuntu-lv changed from 10.00 GiB (2560 extents) to 18.22 GiB (4665 extents).  Logical volume ubuntu-vg/ubuntu-lv successfully resized.root@szcb:~# sudo resize2fs /dev/ubuntu-vg/ubuntu-lv # 调整文件系统大小resize2fs 1.46.5 (30-Dec-2021)Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing requiredold_desc_blocks = 2, new_desc_blocks = 3The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 4776960 (4k) blocks long.7:验证扩展是否成功1234567root@szcb:~# sudo lvs # 查看逻辑卷大小  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  ubuntu-lv ubuntu-vg -wi-ao---- 18.22groot@szcb:~# df -h /   # 查看根目录挂载点容量Filesystem                         Size  Used Avail Use% Mounted on/dev/mapper/ubuntu--vg-ubuntu--lv   18G  8.2G  8.8G  49% /root@szcb:~#
  • [技术干货] Ubuntu 22.04安装配置FTP服务器的详细教程 --转载
    一、安装 VSFTPD首先,咱得让系统知道有啥新软件包可以安装。打开终端,输入下面这行命令更新系统软件包列表:1sudo apt update这就像是给系统的 “软件小仓库” 来个大扫除,让它知道最新都有啥可用。更新完,咱接着安装 VSFTPD,输入:1sudo apt install vsftpd系统就会欢快地把 VSFTPD 安装到你的电脑里啦。二、备份原始配置文件在开始折腾 VSFTPD 的配置文件前,保险起见,先给原始文件做个备份。就像出门前给家里贵重物品拍个照留底一样,万一后面改错了还能恢复原样。在终端输入:1sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup这样,原始配置文件就被复制了一份,妥妥的!三、配置 VSFTPD接下来,要用文本编辑器打开 VSFTPD 的配置文件。这里咱用nano,简单又好用。在终端输入:1sudo nano /etc/vsftpd.conf(一)基本配置1.咱得允许本地用户登录到 FTP 服务器,在配置文件里找到或者添加这一行:1local_enable=YES这就好比给本地用户打开了 FTP 服务器的大门。2. 还要允许用户上传文件呢,找到或添加:1write_enable=YES这样用户就有了往服务器上传文件的 “钥匙”。3. 给本地用户设置个默认的文件掩码,方便管理文件权限,添加:1local_umask=0224.限制用户只能访问其主目录为了安全,咱得让用户只能在自己的主目录里活动,在配置文件里添加:1chroot_local_user=YES不过,为了让这个限制能正常工作,还得加上这一句:1allow_writeable_chroot=YES(二)SSL/TLS 设置1.先给服务器生成 SSL 证书,这可是给数据传输上了一把安全锁。在终端输入:1sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem按照提示输入一些信息,证书就生成好啦。另外,也要注意,如果您单独安装openssl,这时系统会自动生成响应证书,也就省却您的这步骤操作。2. 接着回到配置文件,开启 SSL/TLS 功能。添加下面这些行:1234567891011ssl_enable=YESrsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pemallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrequire_ssl_reuse=NOssl_ciphers=HIGH这下,数据在传输的时候就安全多啦。四、创建仅能登录 FTP 服务器的账户1.咱给 FTP 服务器创建一个专属用户,在终端输入:1sudo adduser ftpuser按照提示设置好用户密码。2. 给这个用户创建 FTP 目录,并且设置好权限,让用户能正常使用。输入:123sudo mkdir -p /home/ftpuser/ftpsudo chown -R ftpuser:ftpuser /home/ftpuser/ftpsudo chmod -R 755 /home/ftpuser/ftp注意,有的ubuntu版本会在创建用户时,自动建立用户目录/home/ftpuser。这样,用户就有了自己专属的 FTP 工作空间。五、防火墙设置咱得让防火墙允许 FTP 相关的端口通行,这里用ufw这个简单好用的防火墙工具。在终端依次输入:123sudo ufw allow 20/tcpsudo ufw allow 21/tcpsudo ufw allow 40000:50000/tcp这就像是给 FTP 服务在防火墙上开了几个专用的 “小门”。最后,把防火墙启用起来:1sudo ufw enable六、配置被动模式端口范围在vsftpd.conf配置文件里,咱还要指定被动模式的端口范围,添加下面两行:12pasv_min_port=40000pasv_max_port=50000这样,服务器在被动模式下就能正常工作啦。七、重启 VSFTPD 服务所有配置都弄好之后,得让 VSFTPD 服务重新启动一下,才能让这些新设置生效。在终端输入:1sudo systemctl restart vsftpd服务重启完成,新配置就开始发挥作用啦。八、验证配置现在,用一个 FTP 客户端,比如 FileZilla,来连接到 FTP 服务器。输入之前创建的ftpuser账户和密码,看看能不能顺利登录,能不能正常地上传和下载文件。如果一切顺利,那就说明咱的配置成功啦!九、检查服务状态最后,要是想看看 VSFTPD 服务是不是正常运行着,可以在终端输入:1sudo systemctl status vsftpd从显示的信息里就能知道服务的状态啦。好啦,小伙伴,到这里你就成功在 Ubuntu 22.04 上安装和配置好了 VSFTPD,是不是很有成就感?赶紧用起来吧!十、配置自定义ftp端口有时,处于安全考量或系统资源限制,不允许开发20、21端口,需要配置其它端口,方法如下:在/etc/vsftpd.conf配置文件中,找到listen_port参数(如果没有就手动添加),比如将端口号设为 2121,添加或修改为:1listen_port=2121另外,如果启用了 SSL/TLS,还需确保 SSL/TLS 相关端口也做了相应调整。例如原本 SSL/TLS 端口为 990,若整体调整端口,可将其修改为新的端口,如 9900(需与你的整体规划匹配) ,并在配置文件中修改:1ssl_port=9900注意:有的FTPS客户端不支持自定义ssl_port端口,所以尽可能不要用此选项(不要用这条命令),系统会默认的用990端口作为ssl_port端口。 
  • [技术干货] Ubuntu软件仓库与更新源配置指南 --转载
    一、软件仓库基础知识软件仓库的作用Ubuntu 通过预设的软件仓库(Repository)提供软件包,包含系统核心组件、第三方应用及安全更新。仓库分为:Main:官方维护的自由开源软件Universe:社区维护的自由开源软件Restricted:专有硬件驱动Multiverse:非自由版权软件更新源(Sources)更新源是仓库的服务器地址列表,默认指向 Ubuntu 官方服务器或镜像站点。配置文件位于:/etc/apt/sources.list/etc/apt/sources.list.d/*.list(第三方源的独立文件)二、仓库组件说明每行以 deb 或 deb-src 开头:deb:二进制软件包仓库(普通用户使用)deb-src:源代码包仓库(开发者或需要编译时使用,通常可禁用)仓库行格式:1deb [选项] 镜像地址 Ubuntu版本代号 仓库组件仓库分类主仓库focal:Ubuntu 20.04 LTS(Focal Fossa)的基础仓库。组件:main(官方维护)、universe(社区维护)、restricted(专有驱动)、multiverse(非自由软件)。更新仓库focal-updates:提供正式版软件更新。focal-security:关键安全更新(必须启用)。focal-backports:向后移植的新功能(非必需)。focal-proposed:测试中的候选更新(不建议启用,可能导致系统不稳定)。三、配置更新源的方法1. 图形化工具操作步骤:打开 软件和更新(software-properties-gtk)在 Ubuntu 软件 选项卡中:选择下载服务器(如 mirrors.aliyun.com)勾选仓库组件(main/universe等)点击 关闭 → 自动刷新软件列表。2. 命令行工具查看当前源:12grep -v '^#' /etc/apt/sources.list  # 显示有效仓库地址ls /etc/apt/sources.list.d/         # 查看第三方源文件修改源文件:123sudo apt edit-sources              # 使用默认编辑器修改# 或手动编辑:sudo nano /etc/apt/sources.list添加/删除第三方仓库:123456# 添加 PPA(个人软件包存档)sudo add-apt-repository ppa:user/ppa-name# 删除 PPAsudo add-apt-repository --remove ppa:user/ppa-name# 直接删除 .list 文件:sudo rm /etc/apt/sources.list.d/example.list四、镜像源替换示例1. 替换为国内镜像(如阿里云)编辑 /etc/apt/sources.list,替换默认 URL:1sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list或手动修改为:123deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse(根据系统版本替换 jammy,如 22.04 为 jammy,20.04 为 focal)2. 企业环境代理配置若需通过代理访问仓库,在 /etc/apt/apt.conf.d/ 下创建文件(如 10proxy):1Acquire::http::Proxy "http://proxy.example.com:8080";五、仓库密钥管理第三方源可能需验证 GPG 密钥:1234567# 添加密钥(旧方法,已逐步淘汰)sudo apt-key add keyfile.asc  # 推荐新方法:将密钥放入 /usr/share/keyrings/sudo gpg --dearmor -o /usr/share/keyrings/example.gpg keyfile.asc# 在 .list 文件中注明密钥路径:deb [signed-by=/usr/share/keyrings/example.gpg] https://example.com/repo/ stable main六、常见问题处理更新错误执行 sudo apt update 时若报错,检查仓库地址是否拼写错误。清除无效列表:sudo rm /var/lib/apt/lists/*partial/*软件包无法找到确认仓库组件是否启用(如 universe)。检查系统版本是否匹配(lsb_release -a)。更新速度慢使用 netselect-apt 测试最快镜像:12sudo apt install netselect-aptsudo netselect-apt七、最佳实践备份配置:修改前备份源文件:1sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak谨慎添加第三方源:仅信任官方或知名社区源,避免系统不稳定。定期清理:移除不再使用的 PPA 或第三方仓库。
  • [技术干货] Ubuntu开机出现黑屏现象的常见解决方案 --转载
    一、问题描述在一些 Ubuntu 用户的电脑中,系统可能会出现开机后显示黑屏的情况。此时系统仍然在运行,但由于显示问题,用户无法进入图形界面。这种问题通常发生在更新系统或更换硬件驱动之后,或者在某些显卡配置和驱动不兼容的情况下发生。二、解决方案1. 检查显卡驱动显卡驱动问题是导致黑屏现象的常见原因。如果你使用的是 NVIDIA 显卡,系统可能没有正确安装或启用适当的驱动。为了解决这个问题,可以通过以下步骤检查和更新显卡驱动。解决步骤:首先,通过按 Ctrl + Alt + F3 进入 tty 界面(一个命令行界面)。登录后,首先更新你的软件包列表:12sudo apt updatesudo apt upgrade如果你使用的是 NVIDIA 显卡,可以通过以下命令安装推荐的驱动:1sudo ubuntu-drivers autoinstall安装完成后,重启计算机:1sudo reboot如果你的显卡是 AMD 或 Intel,确保你安装了正确的驱动程序,可以参考相关文档进行安装。2. 修复 GRUB 配置GRUB 引导加载程序负责加载操作系统。如果 GRUB 配置文件损坏或有错误,可能导致系统无法正常启动。可以通过修改 GRUB 配置文件来修复此问题。解决步骤:进入 tty 界面(按 Ctrl + Alt + F3)。登录后,编辑 GRUB 配置文件:1sudo nano /etc/default/grub查找 GRUB_CMDLINE_LINUX_DEFAULT,将其值修改为以下内容:1GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"这里的 nomodeset 参数可以禁用内核模块对显卡驱动的自动加载,帮助解决与显卡驱动相关的问题。保存并退出编辑器,然后更新 GRUB 配置:1sudo update-grub最后,重启计算机:1sudo reboot3. 使用恢复模式如果系统依然无法启动,可以通过进入恢复模式来修复系统。恢复模式会加载一个精简的环境,允许你进行故障排除和修复。解决步骤:在启动时,按住 Shift 键进入 GRUB 菜单。在 GRUB 菜单中,选择 Advanced options for Ubuntu(高级选项)。在下一个菜单中,选择带有 (recovery mode) 的内核版本。系统会启动到一个恢复菜单,在这里你可以选择进行文件系统检查(fsck),修复损坏的包(dpkg),或者仅以安全模式启动。
  • [技术干货] Ubuntu系统中软件卸载与清理的终极指南 --转载
    1. 基础知识Ubuntu 系统中软件的常见安装方式:APT:通过 apt 或 apt-get 管理软件包,适用于 .deb 包。DPKG:底层包管理工具,apt 依赖它,常用于手动安装的 .deb 包。Snap:Ubuntu 推广的容器化包管理。Flatpak:跨发行版的容器化包管理。源码安装:通过编译源码安装,通常需要手动管理。AppImage:无需安装的便携式应用程序。卸载时需注意:选择正确的卸载命令(如 apt remove、snap remove)。清理依赖、缓存和用户目录中的残留文件。验证卸载是否成功,防止遗漏。2. 查找软件包名在卸载前,确认软件的准确包名或ID非常重要。以下是常用方法:通过 apt 查找:12apt search <关键词>dpkg -l | grep <关键词>示例:查找 VLC 的包名1dpkg -l | grep vlc通过 Snap 查找:1snap list通过 Flatpak 查找:1flatpak list检查用户目录(如需清理配置):123ls -a ~/.config | grep <关键词>ls -a ~/.local/share | grep <关键词>ls -a ~/.cache | grep <关键词>提示:如果不确定软件的安装方式,可尝试以上命令逐一检查。3. 使用 APT 卸载软件APT 是 Ubuntu 默认的包管理工具,适用于通过软件中心、命令行或 PPA 安装的软件。3.1 卸载软件(保留配置)适用场景:仅删除软件本体,保留配置文件以便日后复用。命令:1sudo apt remove <软件包名>示例:1sudo apt remove vlc验证:12which vlcdpkg -l | grep vlc若返回空或无相关信息,表示卸载成功。3.2 彻底卸载(删除配置)适用场景:删除软件及其系统级配置文件,推荐默认使用。命令:1sudo apt purge <软件包名>示例:1sudo apt purge vlc验证:同上。注意:apt purge 不清理用户目录(如 ~/.config/vlc)中的配置,需手动删除(见 3.5)。3.3 清理依赖适用场景:移除卸载后不再需要的依赖包。命令:1sudo apt autoremove验证:1sudo apt autoremove --dry-run检查是否还有可清理的依赖。3.4 清理缓存适用场景:释放 /var/cache/apt/archives 中下载的 .deb 包空间。命令:清理过时缓存:1sudo apt autoclean清理所有缓存:1sudo apt clean验证:1du -sh /var/cache/apt/archives确认缓存目录已清空。3.5 清理用户目录残留适用场景:删除软件在用户目录中的配置文件和缓存。步骤:检查常见目录:123ls -a ~/.config | grep <软件名>ls -a ~/.local/share | grep <软件名>ls -a ~/.cache | grep <软件名>删除相关文件:123rm -rf ~/.config/<软件相关目录>rm -rf ~/.local/share/<软件相关目录>rm -rf ~/.cache/<软件相关目录>示例:12rm -rf ~/.config/vlcrm -rf ~/.cache/vlc注意:删除前确认文件无重要数据,必要时备份。4. 使用 DPKG 卸载软件DPKG 适用于手动安装的 .deb 包或 APT 无法处理的情况。查找已安装包:1dpkg -l | grep <关键词>卸载软件(保留配置):1sudo dpkg -r <软件包名>修复依赖:12sudo apt -f installsudo apt autoremove验证:1dpkg -l | grep <软件包名>若无输出,表示卸载成功。注意:优先使用 apt 卸载,DPKG 更适合特殊场景。5. 使用 Snap 卸载软件Snap 是 Ubuntu 的容器化包管理方式。查看已安装 Snap 软件:1snap list卸载 Snap 软件:1sudo snap remove <软件名>清理残留(可选):1sudo rm -rf /var/lib/snapd/snap/<软件名>验证:1snap list | grep <软件名>若无输出,表示卸载成功。卸载 Snapd(可选):如果不再使用 Snap:12sudo apt purge snapdrm -rf ~/snap注意:Snap 卸载通常会自动清理大部分文件,但旧版本可能残留,需手动检查。6. 使用 Flatpak 卸载软件Flatpak 是跨发行版的容器化包管理方式。查看已安装 Flatpak 应用:1flatpak list卸载应用:1flatpak uninstall <应用ID或软件名>清理无用运行时:1flatpak uninstall --unused清理用户目录残留:1rm -rf ~/.var/app/<应用ID>验证:1flatpak list | grep <软件名>若无输出,表示卸载成功。注意:Flatpak 的应用ID 通常为 com.example.App,卸载时需使用完整ID。7. 卸载源码安装的软件源码安装的软件没有包管理器管理,需手动删除。定位安装目录:通常在 /usr/local、/opt 或用户指定的目录。检查安装时的 make install 记录或 README 文件。删除文件:1sudo rm -rf /usr/local/<软件目录>清理用户配置:12rm -rf ~/.config/<软件名>rm -rf ~/.local/share/<软件名>验证:1which <软件名>若返回空,表示卸载成功。注意:源码安装的软件可能涉及系统库,删除前确认不会破坏依赖。8. 卸载 AppImage 软件AppImage 是无需安装的便携式应用。删除 AppImage 文件:找到存储位置(如 ~/Downloads 或自定义目录):1find ~/ -name "*.AppImage"删除:1rm ~/path/to/<软件名>.AppImage清理残留配置:12rm -rf ~/.config/<软件名>rm -rf ~/.local/share/<软件名>验证:确认 .AppImage 文件已删除。注意:AppImage 不影响系统文件,卸载后无需清理依赖。9. 清理系统级残余9.1 清理旧内核适用场景:释放旧内核占用的空间。查看当前内核:1uname -r列出已安装内核:1dpkg --list | grep linux-image删除旧内核:12sudo apt remove linux-image-<版本号>sudo apt autoremove更新引导:1sudo update-grub9.2 清理第三方源(PPA)查看源列表:1ls /etc/apt/sources.list.d/删除无用 PPA:1sudo rm /etc/apt/sources.list.d/<文件名.list>更新源:1sudo apt update10. 常用组合命令10.1 APT 软件彻底卸载12345sudo apt purge <软件包名>sudo apt autoremovesudo apt cleanrm -rf ~/.config/<软件名>rm -rf ~/.cache/<软件名>10.2 Snap 软件卸载12sudo snap remove <软件名>rm -rf ~/snap/<软件名>10.3 Flatpak 软件卸载123flatpak uninstall <应用ID>flatpak uninstall --unusedrm -rf ~/.var/app/<应用ID>11. 故障排查找不到包名:使用 dpkg -l | grep <关键词> 或 apt search <关键词> 查找。检查 Snap 或 Flatpak 列表。依赖破损:12sudo apt -f installsudo apt autoremove卸载失败:确认是否有运行中的进程:12ps aux | grep <软件名>kill -9 <进程ID>重新尝试卸载。Snap/Flatpak 无法卸载:确保 snapd 或 flatpak 服务正常,或重新安装后卸载。12. 最佳实践优先使用 apt purge:减少配置文件残留。定期清理缓存:每月运行 apt autoremove 和 apt autoclean。验证卸载:使用 which 或包管理器命令确认软件已移除。备份重要配置:清理用户目录前,备份 .config 中的关键文件。谨慎操作系统文件:避免误删 /etc 或 /usr 中的共享文件。总结通过本指南,你可以轻松卸载 Ubuntu 系统中的软件并清理残留。核心步骤:确认安装方式:APT、Snap、Flatpak、源码或 AppImage。执行卸载:使用对应命令(如 apt purge、snap remove)。清理残留:处理依赖、缓存和用户目录文件。验证结果:确保软件和相关文件已完全移除。
  • [技术干货] ubuntu24.04设置静态IP地址的方法教学 --转载
    简洁版快速解决问题1.编辑配置文件:进入路径/etc/netplan编辑文件sudo vim /etc/netplan/01-netcfg.yaml ,没有的话就新建即可。2.禁用动态IP:确保你的Netplan配置禁用了DHCP:123456789101112131415network:  version: 2  renderer: networkd  ethernets:    ens33:  #修改为你的实际接口名字      dhcp4: no      addresses:        - 192.168.3.200/24      routes:        - to: default          via: 192.168.3.1      nameservers:        addresses:          - 8.8.8.8          - 8.8.4.4应用Netplan配置:1sudo netplan apply重启网络服务(可选):1sudo systemctl restart systemd-networkd验证配置:1ip addr 可以看到ens33就有这个静态IP地址了。详细版解决问题教程对设置静态IP地址的详细解释、扩展,以及为什么会出现动态IP导致问题的说明:动态IP问题的原因动态IP的工作原理动态IP是通过 DHCP(Dynamic Host Configuration Protocol) 自动分配的。它的优点是简化了IP地址的管理,但也有以下缺点:1.地址租约时间:DHCP分配的IP地址有一个租约时间(lease time)。在租约到期后,DHCP服务器可能会分配一个不同的IP地址给同一设备。例如:VM虚拟机启动时,DHCP服务器可能每次分配不同的IP地址。结果:本地测试服务依赖的IP地址可能发生变化,导致连接失败。2.IP地址冲突:在某些情况下,如果有多个设备尝试连接,DHCP可能会分配不同的地址范围,这可能导致地址冲突或无法绑定固定IP。3.服务依赖:某些服务(如数据库、Web服务器等)通常需要固定的IP地址。如果使用动态IP,服务端配置会失效,影响系统的正常运行。为什么需要静态IP1.服务可靠性:本地测试或服务器环境通常依赖固定IP。静态IP能确保服务端地址不变,便于其他客户端访问。2.安全性:使用静态IP可以更精确地设置防火墙规则或访问控制规则。3.网络管理:静态IP可以帮助管理员更好地控制网络设备的分布和状态。设置静态IP地址的详细步骤1. 定位Netplan配置文件在Ubuntu 20.04及以上版本(包括24.04),Netplan用于管理网络配置。Netplan的配置文件通常位于 /etc/netplan/ 目录中,文件名一般以 .yaml 结尾,例如 01-netcfg.yaml 或 50-cloud-init.yaml。如果文件不存在,可以创建一个新的配置文件:1sudo vim /etc/netplan/01-netcfg.yaml2. 配置静态IP地址以下是一个静态IP的Netplan配置示例:123456789101112131415network:  version: 2  renderer: networkd  # 可选,适用于server版本;desktop版本可用NetworkManager  ethernets:    ens33:  # 替换为你的网络接口名称,可通过 `ip addr` 查看      dhcp4: no  # 禁用动态IP      addresses:        - 192.168.3.200/24  # 静态IP地址和子网掩码      routes:        - to: default          via: 192.168.3.1  # 网关地址      nameservers:        addresses:          - 8.8.8.8  # Google公共DNS          - 8.8.4.4  # Google备用DNS3. 应用Netplan配置使用以下命令让新配置生效:1sudo netplan apply4. 重启网络服务(可选)如果应用后发现网络未生效,可尝试重启相关服务:1sudo systemctl restart systemd-networkd5. 验证配置运行以下命令查看网络接口状态,确认静态IP是否生效:1ip addr输出示例:2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000    inet 192.168.3.200/24 brd 192.168.3.255 scope global ens33       valid_lft forever preferred_lft foreverinet 192.168.3.200/24:表示静态IP已经成功绑定。valid_lft forever:表示租约时间为永久(静态IP)。Netplan配置参数详解1.addresses:配置IP地址,格式为 IP地址/子网掩码。例如:192.168.3.200/24,其中 /24 表示子网掩码为255.255.255.0。2.routes:配置默认路由,用于访问外部网络。to: default:指定默认路由。via: 192.168.3.1:网关地址。3.nameservers:配置DNS服务器。例如:8.8.8.8 和 8.8.4.4 是Google的公共DNS服务器。4.dhcp4:用于启用或禁用IPv4的动态IP分配。yes:启用DHCP。no:禁用DHCP,手动配置静态IP。动态IP与静态IP的比较特性动态IP静态IP配置自动分配需要手动配置稳定性租约到期可能改变固定不变适用场景普通用户、临时设备服务器、测试环境、本地服务优点简单易用,节省地址资源稳定可靠,便于管理缺点可能因变更导致服务中断配置复杂,易出错
  • [技术干货] Ubuntu如何修改Swap交换空间大小 ---转载
    一、查看本机Swap交换空间的内存大小命令如下1free -m执行结果如下:1234longzhiye@longzhiye-laptop:~$ free -m              total        used        free      shared  buff/cache   availableMem:          31995         374       30603           9        1016       31142Swap:           976          65         911可以看到本机的Swap空间为976M左右,即1G空间。下面我们将其扩大64G二、创建Swap文件1sudo -i输入密码后,切换root。1mkdir /swap建立swap文件夹1cd /swap/进入到swap文件夹1sudo dd if=/dev/zero of=swapfile bs=64M count=1k建立swapfile,大小为bs*count = 64M * 1k = 64G1sudo mkswap -f swapfile将生成的文件转换为Swap文件执行结果如下:123456789101112longzhiye@longzhiye-laptop:~$ sudo -i[sudo] longzhiye 的密码: root@longzhiye-laptop:~# cd /root@longzhiye-laptop:/# mkdir /swaproot@longzhiye-laptop:/# cd swap/root@longzhiye-laptop:/swap# sudo dd if=/dev/zero of=swapfile bs=64M count=1k记录了1024+0 的读入记录了1024+0 的写出68719476736 bytes (69 GB, 64 GiB) copied, 276.311 s, 249 MB/sroot@longzhiye-laptop:/swap# sudo mkswap -f swapfileSetting up swapspace version 1, size = 64 GiB (68719472640 bytes)无标签, UUID=c7feaf13-7f02-4941-a07f-86a43bdf3ef5 三、激活Swap文件12sudo swapon swapfilefree -m激活Swap文件,并重新查看Swap空间 内存执行结果如下:123456root@longzhiye-laptop:/swap# sudo swapon swapfileswapon: /swap/swapfile:不安全的权限 0644,建议使用 0600。root@longzhiye-laptop:/swap# free -m              total        used        free      shared  buff/cache   availableMem:          31995         381         374           9       31238       31065Swap:         66512          64       66448可以看到Swap空间内存从1G变为64G = 我们扩大的64G+原始的1G。四、设置为永久Swap未做此步骤,重启之前的设置都失效!!!!1sudo gedit /etc/fstab更改swap路径。12345678910111213# /etc/fstab: static file system information.## Use 'blkid' to print the universally unique identifier for a# device; this may be used with UUID= as a more robust way to name devices# that works even if disks are added and removed. See fstab(5).## <file system> <mount point>   <type>  <options>       <dump>  <pass># / was on /dev/sda2 during installationUUID=b726da21-83a0-497b-b3eb-a09f16403d60 /               ext4    errors=remount-ro 0       1# /boot/efi was on /dev/sda1 during installationUUID=C0BE-3630  /boot/efi       vfat    umask=0077      0       1#UUID=c7bb6d12-b247-4119-9c27-797f9995884e none            swap    sw              0       0/swap/swapfile            swap            swap    sw              0       0 五、扩展如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令:1sudo swapoff swapfile如果需要一直保持这个 swap ,可以把它写入 /etc/fstab 文件。1/swap/swapfile /swap swap defaults 0 0
  • [区域初赛赛题问题] 线上出现unexpected_eoln
    在windows本地使用sample_extra数据集能够正常运行并且在合理时间内全部跑完,但是在线上测试中出现unexpected_eoln。
  • [问题求助] 使用eciot-ova脚本制作LXC容器运行build_sdk_base.sh报错
    使用eciot-ova脚本制作LXC容器运行build_sdk_base.sh报错Step 1/10 : FROM debian:busterGet "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  • [技术干货] 【Docker】在 Ubuntu 上安装 Docker 的详细指南-转载
     Docker 是一个开源的平台,可以让开发者打包应用及其依赖项为一个可移植的容器。本文将详细介绍如何在 Ubuntu 上安装 Docker,包括安装步骤、常见命令以及一些注意事项。  一、准备工作 在开始之前,请确保您的系统是最新的,并且已经安装了支持的 Ubuntu 版本(例如 Ubuntu 20.04 或 22.04)。可以使用以下命令来更新系统:  sudo apt update sudo apt upgrade -y 1 2 二、检查系统版本 为了确认您的 Ubuntu 版本,您可以运行以下命令:  lsb_release -a 1 三、安装 Docker 1. 安装必要的依赖 在安装 Docker 之前,我们需要安装一些必要的依赖包。运行以下命令:  sudo apt install apt-transport-https ca-certificates curl software-properties-common 1 2. 添加 Docker 的官方 GPG 密钥 通过以下命令添加 Docker 的官方 GPG 密钥,以确保下载的软件包的完整性:  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 1 3. 添加 Docker 的 APT 源 接下来,我们需要添加 Docker 的 APT 源到您的系统中:  sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 1 4. 更新 APT 包索引 添加源后,更新 APT 包索引:  sudo apt update 1 5. 安装 Docker CE 现在可以安装 Docker 社区版(Docker CE):  sudo apt install docker-ce 1 6. 验证 Docker 是否安装成功 安装完成后,您可以运行以下命令来验证 Docker 是否成功安装:  sudo systemctl status docker 1 如果 Docker 正在运行,您将看到类似以下的输出:  ● docker.service - Docker Application Container Engine    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)    Active: active (running) 1 2 3 四、启动与测试 Docker 1. 启动 Docker 服务 如果 Docker 服务没有自动启动,可以手动启动它:  sudo systemctl start docker 1 2. 运行 Hello World 容器 您可以使用以下命令来测试 Docker 是否工作正常:  sudo docker run hello-world 1 如果一切正常,您应该会看到一条欢迎消息。  五、设置 Docker 自动启动 1. 启用 Docker 服务 您可以使用以下命令启用 Docker 服务,使其在系统启动时自动启动:  sudo systemctl enable docker 1 运行此命令后,Docker 服务将在每次系统重启时自动启动。  2. 检查服务状态 要确认 Docker 服务已设置为自动启动,可以运行以下命令:  sudo systemctl is-enabled docker 1 如果输出为 enabled,则表示 Docker 服务已成功配置为在启动时自动运行。  3. 启动 Docker 服务(如未运行) 如果 Docker 服务当前未运行,可以手动启动它:  sudo systemctl start docker 1 4. 验证 Docker 是否正常运行 您可以再次检查 Docker 的状态,确保其正在运行:  sudo systemctl status docker 1 六、添加 Docker 用户组(可选) 如果您希望普通用户也能运行 Docker 命令,而无需每次都使用 sudo,可以将该用户添加到 docker 用户组:  sudo usermod -aG docker $USER 1 添加后,需要注销并重新登录,或者重启系统,以便更改生效。  七、常用 Docker 命令 以下是一些常用的 Docker 命令,表格形式展示:  命令    描述 sudo docker ps    列出当前运行的容器 sudo docker images    列出本地存储的所有镜像 sudo docker run [image]    使用指定镜像创建并运行一个新容器 sudo docker stop [container]    停止运行中的容器 sudo docker rm [container]    删除一个容器 sudo docker rmi [image]    删除一个镜像 sudo docker exec -it [container] /bin/bash    进入运行中的容器并打开 bash shell 八、卸载 Docker 如果您想完全卸载 Docker,可以使用以下命令:  sudo apt remove docker-ce sudo apt purge docker-ce sudo rm -rf /var/lib/docker 1 2 3 在 Ubuntu 上安装 Docker 后,您可以设置 Docker 服务在系统启动时自动启动,并将其添加到系统守护进程中。以下是如何实现这一点的步骤。  总结 通过以上步骤,您已成功在 Ubuntu 上安装 Docker,并能够验证其安装情况。并且设置 Docker 在系统启动时自动启动,并且可以选择将自己添加到 Docker 用户组中以简化命令使用。Docker 的强大功能可以帮助您更高效地管理和部署应用。希望这篇指南对您有所帮助,祝您使用愉快! ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/Stromboli/article/details/142486565 
  • [问题求助] MDC_610 连接 森云——AR0233摄像头,数据获取失败,求教各位大佬解决方法||
    一、配置文件    摄像头对MDC进行单端口连接,配置文件设置如下:二、验证摄像头数据收  采用产品文档指令rtfevent list | grep -i Camera,查询摄像头的event信息,查询结果有event信息表示摄像头数据处于正常收发状态。查询第一个事件(camera_decoded_mbuf_29),信息为:执行产品文档命令,成功显示event信息,验证数据收发成功。三、MDC_610 自带查询数据函数(函数功能:获取指定通道摄像头内部数据函数)int32_t GetCameraInternalData(const std::string &slotId, CameraInternalData &data);返回值为int32_t   返回值为0表示获取数据成功利用该函数书写获取摄像头数据代码如下:经过交叉编译后,将编译文件下载至MDC,运行结果:换了几个接口也是数据获取失败,不知道问题出在哪,希望各位大佬提一提意见,感激不尽!!!
  • [技术干货] 在Ubuntu 16.04上安装和配置Redis的方法-转载
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。  简介 Redis 是一个内存中的键值存储,以其灵活性、性能和广泛的语言支持而闻名。在本指南中,我们将演示如何在 Ubuntu 16.04 服务器上安装和配置 Redis。  先决条件 要完成本指南,您需要访问 Ubuntu 16.04 服务器。您需要一个具有 sudo 权限的非根用户,以执行此过程所需的管理功能。您可以按照我们的 Ubuntu 16.04 初始服务器设置指南来了解如何设置具有这些权限的帐户。  当您准备好开始时,请使用您的 sudo 用户登录到 Ubuntu 16.04 服务器并继续以下操作。  安装构建和测试依赖项 为了获得 Redis 的最新版本,我们将从源代码编译和安装软件。在下载代码之前,我们需要满足构建依赖项,以便编译软件。  为此,我们可以从 Ubuntu 存储库安装 build-essential 元包。我们还将下载 tcl 包,这样我们就可以测试我们的二进制文件。  我们可以通过输入以下命令来更新本地的 apt 包缓存并安装依赖项:  sudo apt-get update sudo apt-get install build-essential tcl 1 2 下载、编译和安装 Redis 接下来,我们可以开始构建 Redis。  下载并解压源代码 由于我们不需要长期保留我们将要编译的源代码(我们可以随时重新下载它),我们将在 /tmp 目录中构建。让我们现在切换到那里:  cd /tmp 1 现在,下载最新稳定版本的 Redis。这始终可在稳定的下载 URL 上找到:  curl -O http://download.redis.io/redis-stable.tar.gz 1 通过输入以下命令解压 tarball:  tar xzvf redis-stable.tar.gz 1 进入刚刚提取的 Redis 源目录结构:  cd redis-stable 1 构建和安装 Redis 现在,我们可以通过输入以下命令来编译 Redis 二进制文件:  make 1 在编译二进制文件后,运行测试套件以确保一切都构建正确。您可以通过输入以下命令来执行此操作:  make test 1 这通常需要几分钟才能运行。完成后,您可以通过输入以下命令将二进制文件安装到系统中:  sudo make install 1 配置 Redis 现在 Redis 已安装,我们可以开始配置它。  首先,我们需要创建一个配置目录。我们将使用传统的 /etc/redis 目录,可以通过输入以下命令来创建:  sudo mkdir /etc/redis 1 现在,复制 Redis 源存档中包含的示例 Redis 配置文件:  sudo cp /tmp/redis-stable/redis.conf /etc/redis 1 接下来,我们可以打开文件以调整配置中的一些项目:  sudo nano /etc/redis/redis.conf 1 在文件中,找到 supervised 指令。当前,此项设置为 no。由于我们正在运行使用 systemd init 系统的操作系统,我们可以将其更改为 systemd: . . .  # If you run Redis from upstart or systemd, Redis can interact with your # supervision tree. Options: #   supervised no      - no supervision interaction #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET #   supervised auto    - detect upstart or systemd method based on #                        UPSTART_JOB or NOTIFY_SOCKET environment variables # Note: these supervision methods only signal "process is ready." #       They do not enable continuous liveness pings back to your supervisor. supervised systemd  . . . 接下来,找到 dir 目录。此选项指定 Redis 将用于转储持久数据的目录。我们需要选择一个 Redis 将具有写权限且普通用户无法查看的位置。  我们将使用 /var/lib/redis 目录,稍后我们将在其中创建:  . . .  # The working directory. # # The DB will be written inside this directory, with the filename specified # above using the 'dbfilename' configuration directive. # # The Append Only File will also be created inside this directory. # # Note that you must specify a directory here, not a file name. dir /var/lib/redis  . . . 完成后保存并关闭文件。  创建 Redis systemd 单元文件 接下来,我们可以创建一个 systemd 单元文件,以便 init 系统可以管理 Redis 进程。  首先创建并打开 /etc/systemd/system/redis.service 文件:  sudo nano /etc/systemd/system/redis.service 1 在文件中,我们可以在 [Unit] 部分开始添加描述,并定义一个要求,在启动此服务之前网络必须可用:  [Unit] Description=Redis 内存数据存储 After=network.target在 [Service] 部分,我们需要指定服务的行为。出于安全考虑,我们不应该以 root 用户身份运行服务。我们应该使用一个专门的用户和组,我们将简单地称之为 redis。我们将立即创建这些。  要启动服务,我们只需要调用 redis-server 二进制文件,指向我们的配置。要停止它,我们可以使用 Redis 的 shutdown 命令,可以用 redis-cli 二进制文件执行。此外,由于我们希望 Redis 在可能的情况下从故障中恢复,我们将 Restart 指令设置为 “always”:  [Unit] Description=Redis 内存数据存储 After=network.target  [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always 最后,在 [Install] 部分,我们可以定义服务在启用时应附加到的 systemd 目标(配置为在启动时启动):  [Unit] Description=Redis 内存数据存储 After=network.target  [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always  [Install] WantedBy=multi-user.target 完成后保存并关闭文件。  创建 Redis 用户、组和目录 现在,我们只需创建在前两个文件中引用的用户、组和目录。  首先创建 redis 用户和组。可以通过输入以下命令一次性完成:  sudo adduser --system --group --no-create-home redis 1 现在,我们可以通过输入以下命令创建 /var/lib/redis 目录:  sudo mkdir /var/lib/redis 1 我们应该让 redis 用户和组拥有此目录的所有权:  sudo chown redis:redis /var/lib/redis 1 调整权限,以便普通用户无法访问此位置:  sudo chmod 770 /var/lib/redis 1 启动和测试 Redis 现在,我们准备启动 Redis 服务器。  启动 Redis 服务 通过输入以下命令启动 systemd 服务:  sudo systemctl start redis 1 通过运行以下命令检查服务是否没有错误:  sudo systemctl status redis 1 您应该看到类似于以下内容:  ● redis.service - Redis 服务器    Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled)    Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago   Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)  Main PID: 3124 (redis-server)     Tasks: 3 (limit: 512)    Memory: 864.0K       CPU: 179ms    CGroup: /system.slice/redis.service            └─3124 /usr/local/bin/redis-server 127.0.0.1:6379         . . . 测试 Redis 实例功能 要测试服务是否正常运行,使用命令行客户端连接到 Redis 服务器:  redis-cli 在随后的提示符中,通过输入以下内容测试连接:  ping 您应该看到: PONG 通过输入以下内容检查是否可以设置键:  set test "It's working!" OK 现在,通过输入以下内容检索值: get test 您应该能够检索到我们存储的值:"It's working!" 退出 Redis 提示符返回到 shell:  exit 作为最后的测试,让我们重新启动 Redis 实例:  sudo systemctl restart redis 现在,再次连接客户端并确认您的测试值仍然可用:  redis-cli get test 您的键的值仍然可以访问: "It's working!" 完成后再次返回到 shell: exit 启用 Redis 开机自启动 如果你的所有测试都通过了,并且你希望在服务器启动时自动启动 Redis,你可以启用 systemd 服务。  要这样做,请输入以下命令:  sudo systemctl enable redis Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service. 结论 现在你的 Ubuntu 16.04 服务器上应该已经安装并配置了 Redis 实例。要了解更多关于如何保护你的 Redis 安装的信息,请参考我们的《如何在 Ubuntu 14.04 上保护你的 Redis 安装》(从第3步开始)。尽管它是针对 Ubuntu 14.04 编写的,但在 16.04 上也应该大部分适用。 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/rubys007/article/details/140160542