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"

系统管理​

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

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 就行