ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【Linux笔记】使用问题集合

2026/8/14 20:17:30 拓冰建站 浏览量
【Linux笔记】使用问题集合

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录


Linux系统

I、尝试使用nslookup报错

CentOS 7

原因:nslookup命令没有安装在系统上

解决:

yum install bind-utils

nslookup命令通常包含在bind-utils包中,这是 BIND(Berkeley Internet Name Domain)套件的一部分,用于提供 DNS(域名系统)相关的实用工具

II、Ubuntu更改使用root登录

Ubuntun 18.04 LTS

1、在用户模式下为root设置密码(Ubuntu 默认未设置root密码)

-进入命令行Ctrl + Alt + T -sudo passwd root --输入用户密码 --设置UNIX密码 --Retype UNIX password

2、切换root用户

-su root --输入root用户密码

3、退出root用户

-exit

4、登录root图形桌面

-进入命令行Ctrl + Alt + T -sudo vim /etc/pam.d/gdm-autologin(提前sudo apt-get install vim安装vim) --按键 "i"进入插入模式 --注释 auth required pam_succeed_if.so user!=root quiet success --按键 "Esc"进入一般命令模式 --:wq保存退出
-sudo vim /etc/pam.d/gdm-passwd --按键 "i"进入插入模式 --注释 auth required pam_succeed_if.so user!=root quiet success --按键 "Esc"进入一般命令模式 --:wq保存退出
-sudo vim /root/.profile --按键 "i"进入插入模式 --在 "mesg n || true" 前添加 "tty -s &&" 使整条语句变为:"tty -s && mesg n || true" --按键 "Esc"进入一般命令模式 --:wq保存退出 --reboot重启

5、直接在登录时使用root账户密码即可


Ubuntu 22.04 LTS

1、设置 root 账户密码

默认情况下,Ubuntu 的 root 账户是锁定的,因此首先需要为 root 设置一个密码: sudo passwd root 输入并确认新的 root 密码。

2、允许 root 账户登录 GDM(GNOMEDisplay Manager)

编辑 GDM 配置文件: sudo vi /etc/gdm3/custom.conf 找到 [security] ,并添加或修改以下行: AllowRoot=true 然后找到 [daemon] ,并确保 WaylandEnable=false 存在或被取消注释: WaylandEnable=false

3、修改PAM认证文件

sudo vi /etc/pam.d/gdm-password 在行首添加 # 进行注释: #auth required pam_succeed_if.so user != root quiet_success

4、重启GDM服务

运行以下命令重启 GDM: sudo systemctl restart gdm3 或者重启整个系统: reboot

拓展:用户账户启动一个交互式的 root Shell

1、sudo <command> sudo 命令允许授权用户以 root 或其他用户的身份执行单条命令,执行完毕后权限自动收回,最大限度地遵循了最小权限原则 2、sudo -i (登录式 Shell) # 输入当前用户的密码后,提示符将变为 'root@hostname:~#' 此命令模拟 root 用户的初始登录过程,会加载 /root/.profile 等配置文件,切换到 root 的家目录 (/root),提供一个纯净的 root 工作环境。 3、sudo -s (非登录式 Shell) # 输入当前用户的密码后,提示符可能变为 'root@hostname:/current/path#' 此命令启动一个 root 权限的 Shell,但会保留大部分当前用户的环境变量(如 $HOME, $PATH 等)。这在你需要 root 权限但又依赖当前用户某些环境配置时很有用。 4、进入 root Shell 后,所有命令都将以 root 权限执行,直到输入 exit 或按下 Ctrl+D 退出。

III、Dell主板安装Ubuntu时,报错ubiquity crashed with TypeError in partman_dialog():"NoneType"object is not subscriptable

1、进入Try Ubuntu without install 后,点击安装Ubuntun 18.04 LTS,走到分区步骤,无法进行分区

2、中止后,查看具体报错如上

解决:

Dell主板重启,设置 Storage 类型为 AHGI/NVMe,保存启动;

再次进入不再报错。

但是,比较离谱的一点是,当你在部分Dell主机上装了Windows11和Ubuntu双系统时,

-想要切换至Ubuntu时内存类型必须是AHGI/NVMe

-想要切换回Windows11时内存类型必须是默认RAID On

无法自由在启动引导中自由切换

关于上面这个问题,最近确认了问题原因:

