Linux 日常故障合集

  • Linux 日常故障合集

  • 资料来源:

    <>

  • 更新

    1
    2
    21.01.12 初始化
    21.01.14 添加一些坑

导语

日常无论是主机还服务器,都是 debian 系,linux 免不了折腾,一些小问题也没法水文,开个集合贴.

终端中文乱码

终端中文乱码,这个大多数不支持中文字库..

通常 dpkg-reconfigure locales 设置 zh_CN.UTF-8 和 en_US.UTF-8 就足够了

有一天遇到个问题很奇怪,终端直接输入中文不乱码,vim/nano 乱码..

执行 locale,一切正常.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ locale 
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC=zh_SG.UTF-8
LC_TIME=zh_SG.UTF-8
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY=zh_SG.UTF-8
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER=zh_SG.UTF-8
LC_NAME=zh_SG.UTF-8
LC_ADDRESS=zh_SG.UTF-8
LC_TELEPHONE=zh_SG.UTF-8
LC_MEASUREMENT=zh_SG.UTF-8
LC_IDENTIFICATION=zh_SG.UTF-8
LC_ALL=

之后又在 ~/.bashrc 加入了,亦不起作用.

1
2
3
# display Chinese in English environment correctly  
export LANG="en_US.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"

考虑到 Vim及Nano中文乱码 提到了 LANG 优先级很低,那么配置 LC_ALL 呢?

有在 ~/.bashrc 加上了一句,解决..

1
2
3
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"

最后,感觉这个问题和优先级等都有关系,还是要去翻手册.

网线热插拔更新 Ip 问题

详情见 记网口热插拔 dhcp 更新几则

自动补全

切换到 root,一些命令自动补全失效..

参考 自动补全

1
apt-get install bash-completion

在 .bashrc 添加

1
2
3
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

Sudo 失效

debian10 初始化安装后,sudo 是不可用状态.

首先切换到 root,安装 sudo

1
apt install sudo

添加普通用户到 sudo 用户组.

1
usermod -aG sudo username

通常这一步就完成了,但是在 debian10 上会遇到问题.提示 usermod 命令找不到.

1
bash: usermod: command not found

普通用户下输入 su - 而不是 su,这样就能正常执行 usermod 命令了.

原因见下一节.

大量命令 Command not Found

原因官方在 NewInBuster 提到了.

  • debian 10 中 su 命令在 util-linux 而不是 shadow
  • 执行 su 后,PATH 环境变量将不再更改,导致 PATH 可能不再包含 xx/sbin 这样的路径.

官方提示的解决办法

  • su - 而不是 su
  • sudo -ssudo -i
  • /etc/default/su 添加 ALWAYS_SET_PATH yes,这样 su 就变回来了.

这样始终还是不便,,,非官方解决办法.

  • /etc/login.defs 添加 ALWAYS_SET_PATH yes.这样 root 下 PATH 正常包含 xx/sbin 这样的路径.
  • 副作用是在登录时候可能会有错误提示,但是没有影响.

Ifconfig Command not Found

ifconfig 命令早就被 ip 命令替代了,但是挡不住习惯,最好还是安装回来.

安装 net-tools 即可.

1
sudo apt install net-tools

但是吧,debian 10 下普通用户还是提示 ifconfig command not found.

原因同上,PATH 不包含 xx/sbin 这样的路径,实在是烦,直接在 .bashrc 添加回来就行.

.bashrc 添加

1
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"

Systemd-resolved 无法返回 AAAA 类型地址

这是个老问题了,最近才特别去看看 -> resolved doesn’t handle DNS servers nicely that do not respond at all to AAAA queries (but do respond to A queries)

目前看起来还是没有解决, 遇到的人也很少.临时的解决方案是 编辑 /etc/nsswitch.conf 绕过 systemd-resolved. 在 debian 11 测试有效.

1
2
hosts:      mymachines files myhostname dns
#hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns