常用命令
SHELL
curl
cURL是与网站或API进行交互,向终端发送请求并显示响应或将数据记录到文件的理想工具。有时,它用作较大脚本的一部分,将检索到的数据交给其他函数进行处理。
由于cURL可用于从服务器检索文件,所以通常用于下载网站的一部分。它可以很好地执行此功能,但有时wget命令更适合这项工作。
使用Python内置HTTP服务器
在linux上搭建一个简单的HTTP文件服务,让其他设备通过curl下载文件:
# 进入要共享的目录 cd /path/to/your/files # 启动服务(默认端口8000) python3 -m http.server 8000 # 如需后台运行(按Ctrl+C后仍运行): nohup python3 -m http.server 8000 > /dev/null 2>&1 &
在另一台设备上下载:curl http://<linux_IP>:8000/文件名 -o 本地保存名
页面检索
cURL最基本命令是检索网站或文件:$ curl http://www.google.com
执行上述命令后,cURL会检索您所提供页面的源代码并将其输出。
下载文件
添加-output选项来实现让cURL将网页文件保存到本地。
$ curl www.likegeeks.com --output filename $ curl www.likegeeks.com -o filename
遵循重定向
如果在尝试对网站进行URL生成时输出为空,则可能意味着该网站告诉cURL重定向到其他URL。默认情况下,cURL不会遵循重定向,但是您可以使用 -L switch来告诉它。
在本文的研究中,我们发现有必要在大多数网站上指定-L,因此请务必记住这一小技巧。默认情况下,您甚至可能希望将其附加到大多数cURL命令中。
$ curl -L www.likegeeks.com
停止并继续下载
如果您的下载中断了,或者您需要下载一个大文件但又不想一次完成所有操作,所以cURL提供了一种选项,可以从中断处继续传输。
要手动停止传输,您可以使用ctrl + c组合键结束cURL进程,结束进程后,使用以下语法恢复下载
$ curl -C - example.com/some-file.zip --output MyFile.zip
-C switch是恢复我们文件传输的设备,但还要注意,它后面紧跟一个破折号(-)。这告诉cURL继续文件传输,但是实现这一步,首先要查看已经下载的部分,找到下载的最后一个字节才可以确定从何处可以恢复。
指定超时
如果您希望cURL在您不做操作之后的一段时间还可以继续之前的工作,那么可以在命令中指定超时。
使用-m switch或者–connect-timeout指定执行命令所需的最长时间。经过指定的时间后,cURL将退出正在执行的操作,即使它正在下载或上传文件。
cURL会以秒为单位指定您想要的最长时间。因此,要在一分钟后超时,该命令将如下所示:
$ curl -m 60 example.com $ curl --connect-timeout 60 example.com
使用用户名和密码
您可以使用-u switch在cURL命令中指定用户名和密码。例如,如果您想通过FTP服务器进行身份验证,则语法如下所示:
$ curl -u username:password ftp://example.com
使用代理
在连接主机之前,很容易直接使用cURL来使用代理。cURL将默认使用HTTP代理,除非您另外指定。
使用-x switch定义代理。由于在此示例中未指定协议,因此cURL将假定它是HTTP代理。
$ curl -x 192.168.1.1:8080 http://example.com
conda
Miniconda 是 Conda 的简化版本,只包含 Conda 包管理器]和 Python 的最小安装包,提供了一种轻量级的环境管理和包管理工具。相比于 Anaconda,Miniconda 更小巧灵活,适合那些不需要 Anaconda 提供的完整生态的用户。
miniconda安装
用户独立安装
# 切换到 amadeus 用户 su - amadeus # 下载并安装 miniconda 到用户目录 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh -b -p /home/amadeus/miniconda3 # 初始化 /home/amadeus/miniconda3/bin/conda init bash source ~/.bashrc
使用系统级conda安装
# 在 root 用户下安装到 /opt 目录 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda # 创建全局符号链接 ln -sf /opt/conda/bin/conda /usr/local/bin/conda
基础操作
查看 conda 版本
conda --version 或者 conda -V
更新 conda
conda update conda
查看 conda 环境详情信息
conda info
虚拟环境管理
查看已创建的虚拟环境
conda env list 或者 conda info --envs
创建新的虚拟环境
conda create --name envname python=verionID
通过 -n或--name 来自定义的环境名称,verionID指定Python的版本,例如创建一个名为pyweb的python环境:conda create -n pyweb python=3.12
激活虚拟环境
激活名为envname的虚拟环境: conda activate envname
退出当前虚拟环境
conda deactivate
删除虚拟环境
conda remove -n envname --all, 其中,envname是需要删除的虚拟环境名
复制虚拟环境
conda create --name new_env_name --clone old_env_name
分享/备份一个虚拟环境
分享环境的快速方法是向别人发送你环境的.yml文件。
首先激活要分享的环境,在当前工作目录下生成一个environment.yml文件:conda env export > environment.yml
对方拿到environment.yml文件后,将该文件放在工作目录下,可以通过以下命令从该文件创建环境即可:conda env create -f environment.yml
包管理
安装环境包
安装某个包:conda install [package]
指定包版本:conda install xlrd=1.2.0
使用pip安装:pip install xlrd==1.2.0
批量安装 requirements.txt 文件中包含的组件依赖:conda install --yes --file requirements.txt
导出环境包
批量导出包含环境中所有依赖包到requirements.txt文件:conda list -e > requirements.txt
删除环境包
删除当前环境中的某个包:conda remove [package]
使用pip删除包:pip uninstal [package]
升级环境包
升级当前环境中的某个包:conda update [package]
升级所有包:conda update --all
搜索环境包
搜索当前环境中的某个包:conda search [package]
删除没有用的安装包
Conda 安装的包都在目录Anaconda/pkgs下。随着使用,conda 安装的包也越来越多;有时候会出现以下不好的情况:
有些包安装之后,从来没有使用过; 一些安装包的tar包也保留在了计算机中; 由于依赖或者环境等原因,某些包的不同版本重复安装。 上面的这些情况使得anaconda显得更加冗余,并且浪费储存;
对于这些情况可以使用conda clean 净化Anaconda:conda clean -p 或者 conda clean --packages
删除tar包 conda clean -t 或者 conda clean --tarballs
删除索引缓存、锁定文件、未使用过的包和tar包: conda clean -y --all
镜像源管理
查看镜像源
conda config --show channels
添加镜像源
如:添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
配置安装包时显示安装来源
设置从channel中安装包时显示channel的url,这样就可以知道包的安装来源: conda config --set show_channel_urls yes
清除索引缓存
清除索引缓存,保证用的是镜像站提供的索引: conda clean -i
切换回默认源
conda config --remove-key channels
移除镜像源
如:移除清华源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
临时指定镜像源
临时指定安装某个包使用的镜像源: pip install [package] -i https://pypi.tuna.tsinghua.edu.cn/simple/ 或者 pip install [package] -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
操作系统配置
Centos
Centos7 yum 换源
在最小化安装Centos后,对centos进行yum换源:
1、备份 & 移除
你可以选择备份yum文件或者直接移除yum文件
备份yum:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
移除现有yum文件:
cd /etc/yum.repos.d rm -rf *
2、下载阿里云镜像源
下载阿里云Centos7-yum源并上传到Centos7的/etc/yum.repos.d目录下,将文件更名为Centos-7.repo。
或者使用wget下载:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
注意:修改Centos-7.repo文件将所有$releasever替换为7
vi /etc/yum.repos.d/CentOS-Base.repo :%s/$releasever/7/g :wq
3、生成缓存
运行yum makecache生成缓存
PNETLAB
VNC乱码
部分虚拟设备通过VNC启动,在HTML控制台中启动虚机出现VPN乱码、页面刷新慢等情况,可尝试修改Qemu选项
部分虚机Qemu启动选项如下
-machine type=pc-1.0,accel=kvm -serial mon:stdio -nographic -display none -nodefconfig -rtc base=utc -boot order=d
修改为如下启动选项
-machine type=pc-1.0,accel=kvm -vga std -serial mon:stdio -nodefconfig -rtc base=utc -boot order=d -vnc :0
qemu-img 添加磁盘
qemu-img的虚拟机磁盘通常使用QCOW2格式,默认创建节点时,LAB会为该节点创建一个包含单个磁盘的QCOW2文件。但有些虚拟机可能需要多个磁盘。
以某厂商防火墙为例,该防火墙在创建时需要两个磁盘。分别用于系统和数据存储,操作步骤如下:
1. 创建磁盘初始化脚本
在模板目录中创建初始化脚本:/opt/unetlab/addons/qemu/abtSG-8000-R6.2/__init__.py
#!/usr/bin/env python3 import os import shutil import glob def init(hdl, lab, args): # 获取当前镜像目录路径 template_dir = os.path.dirname(os.path.abspath(__file__)) # 查找所有磁盘模板文件 (hda.qcow2, hdb.qcow2, etc.) disk_templates = sorted(glob.glob(os.path.join(template_dir, 'hd?.qcow2'))) # 支持的磁盘前缀映射 (hda → virtioa, hdb → virtiob, etc.) prefix_map = { 'hda': 'virtioa', 'hdb': 'virtiob', 'hdc': 'virtioc', 'hdd': 'virtiod' } created_disks = [] for template_path in disk_templates: # 提取磁盘标识符 (hda, hdb等) disk_id = os.path.basename(template_path).split('.')[0] # 确定目标文件名 target_file = f"{prefix_map.get(disk_id, 'virtio' + disk_id[2:])}.qcow2" target_path = hdl.obj_abs(target_file) # 仅当目标文件不存在时才复制 if not os.path.exists(target_path): shutil.copy(template_path, target_path) os.chown(target_path, 0, 0) os.chmod(target_path, 0o644) created_disks.append(target_file) # 如果没有找到任何磁盘模板,使用默认行为 if not created_disks: default_disk = hdl.obj_abs('virtioa.qcow2') if not os.path.exists(default_disk): shutil.copy( os.path.join(template_dir, 'hda.qcow2'), default_disk ) os.chown(default_disk, 0, 0) os.chmod(default_disk, 0o644) return 0
2. 创建磁盘文件
在存放镜像的目录下,创建一个新的qcow2文件
备注:如果vm无法进入命令行界面,可尝试使用vm登录后,点击平台上的”重启系统”,再回到vm操作。
cd /opt/unetlab/addons/qemu/abtSG-8000-R6.2 qemu-img create -f qcow2 hdb.qcow2 1G
3. 设置文件权限
修改新建的__init__.py和hdb.qcow2的文件权限
chmod 755 __init__.py chmod 755 hdb.qcow2
4. 重启服务
重启 PNETLAB,再启动qemu-img,检查数据盘是否挂载。
PNETLAB 挂载磁盘
在vmware中,新增磁盘后,LAB中不显示,此时需要挂在磁盘:
在webui中,点击 系统 -> 系统设置 -> 重启,即可在vm中进入CLI页面
使用lsbk,200GB的物理磁盘只挂载了98GB,通过如下步骤进行磁盘挂载
sda 200G 磁盘 ├─sda1 1M 分区 (未使用) ├─sda2 2G 分区 (挂载到/boot) └─sda3 98G 分区 └─ubuntu--vg-ubuntu--lv 98G LVM逻辑卷 (挂载到根目录/)
1. 创建新分区
拓展根目录到剩余空间
sudo fdisk /dev/sda
在 fdisk 交互页面
n # 新建分区 Enter # 默认分区号 (4) Enter # 默认起始扇区 Enter # 默认结束扇区 (使用所有剩余空间) t # 更改分区类型 4 # 选择新分区 8e # 设置为 Linux LVM 类型 w # 保存退出
2. 重读分区表
sudo partprobe /dev/sda
3. 将新分区初始化为物理卷
sudo pvcreate /dev/sda4
4. 扩展卷组
sudo vgextend ubuntu-vg /dev/sda4 # "ubuntu-vg" 是系统的VG名(从lsblk可知)
5. 扩展逻辑卷(使用所有可用空间)
# 查找所有逻辑卷 sudo lvscan # 示例输出: # ACTIVE '/dev/ubuntu-vg/ubuntu-lv' [98.00 GiB] inherit # 使用输出中的路径 sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
6. 调整文件系统大小(在线扩展)
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--1v
7. 验证结果
df -h / # 查看根目录大小应变为~198GB lsblk # 查看所有空间已分配
软件
Typora
正则匹配
Typora支持正则匹配,需要在ctrl+F后开启右侧的正则匹配功能
示例,匹配文中所有符合格式的本地图片,并替换为网络图片
# 匹配 !\[\]\(C:\\Users\\Amadues\\Desktop\\K8S\\K8S实操\\(.+?)\) # 替换为 <img src="https://Lyrago.xyz/images/MarkdownPage/Cloud-Computing/kubernetes/k8s_operations/$1" />