‹ 返回笔记 Esc·

Linux 问题与修复

补充说明 / Root 文件系统的根目录 /bin Binary 用户命令的基本二进制文件 /sbin System Binary 系统管理员使用的二进制文件 /boot Boot 启动文件(如内核和…

补充说明

** **/** Root **文件系统的根目录

**/bin**** Binary **用户命令的基本二进制文件

**/sbin**** System Binary **系统管理员使用的二进制文件

**/boot**** Boot **启动文件(如内核和引导加载器配置)

**/dev**** Device **设备文件,Linux 将所有硬件设备视为文件。包括硬盘、终端、外设等

**/etc** **Et Cetera **系统的所有配置文件和脚本,比如网络配置、用户信息、启动脚本等

**/home** **Home **所有用户的主目录

**/root** **Root **超级用户的主目录

**/lib** **Library **共享库文件和内核模块

**/media** **Media **自动挂载外部设备的挂载点。插入设备(如 USB、CD)会自动挂载到这个目录

**/mnt** **Mount **临时挂载文件系统的目录。通常用于手动挂载外部存储或网络存储

**/opt** **Optional **可选的应用程序或第三方软件安装目录

**/proc** **Process **虚拟文件系统,提供内核和进程的信息

**/sys** **System **虚拟文件系统,存储与设备、内核相关的信息。这目录通常与/proc一起使用来访问系统信息

**/run**** Run **存放系统和应用程序在系统启动后运行时产生的临时文件。此目录下的文件在重启后会清除

**/srv** Service 存放系统提供的服务相关数据,如 HTTP 服务器的网页数据或 FTP 服务器的文件

**/tmp** Temporary 临时文件目录,供系统和应用程序存储临时文件。系统通常会定期清理该目录的内容。

**/usr** Unix System Resource 用户级别的应用程序和资源。包括系统实用工具、库、文档等。

1- `/usr/bin`:用户命令的二进制文件(非基本命令)
2- `/usr/sbin`:系统管理员使用的二进制文件(非基本命令)
3- `/usr/lib`:用户应用程序使用的库文件
4- `/usr/local`:用于本地手动安装的软件和文件

**/var** **Variable **系统运行时产生的可变数据,比如日志文件、缓存、锁文件、邮件队列等。

1- `/var/log`:日志文件
2- `/var/spool`:队列数据(如打印任务、邮件队列等)

新建用户给权限

1adduser zailiang
2
3usermod -aG sudo zailiang
4# 或
5adduser zailiang sudo

Ubuntu 登录通知去除

编辑/etc/update-motd.d/中的文件:

这些文件负责生成登录时的通知。你可以通过修改这些文件来去除不需要的通知。

可以将不需要的文件设为不可执行:

1sudo chmod -x /etc/update-motd.d/*

恢复:

1sudo chmod +x /etc/update-motd.d/*

复制命令有时会执行

因为复制的命令结尾带有回车符/r的命令,系统通常会立即执行该命令,而无需按下Enter键。这是因为回车符通常表示命令的结束,终端会立即执行该命令。


htop 中 F7 减少 nice 值用不了

以 root 用户身份运行 htop:sudo htop


远程服务器禁止指定设备的SSH密钥对认证

  1. 编辑远程服务器文件 ~/.ssh/authorized_keys
  2. 移除特定设备的公钥,并保存文件
  3. 重启SSH服务,sudo systemctl restart sshd

命令后 & 符号终端输入日志

1python main.py &    # 会在当前终端里输出日志

为了避免在当前终端中看到大量输出,您可以将输出重定向到文件。可以通过以下方式实现:

1python main.py > output.log 2>&1 &        # 将输出重定向到文件

这样,程序的所有输出(包括错误信息)都将被写入 output.log 文件,而不会在终端中显示。


nohup 命令和 & 结尾的区别

使用 & 时,命令会在后台运行,但如果终端关闭,任务将被终止。

使用 nohup 可以确保命令在终端关闭后继续运行,适合于长时间运行的任务。

通常,在长时间运行的任务中,建议使用 nohup 与 & 结合使用,以获得更好的稳定性和输出管理。


` 反引号和 $() 美元小括号的区别

可读性:使用 $() 语法使代码更加清晰,特别是在嵌套命令时。例如:

1result=$(command1 $(command2))

相比之下,使用反引号时会变得较为复杂:

1result=`command1 \`command2\``
  • 避免解析问题:在某些情况下,反引号可能导致解析问题,尤其是在需要嵌套命令时。使用 $() 语法可以更好地处理这些情况。

SSH 公钥认证原理

  1. 你生成了一对密钥:公钥 id_rsa.pub 和 私钥 id_rsa
  2. 把公钥(id_rsa.pub)上传到服务器上的 ~/.ssh/authorized_keys 文件中
  3. 当你用 SSH 登录时,系统会:
    • 使用你本地的私钥发起验证请求
    • 服务器用你上传的公钥来验证你的请求是否匹配

zip vs tar.gz 在 Linux 上的差异

tar.gz 是 Unix 世界的“原生格式”

tar.gz 实际上是两步组合:

  • tar:打包文件结构、权限、符号链接
  • gzip:压缩

它的核心优势是:完整保留 Unix 文件语义

包括:

  • 可执行权限(+x)
  • 软链接 / 硬链接
  • 文件属主、时间戳
  • 目录结构的语义一致性

zip 在 Linux 上是“外来格式”

zip 来自 Windows 世界,它的问题在于:

  • 不可靠保留可执行权限
  • 解压后经常需要手动 chmod +x
  • 对软链接支持差
  • 在服务器 / 容器 / CI 环境中并非默认工具

换句话说:zip 在 Linux 上能用,但不是为 Linux 设计的。


vim 中 Option → 无法跳词

macOS 终端默认把 Option(Alt)键当作 Meta 键组合 —— 它不是直接把 Option + 右箭当作 ANSI escape 序列(比如 \033w),只是发送一个普通键前加 Escape,Vim 因为收到了 ESC + f 这样一个部分命令,停下等后续字符,从而表现为“无反应”。

Terminal 里设置 Option + → 为发送 \033w,目前是 \033f

或者使用快捷键:

1shift +
2option(esc) + w / b

或者进入插入模式时快捷键:

1control +

Use Option as Meta Key

在类 Unix 终端和一些编辑器(尤其 Emacs、vim 与默认 shell 的 readline 编辑模式)中,Meta 键是一种修饰键,作用类似于常见的 Ctrl 或 Shift,用于组合产生特殊命令快捷键。例如:

  • Meta + f:向前跳到下一个单词
  • Meta + b:向后跳到上一个单词

这些是默认 Emacs 风格快捷键,也在 bash/zsh 命令行编辑中通用。

当你勾选 “Use Option as Meta Key” 时:

  • 终端会将 Option ⌥ 键在内部映射成 Meta 键
  • 例如按 ⌥ + b 会发送 Meta+b,等价于传统 Unix shell 里的 M-b (向后移动一个词)
  • 很多键盘快捷键(单词移动、删除词、历史导航等)就可以用更自然的组合来完成,而不是先按 Esc 键再按字符。

目录名中文改为英文

中文界面会把 Download 显示为 “下载”

通过终端命令修改

  1. 打开终端(Ctrl+Alt+T)。

运行以下命令将目录名重置为英文:

1export LANG=en_US
2xdg-user-dirs-gtk-update
3# 或者
4LANG=C xdg-user-dirs-gtk-update
  • 在弹出的窗口中,选择“更新名称”将目录改为英文。

然后恢复语言设置:

1export LANG=zh_CN.UTF-8
2xdg-user-dirs-gtk-update
  • 这次选择“保持旧名称”,这样目录名会保持英文,但系统语言仍然是中文。
1sudo vim ~/.config/user-dirs.dirs
  • 如果你没有看到弹窗,可以尝试清除配置再运行:
1rm ~/.config/user-dirs.dirs
2LANG=C xdg-user-dirs-update

手动修改配置文件

编辑用户目录配置文件:

  1. vim ~/.config/user-dirs.dirs
  • 将文件内容修改为类似以下内容(确保路径是英文):
1XDG_DESKTOP_DIR="$HOME/Desktop"
2XDG_DOWNLOAD_DIR="$HOME/Downloads"
3XDG_TEMPLATES_DIR="$HOME/Templates"
4XDG_PUBLICSHARE_DIR="$HOME/Public"
5XDG_DOCUMENTS_DIR="$HOME/Documents"
6XDG_MUSIC_DIR="$HOME/Music"
7XDG_PICTURES_DIR="$HOME/Pictures"
8XDG_VIDEOS_DIR="$HOME/Videos"
  • 保存文件(Ctrl+O,回车,然后 Ctrl+X 退出)。

运行以下命令更新目录:

  • xdg-user-dirs-gtk-update

Ubuntu Desktop 切换成 Ubuntu Server

  1. 使用快捷键进入命令行界面

按下以下组合键进入 TTY 命令行界面:

1Ctrl + Alt + F3

(F3 ~ F6 都可以,F1 通常是图形界面)

此时你将看到一个黑底白字的登录界面,输入你的用户名和密码,即可登录到命令行界面。

  1. 返回桌面环境
1Ctrl + Alt + F1(或 F2)

通过本地终端SSH隧道访问 WEBUI 后台

1ssh -N -L 18789:127.0.0.1:18789 <user>@<your-server-ip>