博主的电脑是Dell Vostro3030s,Win11为电脑原装系统;如需要双系统启动引导项直接切换Ubuntu和Windwos11,需先在BIOS下切换Storage为AHGI/NVMe类型并重装Windows系统,再安装Ubuntu系统

IV、Ubuntu更换apt源

Ubuntun 18.04 LTS

1、备份源文件(防止出错无法还原)

cp /etc/apt/sources.list /etc/apt/sources.list.bak

2、编辑源文件

vim /etc/apt/sources.list

“yy” 键复制 “http://cn.archive.ubuntu.com/ubuntu/”的对应行

“p” 键粘贴到合理位置

“i” 键进入编辑模式

-注释的一行

-更改另一行的URL为新的源地址

“Esc” 键退回一般命令模式

“:wq” 保存退出

新源地址:

阿里云镜像源:http://mirrors.aliyun.com/ubuntu/

清华大学镜像源:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

3、更新软件包列表

apt update

此命令会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。

当然,此步骤前,可能需要清理apt缓存,防止更改不生效。

apt-get clean

4、升级已安装的软件包

apt upgrade

此命令会把本地已安装的软件与刚下载的软件列表中对应的软件进行对比,若安装软件版本比较低,会提示更新

5、验证新源生效性

使用apt install [package]进行验证

注意:若非root用户登录Ubuntu,上诉所有指令前都需加上 sudo

对比CentOS更换yum源参考:

【Linux笔记】更换yum源和yum命令_linux修改yum源-CSDN博客

V、Ubuntu查看网卡MAC和IP

Ubuntun 18.04 LTS

1、nmcli device show [网络接口名]

此会显示对应网络接口的详细信息;

GENERAL.HWADDR对应MAC

IP4.ADDRESS和IP6.ADDRESS对应IP

2、hostname -I

此命令会显示所有网络接口的所有IP地址;

3、

VI、Ubuntu下apt install smbclient 报错

root@test-Vostro-3030S:/# apt install smbclient 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是 因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件 包尚未被创建或是它们已被从新到(Incoming)目录移出。 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: smbclient : 依赖: samba-libs (= 2:4.7.6+dfsg~ubuntu-0ubuntu2) 但是 2:4.7.6+dfsg~ubuntu-0ubuntu2.17 正要被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

Ubuntun 18.04 LTS

背景提示:

某款路由器(默认支持Samba)的USB口连接USB磁盘,Ubuntu电脑连接路由器后想要访问USB磁盘内容,故按照网上指令apt install smbclient cifs-utils报错如上。

原因确认:

使用apt list --installed | grep smbclient查看;

Ubuntu已经安装了samba client支持;

root@test-Vostro-3030S:/# apt list --installed | grep smbclient WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libsmbclient/now 2:4.7.6+dfsg~ubuntu-0ubuntu2.17 amd64 [已安装,本地]

故需要访问路由器上的USB磁盘时,在Linux按照“文件->其他位置->连接到服务器”,输入路由器中提供的USB磁盘访问地址,即可在Linux成功访问该磁盘内容

VII、Ubuntu 修改网卡名称

Ubuntu 18.04 LTS

参考博文:

ubuntu 18.04修改网卡名称_ubuntu18修改网卡名称-CSDN博客

Ubuntu 22.04 LTS

方法一:直接修改内核参数(临时生效)

sudo ip link set enp2s0 name eth0 sudo ip link set wlp1s0 name wlan0

方法二:通过systemd与udev规则修改(永久修改)

1、获取网卡MAC地址

ip link show

原Windows下PCIe和AX210网卡,显示为enp2s0wlp1s0网卡,确认其MAC地址

2、创建 udev 规则文件

sudo vi /etc/udev/rules.d/70-persistent-net.rules 添加如下内容,MAC_ADDRESS_of_指实际网卡MAC SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="MAC_ADDRESS_of_enp2s0", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="MAC_ADDRESS_of_wlp1s0", NAME="wlan0"

3、禁用默认的systemd命名规则

sudo vi /etc/default/grub 修改GRUB_CMDLINE_LINUX 行 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" 然后退出,更新grub sudo update-grub

4、更新网络配置文件

Netplan 配置(Ubuntu 22.04 默认使用 Netplan)

