当前位置: 首页 > backend >正文

Linux学习

基础概念

Linux 是一种开源、免费且高度可定制的操作系统内核,广泛应用于服务器、嵌入式设备、桌面及移动端(如 Android)。

  • 内核(Kernel):Linux 的核心,负责管理硬件资源(CPU、内存、磁盘等)和进程调度。
  • 常见发行版

    • 服务器端:Ubuntu Server、CentOS/RHEL、Debian、AlmaLinux

    • 桌面端:Ubuntu、Fedora、openSUSE、Arch Linux

    • 嵌入式:Yocto、Buildroot

  •  Linux 特点

    • 开源免费:代码公开,可自由修改和分发。

    • 稳定性高:适合长时间运行的服务器环境。

    • 安全性强:权限管理严格,病毒威胁少。

    • 多用户多任务:支持多个用户同时登录和运行多个进程。

Linux 命令与 Shell 命令的关系解析

Linux 命令是否等同于 Shell 命令?

Linux 命令本质上是 Shell 命令的一部分,但严格来说,两者并非完全等同。

Linux 命令与 Shell 命令的定义与区别

维度Linux 命令Shell 命令
定义可执行的系统工具或程序(如 lsgrep由 Shell 解释执行的命令(包括内置命令和外部命令)
来源通常位于 /bin/usr/bin 等目录包括 Shell 内置命令(如 cdecho)和外部程序(如 ls
执行方式直接由内核调用(通过 exec 系统调用)由 Shell 解析后执行(可能调用外部程序或直接运行内置命令)
典型示例lsgrepsystemctlcdechofor 循环、ls(外部命令)

Linux 命令是 Shell 命令的子集

  1. Shell 命令的分类
    • 内置命令:由 Shell 自身实现(如 cdechoexport)。
      • 示例:cd 命令直接由 Shell 修改当前工作目录,无需调用外部程序。
    • 外部命令:调用独立的可执行文件(如 lsgrep)。
      • 示例:ls 命令实际调用 /bin/ls 程序。
  2. Linux 命令的位置
    • 大多数 Linux 命令是外部程序,位于 /bin/usr/bin/sbin 等目录。
    • 这些命令可以被 Shell 调用,但也可以独立运行(如直接在终端输入 /bin/ls)。
  3. Shell 的角色
    • Shell 是用户与系统交互的接口,负责解析用户输入的命令。
    • 当用户输入 ls 时,Shell 会:
      1. 检查是否为内置命令(不是)。
      2. 在 PATH 环境变量指定的目录中查找 ls 可执行文件。
      3. 调用 exec 系统调用启动 /bin/ls 程序。

示例对比

  1. Shell 内置命令示例

    echo "Hello"  # 由 Shell 直接执行,无需调用外部程序
    cd /tmp       # 修改当前目录,由 Shell 内部实现
  2. Linux 命令(外部命令)示例

    ls -l         # 调用 /bin/ls 程序
    grep "error" log.txt  # 调用 /bin/grep 程序
  3. 混合使用示例:遍历当前目录下所有 .txt 文件并在每个文件中搜索包含字符串 hello 的行。

    for file in *.txt; do  # Shell 内置的 for 循环grep "hello" "$file"  # 调用外部 grep 命令
    done
    示例输出:
    如果 a.txt 内容为:
    hello world
    goodbye
    运行脚本后,输出可能是:
    a.txt:hello world
    

    如果文件名包含空格(如 my file.txt),需要用引号包裹 $file(即 "$file"),否则 grep 会将其解析为多个参数。

SSH

SSH(Secure Shell) 是一种用于安全访问远程计算机的加密网络协议,广泛应用于 Linux/Unix 系统管理、文件传输和端口转发等场景

SSH 基本功能

  • 安全登录:替代不安全的 Telnet,所有通信(包括密码)均加密。
  • 远程命令执行:在远程服务器上运行命令。
  • 文件传输:结合 scp 或 sftp 安全传输文件。
  • 端口转发:建立加密隧道,访问内网资源或代理上网。

基本语法

ssh [选项] 用户名@远程IP -p 端口号

  • 常用选项
    • -p:指定端口(默认 22)。
    • -i:指定私钥文件路径。
    • -v:显示详细调试信息(排查连接问题时有用)。
ssh user@192.168.1.100          # 默认端口 22
ssh root@example.com -p 2222    # 指定端口 2222
ssh -i ~/.ssh/mykey user@host  # 使用私钥登录
生成密钥对

ssh-keygen -t ed25519 -C "your_email@example.com"

  • 参数说明
    • -t ed25519:推荐使用 Ed25519 算法(安全性高,速度快)。
    • -C:添加注释(可选)。
  • 生成后文件:
    • 私钥:~/.ssh/id_ed25519(需严格保密)。
    • 公钥:~/.ssh/id_ed25519.pub(可公开)。
上传公钥到远程服务器

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 user@远程IP

手动上传(若 ssh-copy-id 不可用):

cat ~/.ssh/id_ed25519.pub | ssh user@远程IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Linux 远程登录

Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。

这时我们就需要远程登录到Linux服务器来管理维护系统。

Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22。

Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH

http://www.xdnf.cn/news/13097.html

相关文章:

  • 如何为服务器生成TLS证书
  • 【C++进阶篇】智能指针
  • DIC 应变测量系统助力混凝土 / 岩石断裂力学性能深度研究
  • 第2篇:BLE 广播与扫描机制详解
  • 【iSAQB软件架构】复杂系统架构描述的推荐实践
  • 在 Windows 11 上恢复旧版 Windows 10 右键菜单的命令
  • OPENCV形态学基础之二腐蚀
  • 使用python进行图像处理—图像滤波(5)
  • 常见的Linux命令
  • vue3 定时器-定义全局方法 vue+ts
  • 人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
  • pm2部署Nuxt项目!
  • 开放词汇检测分割YOLOE从pytorch到caffe
  • Clean Code 学习总结01 - 物理设计与命名艺术
  • [Java 基础]String 类
  • MCP和Function Calling
  • OpenCV CUDA模块光流计算-----实现Farneback光流算法的类cv::cuda::FarnebackOpticalFlow
  • Spring Boot 与 Kafka 的深度集成实践(二)
  • Flink 系列之二十二 - 高级概念 - 保存点
  • Linux命令cat /proc/net/snmp查看网络协议层面统计信息
  • 项目管理进阶:解析112页IPD集成产品开发高层培训【附全文阅读】
  • 秋叶包ComfyUI 新手入门攻略及实战指南
  • 11_数据表示与特征工程
  • 华为OD机试-最短木板长度-二分法(A卷,100分)
  • .Net 优秀框架 ABP全面详解
  • 推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
  • 第三章:局域网
  • FDA方向图的matlab仿真实现
  • 河北对口计算机高考MySQL笔记(完结版)(2026高考)持续更新~~~~
  • 【Elasticsearch基础】Elasticsearch批量操作(Bulk API)深度解析与实践指南