829
参数-a可以显示隐藏文件 -l可以显示更全面的信息(权限 修改日期)
whoami 获取当前用户名
pwd 获取当前路径
hostname 显示当前机器的主机名
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编号是稳定的(基于硬件路径),但由它创建的wlan0、wlan1等虚拟接口是不稳定的,所以配置文件中应尽量用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
[[]]支持 <>
关于字符串比较
exit 1 退出 0是成功运行
文件测试
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删除