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密钥对认证
- 编辑远程服务器文件
~/.ssh/authorized_keys - 移除特定设备的公钥,并保存文件
- 重启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 公钥认证原理
- 你生成了一对密钥:公钥
id_rsa.pub和 私钥id_rsa - 把公钥(
id_rsa.pub)上传到服务器上的~/.ssh/authorized_keys文件中 - 当你用 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 显示为 “下载”
通过终端命令修改
- 打开终端(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
手动修改配置文件
编辑用户目录配置文件:
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
- 使用快捷键进入命令行界面
按下以下组合键进入 TTY 命令行界面:
1Ctrl + Alt + F3
(F3 ~ F6 都可以,F1 通常是图形界面)
此时你将看到一个黑底白字的登录界面,输入你的用户名和密码,即可登录到命令行界面。
- 返回桌面环境
1Ctrl + Alt + F1(或 F2)
通过本地终端SSH隧道访问 WEBUI 后台
1ssh -N -L 18789:127.0.0.1:18789 <user>@<your-server-ip>