Skip to content

当然可以,以下是一份关于 Linux 系统的学习文档:

Linux 学习指南

1. Linux 简介

  • Linux 是一个开源的类 Unix 操作系统。它由 Linus Torvalds 在 1991 年首次发布。
  • Linux 的主要优点包括稳定性、安全性、开源性质以及对各种硬件的支持。
  • Linux 的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的 Redhat(RHEL)为代表,后者以 Debian 为代表。

2. Linux 发行版

RedHat 系列:Redhat、Centos、Fedora 等

Debian 系列:Debian、Ubuntu

  • CentOS:一个企业级的 Linux 发行版,基于 Red Hat Enterprise Linux。
  • Ubuntu:适合初学者的 Linux 发行版,易于安装和使用的图形化桌面系统
  • Fedora:一个社区驱动的项目,它是 Red Hat 的上游,提供了最新的开源软件。
  • Debian:一个稳定且强大的 Linux 发行版,适合服务器环境。

3. Linux 命令行

Linux 命令行是一个强大的工具,可以让你完成许多任务。一些基本的命令包括:

  • ls:列出目录的内容
  • cd:改变当前目录
  • pwd:打印当前工作目录
  • cp:复制文件或目录
  • mv:移动或重命名文件或目录
  • rm:删除文件或目录
  • tar -xzvf soft.tar.gz : 解压包

4. 文件系统

Linux 文件系统是一个层次结构,从根目录(/)开始,包含了所有的文件和目录。一些重要的目录包括:

  • /bin:包含了许多基本的二进制程序
  • /etc:包含了系统的配置文件
  • /home:包含了用户的家目录
  • /var:包含了经常变化的文件,如日志文件

5. 权限和所有权

每个文件和目录都有三组权限:用户权限、组权限和其他权限。每组权限可以是以下三种权限的任意组合:

  • 读取(r):用户有权读取文件的内容,或者列出目录的内容。

  • 写入(w):用户有权修改文件的内容,或者在目录中创建和删除文件。

  • 执行(x):用户有权执行文件,或者进入目录。

    • 你可以使用 chown 命令更改文件的所有者,使用 chgrp 命令更改文件的组。
    • 你可以使用 chmod 命令更改文件的权限。例如,chmod u+x filename 会给文件的所有者执行权限。

6. 包管理

大多数 Linux 发行版都有一个包管理系统,可以方便地安装、更新和删除软件包。

  • RedHat 使用yum,常见的安装包格式 tar , rpm 包,安装 rpm 包的命令是“rpm -参数”
  • Ubuntu 使用apt, 常见的安装包格式 tar , deb 包,安装 deb 包的命令是“dpkg -参数”

    补充:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。

7. Shell 脚本

Shell 脚本是一种可以自动化任务的强大工具。你可以编写脚本来自动执行一系列的命令。

8. 系统管理

用户和组管理

在 Linux 中,每个用户都有一个唯一的用户名和用户 ID。用户可以被分配到一个或多个组,每个组也有一个唯一的组名和组 ID。可以使用 useradd、usermod 和 userdel 命令来添加、修改和删除用户。同样,可以使用 groupadd、groupmod 和 groupdel 命令来添加、修改和删除组。

监控系统资源

检查系统的 CPU 使用率、内存使用情况、磁盘空间和网络流量等。可以使用 topvmstatiostatdfnetstat 等命令来监控系统资源。

Shell 脚本学习指南

1. 什么是 Shell 脚本?

Shell 脚本是一种用于自动化任务的脚本语言,它将一系列命令写入一个文件,然后通过解释器来执行这个文件。

像 C、java 之类,在执行前需要先进行编译。它们需要合适的编译器来让我们的代码完成某个任务。

像 php、javascript、shell 之类,则不需要编译器,因此它们需要解释器,而我们不需要编译代码就可以运行程序。

常见的 shell 解释器环境:

  • Bourne Shell(/usr/bin/sh 或/bin/sh)
  • Bourne Again Shell(/bin/bash)

2. Shell 脚本的基本结构

一个基本的 Shell 脚本包括了一个 (#!指定环境)行 和一些命令。例如:

bash
#!/bin/bash
echo "Hello, World!"

这个脚本使用echo命令输出"Hello, World!"。

3. 变量

在 Shell 脚本中,你可以使用变量来存储数据。例如:

  • 定义变量,等号两侧避免使用空格:
bash
#!/bin/bash
greeting="Hello, World!"   # 定义变量
echo $greeting  #使用变量需要,只要在变量名前面加美元符号即可,

greeting_1="hello, ${greeting} !"  # 变量引用

4. 控制结构

Shell 脚本支持 if、for、while 等控制结构。例如:

bash
#!/bin/bash
for i in {1..5}
do
   echo "Number $i"
done

# if
if condition
then
    command1
else
    command
fi
# 行内 表达

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

5. 函数

你可以在 Shell 脚本中定义函数来复用代码。例如:

bash
#!/bin/bash
greet() {
    echo "Hello, $1!"
}
greet "World"

6. 命令行参数

你可以在运行 Shell 脚本时传递命令行参数。例如:

bash
#!/bin/bash
echo "Hello, $1!"  #从1 开始取,这里拿到world

然后你可以这样运行脚本:./script.sh World

Shell 文件包含

Shell 文件包含的语法格式如下:

bash
. otherFile   # 注意点号(.)和文件名中间有一空格
# or
source "./otherFile"

source 的另一种用法

bash
# 在当前bash环境下读取并执行FileName中的命令。
# a.sh
git add .
git commit -m "..."
git push

# 执行
source a.sh

Shell 输入/输出重定向

bash
# 重置
command1 > file1
# 追加
command1 >> file1
# 同时替换输入和输出,执行 cat,从文件info读取内容,然后将输出写入到user中。
cat < info > user

连接到服务器

SSH 链接

  • 打开终端:CMD

  • 输入 SSH 命令:在终端中,输入以下命令:

bash

# 其中,“用户名”是你在服务器上的账户名,“服务器地址”可以是服务器的IP地址或域名。
ssh 用户名@服务器地址
  • 接受服务器的公钥:如果这是你第一次连接到该服务器,系统会提示你接受服务器的公钥。你可以输入“yes”来接受。
  • 输入密码:系统会提示你输入密码。输入你的用户密码后,如果密码正确,你将被登录到服务器。

配置 SSH 免密登录

ssh-copy-id 的本质是把你本地的公钥添加到服务器/远程机的~/.ssh/authorized_keys 文件里

  1. 在本地机器上生成 SSH 密钥对:打开终端,输入以下命令:

    bash
    ssh-keygen -t rsa

    按照提示进行操作,你可以为密钥设置密码,也可以直接按 Enter 键留空。

  2. 将公钥复制到服务器:使用ssh-copy-id命令将公钥复制到服务器。假设你的用户名是user,服务器地址是server,那么命令如下:

    bash
    ssh-copy-id user@server

    输入你的用户密码后,公钥就会被复制到服务器。这里有可能出现 ssh-copy-id 命令找不到,可使用git-bash 客户端代替

  3. 测试免密登录:再次使用 SSH 命令连接到服务器,如果一切正常,你应该可以在不输入密码的情况下登录到服务器。

以上就是 SSH 免密登录的配置步骤。需要注意的是,如果你在生成 SSH 密钥对时设置了密码,那么每次使用私钥时都需要输入这个密码。如果你希望完全免密登录,你可以在生成密钥对时不设置密码。

第三方工具

rz 不能用

js
yum -y install lrzsz
rz //上传文件
sz //下载文件