将原有enp2s0wlp1s0替换为新的名称(如eth0wlan0

sudo vi /etc/netplan/01-network-manager-all.yaml 进行如下修改 network: version: 2 ethernets: eth0: dhcp4: true wifis: wlan0: dhcp4: true access-points:{}

5、应用配置并重启

sudo netplan apply sudo reboot

故障问题:

按照如上配置并重启后,Crtl + Alt + T输入ifconfig无eth0接口,但输入ip link show 确存在eth0接口。

定位问题:

1.输入ip link show eth0确认

eth0的状态处于DOWN状态,即输出存在state DOWN词条

2.输入ip link set eth0 up手动UP接口,dhclient eth0动态获取IP

3.重启,输入ifconfig仍然不存在eth0,需要尝试其他方法

4.输入nmcli device status查看eth0状态,显示为unmanaged,则原因可能为NetworkManager 排除管理。

解决问题:

1、修改 NetworkManager 配置:

vi /etc/NetworkManager/NetworkManager.conf 在 [keyfile] 部分添加: unmanaged-devices=none

2、重启服务:

systemctl restart NetworkManager

3、修改Netplan中/etc/netplan/01-network-manager-all.yaml文件

network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: true # 启用 DHCP optional: false # 强制等待此接口完成初始化

4、之后再次重启电脑,eth0不会消失

注意事项

  • 兼容性问题:
    1. 部分服务(如 Docker、防火墙规则)可能依赖旧网卡名称,需同步更新
    2. 无线网卡重命名后可能需要重新配置 Wi-Fi 连接
  • 恢复默认名称:

    1. 删除 /etc/udev/rules.d/70-persistent-net.rules

    2. 移除 GRUB_CMDLINE_LINUX 中的 net.ifnames=0 biosdevname=0,重新执行 update-grub

VIII、Ubuntu设置中文输入法

Ubuntun 22.04 LTS

参考博文:
Ubuntu 22.04如何设置中文输入法_ubuntu22.04 中文输入法-CSDN博客b

实际执行过程中,在ibus中添加“中文-智能拼音”时,报错:ibus-setup:27882): dconf-WARNING **: 19:30:09.144: failed to commit changes to dconf: 执行子进程“dbus-launch”失败(没有那个文件或目录)

解决方法:

sudo apt-get install dbus-x11

然后重新执行

sudo ibus-setup

进行设置,报错消失

如果系统环境中安装了如下fcitx5,此时设置的ibus输入法和fcitx5均不生效,可以使用如下指令删除fcitx5,删除后上面设置的ibus即可生效

# 卸载所有 fcitx 相关的软件包 sudo apt purge fcitx* # 清理不再需要的依赖包 sudo apt autoremove # 删除用户目录下的残留配置文件 rm -rf ~/.config/fcitx

IX、Ubuntu故障问题:在etc/resolve.conf中添加nameserver 8.8.8.8后,可以ping通www.baidu.com,但延时很高,上网不流畅。

Ubuntun 22.04 LTS

1、查看DNS配置详情

resolvectl status

2、查看DNS服务运行状态

systemctl status systemd-resolved

3、恢复默认resolve.conf配置

sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

4、通过netplan优化dns配置

编辑netplan配置文件

sudo vi /etc/netplan/01-network-manager-all.yaml 进行如下修改 network: ethernets: eth0: # 或你的网卡名(如ens33) dhcp4: true nameservers: addresses: [223.5.5.5, 119.29.29.29] # 阿里DNS + 腾讯DNS search: [本地域名(可选)] version: 2

5、验证DNS延迟

ping -c 4 223.5.5.5

6、网络拥塞诊断

sudo apt install mtr mtr -n www.baidu.com

7、优化systemd-resolved缓存

[Resolve] DNS=223.5.5.5 119.29.29.114 # 国内DNS Cache=yes DNSStubListener=yes

8、重启systemd-resolved服务

sudo systemctl restart systemd-resolved

网络恢复

Ⅹ、vi在一般命令模式时,按下键盘Insert键后,再输入方向键会变成字符,Backspace键失效

Ubuntun 22.04 LTS

问题原因:

Ubuntu 默认安装的 vi 其实是 vim-tiny 精简版,它为了兼容一些非常古老的终端,默认开启了 ‌兼容模式

解决方法:

方法一:卸载 vim-tiny,重装完整版vim

sudo apt-get remove vim-common sudo apt-get install vim

