Skip to main content

Linux

基础命令

包括:

  • 文件和目录操作(如 cd, ls, cp, mv, rm 等);
  • 文本查看和编辑(如 cat, more, less, vi, nano 等);
  • 其他基础命令(如 echo, exit, man 等)。

文件系统

理解 Linux 的文件系统结构,包括:

  • 目录结构
  • 文件权限
  • 链接(硬链接和软链接)
  • 特殊的文件类型(如设备文件,套接字文件等)

查看文件或目录路径

find / -name <文件或目录名称>

删除文件

rm

rm --help

删除目录

rmdir

角色管理

window

net localgroup Administrators "用户名" /add

管理员才能进行这个操作

linux

sudo usermod -aG sudo 用户名

通常是将用户添加到sudo组

进程管理

如何查看和控制进程(ps, top, kill 等),理解进程状态,以及后台和前台运行。

查看端口进程

1.netstat

netstat -tuln | grep 7777

这将显示所有正在监听(LISTEN)该端口的进程以及相关的详细信息。

  • -t:只显示 TCP 协议相关的连接信息。
  • -u:只显示 UDP 协议相关的连接信息。
  • -l:只显示正在监听(LISTEN)的连接信息。
  • -n:以数字形式显示 IP 地址和端口号,而不进行反向解析。
  • -a:显示所有连接,包括正在监听(LISTEN)和已建立的连接。
  • -p:显示与连接关联的进程/程序的 PID 和名称。
  • -s:显示统计信息,如接收和发送的数据包数量。
  • -r:显示路由表信息。
  • -c:连续输出,持续显示连接信息。

例子

执行 netstat -aln | grep 7777

输出

tcp  0 0 0.0.0.0:7777 0.0.0.0:* LISTEN
tcp6 0 0 :::7777 :::* LISTEN

输出结果说明了以下情况:

  1. 第一行输出显示了一个 TCP 连接,它正在监听(LISTEN)0.0.0.0:7777 这个地址。这表示该主机上的所有网络接口都可以通过 TCP 协议连接到端口 7777。IP 地址 0.0.0.0 是一个通配符,表示所有可用的网络接口。
  2. 第二行输出显示了一个 TCP6 连接,它也在监听(LISTEN)端口 7777。::: 是 IPv6 的通配符地址,表示所有可用的 IPv6 网络接口。

综上所述,这两行输出表明有两个不同的监听连接,一个是通过 IPv4(tcp) 监听 0.0.0.0:7777,另一个是通过 IPv6(tcp6) 监听 :::7777。这意味着有一个正在运行的进程在这两个地址上监听 7777 端口,等待来自其他计算机的连接。

2.lsof

lsof -i :7777

这将列出正在使用该指定端口的进程信息,包括进程 ID(PID)和进程名称。

3.ss 需要安装 iproute2

ss -tuln | grep 7777

window

netstat -ano | findstr "8080"

-a 参数表示显示所有的连接和监听端口

-n 参数表示以数字形式显示端口号

-o 参数表示显示进程 ID

查看某个进程

ps -ef | grep nginx

window

tasklist | findstr "nginx"

终止进程

sudo kill -s TERM 进程号

以[超级用户]权限向进程 ID 为 14391 的进程发送[终止信号],请求该进程正常退出。

包管理

如何使用包管理器(如 apt, yum, dnf 等)来安装,更新,和删除软件包。

网络

如何配置和管理网络(如 ifconfig, netstat, ping, ssh 等),以及理解网络协议(如 TCP/IP,HTTP 等)。

curl

curl 命令是一个强大的网络工具,可以用来发送和接收数据。

查看主机 ip

Windows 系统:

  1. 打开命令提示符(Command Prompt)或 PowerShell。

  2. 运行以下命令:

    ipconfig

    这将显示主机的网络配置信息,包括 IP 地址、子网掩码、默认网关等。在输出中找到 "IPv4 地址",即可查看主机的 IP 地址。

Linux 系统:

  1. 打开终端。

  2. 运行以下命令之一:

    • 对于使用 ifconfig 命令的旧版 Linux 发行版:

      ifconfig
    • 对于使用 ip 命令的较新 Linux 发行版:

      ip addr show

    这将显示主机的网络接口信息,包括 IP 地址、子网掩码、广播地址等。在输出中找到与你的网络接口相关的部分,即可查看主机的 IP 地址。

