829

参数-a可以显示隐藏文件 -l可以显示更全面的信息(权限 修改日期)
whoami 获取当前用户名
pwd 获取当前路径
hostname 显示当前机器的主机名
{D3D3738B-44C5-434D-A5DF-EDA89F66BE7B}.png
cat 可以查看文件的内容

830

linux权限 su可以切换到root
ubuntu使用ufw管理服务
curl ifconfig.me 查看公网地址
ip a ip r 查看内网信息
-e是显示所有 -f是用格式显示
grep可以筛选目标
ps可以查看进程 与aux搭配
linux中的"任务管理器"是top 按p可以根据cpu使用排行 按m可以按内存使用排序
echo 3 >/proc/sys/vm/drop_caches 丢弃缓存

df -h查看硬盘状态
sar -n DEV 查看网络状态
journalctl -u nginx 查看日志
ss -tlnp查看端口

docker run -d --name my-web nginx
-d是后台运行 --name是重命名
-p 8080:80 外部访问 服务器请求8080 然后转发给容器中的80

831
什么是容器
技术定义
轻量级操作系统级虚拟化
共享宿主机内核(Shared Kernel)
独立隔离环境(进程/网络/文件系统)
基于Rocky Linux9运行标准
一次打包到处运行
ip addr 查看ip地址

radio0 和 radio1 是 Linux 系统(尤其是 OpenWrt 等嵌入式系统)对物理无线网卡(射频芯片)的逻辑编号radio0 是第一块无线网卡,radio1 是第二块。
在双频路由器上,通常 radio0 对应 5GHz 频段(高速率、低干扰),radio1 对应 2.4GHz 频段(穿墙强、覆盖广)。在 /etc/config/wireless 配置文件中,每个 wifi-device 节点就对应一个 radio

  • radio 编号是稳定的(基于硬件路径),但由它创建的 wlan0wlan1 等虚拟接口是不稳定的,所以配置文件中应尽量用 radio 来绑定网卡,而不是 wlan

  • 如果更换了无线网卡或调整了 PCIe 插槽,radio 编号可能会发生变化,需要重新检查配置文件。

vm中的ens33没有分配到ip 可能是对应网络连接服务没有开启

更新软件包列表 sudo apt update

安装docker

测试域名解析功能 判断DNS解析是否正常
nslookup get.docker.com

vm的网络连接方式
桥接模式 虚拟机像一台独立电脑,直接连接到宿主机的物理网络
NAT模式虚拟机通过宿主机这个“路由器”上网,对外共享主机的IP地址
仅主机模式宿主机和虚拟机组成一个封闭的虚拟局域网,与外界物理网络完全隔离

查看系统信息:lsb_release -a

可以使用sudo nano script.sh 写入临时脚本一键执行
ctrl o 写入 ctrl x 退出

问题记录-24.04安装curl 遇到依赖冲突

报错 : 无法满足依赖:libcurl4(= x.x.x)”或“持有冲突的软件包
问题是:通常由软件源配置错误
解决方法

编辑源文件增加清华镜像源

sudo vim /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse

更新软件包后再次尝试
sudo apt update

什么是shell
Shell本身是一个命令解释器,位于操作系统内核与用户之间,负责解析用户输入的命令并与系统交互。通过Shell脚本,可以将多个命令写入一个文件中,按顺序执行,从而简化复杂或重复的任务。
bash和直接执行脚本是一个子进程独立运行
source用于加载和配置环境变量
${}变量拼接的时候需要{} 单独的echo不需要{}
""会把$后面的解析为变量 可能会出现空值
''单引号的是纯文本

增加文件的权限
chmod +x hello.sh
1代表x 2代表w 4代表r而完全权限是7
权限分为三部分 当前用户 | 用户组 | 其他用户
-R是循环修改权限
注意目录一定要有x权限否则会进不去

9.1

shell脚本

关于if语句
usage=80
if [ $usage -gt 80 ];
then
echo ""
else
echo ""
fi
注意空格特别是中括号两边 fi结尾
更多选择使用elif 也需要then
[[]]支持 <>

关于字符串比较
image.png

exit 1 退出 0是成功运行

文件测试
image.png

mkdir -p 递归创建目录

case可以取代if else

#!/bin/bash
read -p "请输入操作(start/stop/restart/status):" opt
case $opt in
start)
    echo "服务启动中..."
    ;;
stop)
    echo "服务停止中..."
    ;;
restart)
    echo "服务重启中..."
    ;;
status)
    echo "服务运行中..."
    ;;
*)
    echo "错误:未知操作 $opt"
    echo "支持:start | stop | restart | status"
    exit 1
;;
esac

df -h 查看磁盘
free -h 查看内存
uptime 查看系统负载

for ip in ip1 ip2 ip3; do
#######
done

<重定向符号
until是条件反向循环

关于日志分析
grep -i 忽视大小写 -v反向匹配 -n显示行号 -c统计行数 -r递归搜索 -e扩展正则

⚠️upload failed, check dev console
sed对文本增删改不用打开文件
awk可以精准展示文件的某个内容
-F: :指定字段分隔符为冒号 :

找文件

find / -name "nginx.conf" 2>/dev/null

find按文件名 大小 修改时间 查找文件或目录

目录 755
普通文件 644
重要文件600

清除30天前的日志
find /var/log -name "*.log" -mtime +30 -delete

  • pgrep:按进程名查找进程 PID,只输出进程号
  • -x精确匹配完整进程名,进程名必须完全等于 nginx
pgrep -x nginx
df -h | awk 'NR==2 {gsub(/%/,""); print $5}'

|是管道 gsub(/%/,"")是全局替换

crontab设置定时任务

crontab -e可以设置定时任务 -l查看 -r删除