方法二:修改 vim 配置文件

sudo vi /etc/vim/vimrc.tiny 将set compatible 这一行,改成: set nocompatible 添加: set backspace=2(或者set backspace=indent,eol,start)

Ⅺ、开启图形界面后默认Activities存在两个工作区

Ubuntun 22.04 LTS

问题现象:

使用Crtl+Alt+F2切换tty2登录后,输入startx指令打开图形界面,发现Activites默认存在两个工作区;

后切换tty1默认图形用户界面模式登录时,发现也默认存在两个工作区。

问题解释:

此为GNOME 的动态工作区遵循一个原则:当前正在使用的数量 + 1 个备用。

GNOME 的动态工作区会自动创建:当在第一个工作区打开了窗口会自动在右侧创建一个全新的、空白的工作区,以备随时切换过去开始新任务。

默认的图形用户界面模式一开始未发现(相信有人跟我一样),应该是由于startx启动的图形用户界面更干净,Activities的展示效果就更突出了。

固定工作区:

  1. 打开Settings
  2. 切换Multitasking
  3. Workspace下设置Fixed number of workspaces,当设置为1时,工作区仅保留1个

快捷键:

预览模式(Win):

类似于Windows环境的Win+Tab

快速切换工作区(Win+Alt+方向键):

类似于Windows环境的Win+Ctrl+方向键切换桌面

窗口搬家(Win+Shift+Alt+方向键):

鼠标锁定当前窗口,按键后可以根据方向键移动到隔壁工作区

退出startx:
在使用tty的命令行模式登录时,startx实际上是启动了一个会话脚本,当结束此会话时,会自动带回到启动它的那个命令行界面

故,直接在图形界面点击Logout即可登出,回到命令行界面内。

Ⅻ、apt install工具时提示“Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5346 (unattended-upgr)”

Ubuntun 22.04 LTS

问题现象:

尝试使用sudo apt install net-tools安装网络工具时,持续存在如上打印。

问题解释:

说明后台的自动更新进程(PID 5346)正在执行非常关键的写入操作。

但等待一段时间后,仍然无法安装其他工具,使用下面指令查看执行状态

systemctl list-timers *apt*

“NEXT”输出“n/a”,表示正在运行中。

查看此进程运行日志,发现持续无更新

cat /var/log/unattended-upgrades/unattended-upgrades.log

unattended-upgrades(后台进程名通常显示为unattended-upgr)是 Ubuntu 和 Debian 系统中非常核心的一个自动化安全维护工具,在无人值守的情况下,自动下载并安装最新的安全补丁和系统更新。

解决方法:

由于等待了近半个小时仍然失败,故手动杀进程结束此进程

sudo kill -9 5346 2>/dev/null sudo rm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/lib/apt/lists/lock /var/lock/localinst_blocks

然后重新安装工具

sudo dpkg --configure -a sudo apt update && sudo apt install -y net-tools

当然,如果时间经历充足,也可以等它自己更新。

补充:永久禁用自动更新

方法一:配置文件中禁用

sudo dpkg-reconfigure -plow unattended-upgrades

在弹出的框中,切换“No”选项,会自动修改配置文件。

查看配置文件状态,验证修改生效性,输出两行对应的值都为"0",则说明已完全禁用

cat /etc/apt/apt.conf.d/20auto-upgrades

此时查看Systemd 定时器状态

systemctl status apt-daily-upgrade.timer

若输出中显示Active: inactive (dead),说明它已经被彻底关闭;

若显示Active: active (waiting)也可不必计较,只要配置文件状态变化,定时器触发时,读取到“0”,会直接退出,不会下载和安装任何包。

方法二:直接停用并锁定服务

sudo systemctl stop unattended-upgrades sudo systemctl disable unattended-upgrades sudo systemctl mask unattended-upgrades # mask 是比 disable 更高级的禁用,它会把服务指向空设备,任何其他程序或定时器都将彻底无法在后台唤醒它

Vmware相关

Vmware安装教程,可参考:

VMware虚拟机安装详细教程_vmware虚拟机安装教程-CSDN博客

I、打开Vmware 16.1.1,输入license,报错

You do not have permission to enter a license key

解决:

重装Vmware

参考博文:

VMware报错:You do not have permission to enter a license key_you do not have permission to enter a license key.-CSDN博客

欢迎补充,互相学习🤝