请注意,在 Linux 中,你可能需要以管理员权限(使用 sudo 命令)运行上述命令才能查看完整的网络信息。

查看 ip 地址

ipconfig | findstr "IPv4"

shell 编程

如何编写 Shell 脚本,包括:

  • 变量
  • 控制结构(如 if, for, while 等)
  • 函数
  • 命令行参数

命令行参数

案例

构建镜像和 pull 到远程仓库

#!/bin/bash

push_image() {
# 获取参数
registry="$1"
repository="$2"
password="$3"

# 获取当前时间戳
timestamp=$(date '+%Y%m%d%H%M%S')

# 构建 Docker 镜像
docker build -t "$registry/$repository:$timestamp" .
if [ $? -eq 0 ]; then
echo "Docker 镜像构建成功!"
else
echo "Docker 镜像构建失败!"
exit 1
fi

# 登录到 Harbor 仓库
echo "$password" | docker login -u admin --password-stdin "$registry"
if [ $? -eq 0 ]; then
echo "登录 Harbor 仓库成功!"
else
echo "登录 Harbor 仓库失败!"
exit 1
fi

# 推送镜像到 Harbor 仓库
docker push "$registry/$repository:$timestamp"
if [ $? -eq 0 ]; then
echo "镜像推送成功!"
else
echo "镜像推送失败!"
exit 1
fi
}

## 获取用户输入
read -p "请输入 Harbor 仓库地址: " registry
read -p "请输入镜像仓库名称: " repository
read -p "请输入登录密码: " password

echo # 换行

## 调用函数,并传递用户输入的参数
push_image "$registry" "$repository" "$password"

系统管理

如何管理系统服务(如 systemdinit),用户和组管理,以及系统日志。

nginx 操作

重载配置文件

linux

nginx -s reload

-s 参数用于向 Nginx 进程发送信号,告诉它如何处理这个命令。

  • -s 参数后面可以跟以下几个参数: stop:停止 Nginx 进程。这个命令将会优雅地关闭 Nginx,并在关闭前完成正在处理的请求。使用该命令将会中断 Nginx 的服务,直到再次手动启动它;
  • quit:优雅地退出 Nginx 进程。这个命令将会让 Nginx 完成正在处理的请求,并优雅地关闭连接。使用该命令将不会中断 Nginx 的服务,直到再次手动启动它;
  • reload:重新加载 Nginx 的配置文件,并在不中断现有连接的情况下重启 Nginx。该命令通常用于在修改 Nginx 配置文件后,重新加载配置文件并使修改生效,而无需停止 Nginx 并重新启动它。使用该命令将会重启 Nginx,但不会中断现有连接;
  • reopen:重新打开 Nginx 的日志文件。这个命令通常用于在 Nginx 运行期间,切换日志文件。使用该命令将会让 Nginx 关闭当前日志文件,并重新打开一个新的日志文件。)

window

nginx.exe -s reload

需要注意的是,如果新的配置选项涉及到 Nginx 监听的端口或者其他需要重新启动 Nginx 才能生效的配置选项,那么执行 nginx.exe -s reload 命令可能无法使新的配置选项生效。在这种情况下,你需要停止 Nginx 进程并重新启动它,才能使新的配置选项生效。可以使用 nginx.exe -s stop 命令停止 Nginx 进程,然后使用 nginx.exe 命令重新启动 Nginx。

启动

linux

nginx

window

nginx.exe

测试配置文件

重新加载配置文件之前需要进行语法检查

linux

nginx -t

window

nginx.exe -t

日志

查看日志

history | grep 关键词

安全

如何设置和管理文件和目录权限,用户和组权限,以及理解基本的系统安全概念(如防火墙,SELinux 等)。

硬件

如何查看和管理硬件资源,包括 CPU,内存,硬盘,网络接口等。

虚拟化和容器

理解和使用虚拟化技术(如 KVM,Xen 等)和容器技术(如 Docker,Kubernetes 等)。

疑难杂症

Could not establish connection to "xxxx"

the vs code sever failed to start

The remote host may not meet VS Code Server's prerequisites for glibc and libstdc++

vscode 版本问题,切回 1.85;并且 remote-ssh 也会退一个版本;

vscode 连接远程一直要求输入密码

Ctrl + shift + p,唤出命令面板;

输入 Kill VS Code Setver on Host,选择需要结束的主机;

每次断开连接需要这样操作一下,而不是关掉 vscode 就行