Soup's Blog

Back

常用命令和工具Blur image

远程服务器设置本地proxy转发#

  1. 首先开启proxy,端口号默认7890,然后在本地命令行中输入ipconfig获得ip地址

在这里插入图片描述

  1. 打开远程服务器,输入下列代码设置proxy转发端口
export http_proxy=http://172.21.***.109:7890
export https_proxy=http://172.21.***.109:7890
powershell
  1. 设置完毕后测试一下,访问网站
curl -v http://www.google.com
powershell

访问成功

  1. 取消
unset http_proxy
unset https_proxy
powershell

本地免密登录远程服务器#

一、生成SSH密钥对#

在Windows命令行(CMD)或PowerShell中执行:

ssh-keygen -t ed25519 -C "your_email@example.com"
cmd

说明:

  • -t ed25519:使用ED25519算法(安全且高效)
  • -C:添加注释(通常是你的邮箱)
  • 直接按回车使用默认路径(C:\Users\你的用户名.ssh\id_ed25519)
  • 密码短语直接按回车跳过(实现免密)

二、复制公钥到远程服务器#

重要说明:如果服务器上已有 authorized_keys 文件(比如之前在其他设备上配置过),以下命令会自动追加新公钥,不会覆盖已有的公钥。这样你可以在多台设备上实现免密登录。

方法1:使用PowerShell命令(推荐,最简单)

在PowerShell中执行:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@remote_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
powershell

示例:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
powershell

方法2:手动复制

  1. 查看本地公钥(CMD):
type %USERPROFILE%\.ssh\id_ed25519.pub
cmd

或(PowerShell):

type $env:USERPROFILE\.ssh\id_ed25519.pub
powershell
  1. 复制公钥内容,登录远程服务器:
ssh username@remote_ip
cmd
  1. 在远程服务器上执行:
mkdir -p ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
bash

三、测试免密登录#

ssh username@remote_ip
cmd

如果不需要输入密码直接登录,说明配置成功!

四、配置快捷别名(可选)#

编辑 SSH 配置文件 C:\Users\你的用户名\.ssh\config

使用记事本打开:

notepad %USERPROFILE%\.ssh\config
cmd

添加以下内容:

Host myserver
    HostName 192.168.1.100
    User root
    Port 22
    IdentityFile C:\Users\你的用户名\.ssh\id_ed25519
plaintext

以后直接 ssh myserver 即可登录。


结束GPU进程#

ps x |grep python|awk '{print $1}'|xargs kill
python

解释:ps grep组合查看python进程,使用awk分割pid,xargs组合kill命令,等价于kill [属于python的pid]

使用Tmux挂起会话进程#

  1. 输入tmux即可进入Tmux窗口,但不推荐。因为第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。

  2. 使用命令创建一个指定名称的会话

tmux new -s <session-name>
powershell
  1. 分离会话
tmux detach
powershell

或者使用Ctrl + b, d 先按下 Ctrl + b(这是 tmux 的前缀键) 然后松开,再按 d。

  1. 查看所有会话
tmux ls
powershell
  1. 接入会话
tmux attach -t <session-name>
powershell
  1. 杀死会话
tmux kill-session -t <session-name>
powershell

从远程服务器之间数据拷贝#

  1. 使用sudo apt-get install rsync来安装rsync工具,支持断点重续。
  2. 执行命令
rsync -avzP --exclude='Multimodal-Cooperation-main/code/log_sample/' -e "ssh -p 2233" tangqian@172.21.201.220:/path/to/source/ /path/to/destination/
powershell

-v:详细模式输出,显示传输过程中的信息。

-z:在传输文件时进行压缩。

-P: -P 参数是 —partial 和 —progress 的组合,其中:partial:告诉 rsync 保持部分传输的文件,这样如果传输中断,下次传输同一文件时不会从头开始,而是从中断处继续。progress:显示传输进度。

—exclude=‘log_sample/‘:指定排除不拷贝的文件或目录,这里使用了相对路径。

user@remote:/path/to/source/:远程服务器上的用户名、主机地址和源路径。

/path/to/destination/:本地的目标路径。

-e “ssh -p 2233” 指定了通过SSH连接并且使用端口2233。

确保源路径和目标路径以斜杠结尾,这取决于你希望如何同步文件夹内容。在你的例子中,源路径 /home/tangqian/my_project/ 以斜杠结尾意味着复制该目录的内容到目标位置;如果不以斜杠结尾,则会创建一个名为 my_project 的子目录并将所有内容放入其中。

  1. 也可以本地上传至服务
rsync -avzP --progress ./upload.zip -e "ssh -p 2233" tangqian@172.21.201.220:/home/tangqian/dataset
powershell

远程服务器与本地之间数据拷贝#

  1. 首先去微软商店安装ubuntu系统

  2. 安装完之后,可能出现bug,参考windows11 启用 wsl, 安装 ubuntu 系统

  3. 在cmd终端输入ubuntu进入系统

  4. 进入windows路径

cd /mnt
powershell
  1. 使用rsync传数据

Tensorflow-GPU安装#

python=3.6 2.x才支持GPU加速

pip install keras==2.2.4 tensorflow-gpu==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
powershell
pip install keras==2.3.1 tensorflow-gpu==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
powershell

PyTorch-GPU安装#

python=3.6-3.9

pip install torch==1.9.0 torchvision==0.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
powershell
pip install torch==1.10.0 torchtext==0.11.0 torchvision==0.11.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
powershell

适用于A100 python3.8

pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
powershell

查看CUDA版本指令,通常torch.version.cuda 显示的版本号要小于等于NVIDIA CUDA 版本

import torch
print(torch.cuda.is_available())
print(torch.version.cuda)
powershell

其他镜像

-i https://mirrors.aliyun.com/pypi/simple
powershell
-i https://pypi.douban.com/simple
powershell
-i https://pypi.mirrors.ustc.edu.cn/simple
powershell
-i https://repo.huaweicloud.com/repository/pypi/simple
powershell

服务器上报数据和缓存不在同一个GPU上的错误#

RuntimeError: module must have its parameters and buffers on device cuda:3 (device_ids[0]) but found one of them on device: cuda:0
bash

这是由于在并行训练时,如果已经通过 model.to(device) 或 torch.nn.DataParallel 将模型移动到了特定的 GPU 或多个 GPU 上,再次调用 model.cuda() 是不必要的。

修改后的代码如下:

model.to(device)
if len(gpu_ids) > 1:
    model = torch.nn.DataParallel(model, device_ids=gpu_ids)
else:
    model.cuda()
python

Linux常用的命令#

  1. 删除当前文件夹下的所有文件和子目录
rm -rf *
powershell
  1. 移动指定目录下的所有文件和子目录
mv /path/to/source/* /path/to/destination/
powershell

zip压缩命令跳过指定文件夹#

zip -r Multimodal-Cooperation-main-v2.zip Multimodal-Cooperation-main/ -x "Multimodal-Cooperation-main/code/log_sample/*"
powershell

Nvidia-smi在当前页面刷新输出#

watch -n 0.1 nvidia-smi
powershell

解释 watch:这是一个 Linux 命令,用于定期执行指定的命令并在终端中显示输出。 -n 0.1:这个选项指定了刷新的间隔时间,这里设置为 0.1 秒。 nvidia-smi:这是你希望定期执行并显示其输出的命令。

Ubuntu启动EasyConnect#

sudo /usr/share/sangfor/EasyConnect/EasyConnect
powershell

Docker的使用#

参考博客

  1. 拉取原始镜像docker pull ubuntu:22.04 此时镜像名称为 ubuntu,标签为 22.04。 或者使用 docker tag 重命名镜像​​:docker tag ubuntu:22.04 my-ubuntu:v1 重命名为 my-ubuntu:v1

  2. 查看镜像docker image 在这里插入图片描述

  3. 删除原始镜像docker rmi ubuntu:22.04 在这里插入图片描述

  4. 创建容器docker run -it --name hw_mirror ubuntu:22.04一定要带标签) ​​docker run:Docker 的核心命令,用于创建并启动一个新容器 ​​-it​​ (组合参数):-i (—interactive):保持标准输入打开,允许与容器交互 -t (—tty):分配伪终端(TTY),使容器像本地终端一样工作 → 组合效果:进入容器的​​交互式命令行模式​​ ​​**—name hw_mirror**:为容器指定名称 hw_mirror 如果不指定,Docker 会随机生成名称(如 friendly_curie) 后续可用 docker start hw_mirror 通过名称操作容器 ​​ubuntu:22.04​​:使用的镜像名称及标签,若本地不存在,会先自动执行 docker pull ubuntu:22.04

  5. 查看容器docker ps -a 在这里插入图片描述

  6. 删除容器docker rm hw_mirror 在这里插入图片描述

  7. 查看ubuntu版本cat /etc/os-release 在这里插入图片描述

  8. 容器内安装python

# 1. 更新包列表
apt update

# 2. 安装 Python 3
apt install -y python3

# 3. 安装 pip(Python 包管理器)
apt install -y python3-pip

# 4. 验证安装
python3 --version
pip3 --version
python

在这里插入图片描述

自定义创建Docker#

  1. 创建Dockerfile以及一些准备的文件 在这里插入图片描述 Dockerfile的内容:
  1. 在包含Dockerfile的目录下构建镜像docker build -t my-custom-app:v1 . docker build ​​作用​​:启动 Docker 构建流程 ​​行为​​:根据当前目录下的 Dockerfile 创建新镜像 -t my-custom-app:v1 ​​-t​​ 参数:—tag 的缩写,用于指定镜像名称和标签 ​​my-custom-app​​:自定义的镜像名称(通常按”项目名/用途”格式) ​​:v1​​:镜像标签(推荐使用语义化版本控制) 标签省略时默认为 :latest 有效标签格式:v1.2.3, beta, 20240610等 .(末尾的点) ​​含义​​:指定​​构建上下文​​路径 ​​作用​​:Dockerfile 中的 COPY 和 ADD 指令相对此路径工作 ​​注意事项​​: Docker 会把当前目录​​所有内容​​发送给 Docker 守护进程 使用 .dockerignore 文件排除不需要的文件 在这里插入图片描述

  2. 使用镜像执行python3 -V命令:docker run -it my-custom-app:v1 python3 -V 在这里插入图片描述

  3. 创建并使用新的容器docker run -it -d --name my-app my-custom-app:v2 /bin/bash docker run:创建并启动新容器 -it:​​组合参数​​:
    -i:保持标准输入流打开(允许交互)
    -t:分配伪终端(创建命令行界面) -d:后台运行(detach 模式) —name my-app:指定容器名称为 my-app my-custom-app:v2:使用的镜像和标签 /bin/bash:容器启动后执行的命令(启动 Bash Shell)

  4. 连接已有容器:

# 如果容器已停止:
docker start my-app
# 进入运行中的容器
docker exec -it demo-app /bin/bash
python
  1. 修改容器后,将当前容器提交为镜像:docker commit ur5e my-custom-ur5e-image 在这里插入图片描述
  2. 保存镜像为tar压缩文件docker save -o ur5e-image.tar my-custom-ur5e-image
  3. 压缩文件大小gzip ur5e-image.tar
  4. 解压tar文件gzip -d ur5e-image.tar.gz
  5. 加载镜像docker load -i ur5e-image.tar 在这里插入图片描述
  6. docker run -itd --name ros2_gpu --gpus all --env="DISPLAY" --env="NVIDIA_DRIVER_CAPABILITIES=all" --env="QT_X11_NO_MITSHM=1" --env="LIBGL_ALWAYS_INDIRECT=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" my-custom-ur5e-image:latest /bin/bash —gpus all:允许容器访问宿主机的所有 NVIDIA GPU —env=“NVIDIA_DRIVER_CAPABILITIES=all”:定义 NVIDIA 驱动的功能范- all 包含 ​​图形渲染(OpenGL/Vulkan)​​ 和 ​​计算(CUDA) —env=“DISPLAY”: 传递宿主机的 DISPLAY 环境变量(通常为 :0)到容器 —volume=“/tmp/.X11-unix:/tmp/.X11-unix:rw”: 挂载宿主机的 X11 套接字目录到容器 —volume=“$HOME/.Xauthority:/root/.Xauthority:rw”: 挂载 X11 认证文件(~/.Xauthority)到容器 —env=“QT_X11_NO_MITSHM=1”:禁用 Qt 的共享内存(MIT-SHM)扩展 —env=“LIBGL_ALWAYS_INDIRECT=1”: 强制 OpenGL 使用间接渲染(通过 X11 转发)

Ubuntu换源工具#

wget http://fishros.com/install -O fishros && . fishros
python

Ubuntu使用代理教程#

教程

云服务器直接下载百度网盘文件#

  1. 先下载bypy

    pip install bypy
    bash
  2. 登录

    bypy info
    bash
  3. 登录后会在“我的应用数据”文件夹下生成bypy文件夹,我们只需要把要下载的内容复制到该文件夹中 在这里插入图片描述

  4. 然后下载文件夹到指定目录(下载文件用download)

    bypy downdir / /path/to/your/target/directory -v
    bash
  5. 上传到百度云命令

    bypy upload /path/to/local/folder
    bash

清理pip的缓存#

rm -rf /tmp/*

# 2. 删除 Python 缓存
find /root -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null
find /root -name "*.pyc" -delete 2>/dev/null

# 3. 清理 pip/conda 残留(即使你迁移了 .cache)
rm -rf /root/.local/lib/python*/site-packages/*  # 谨慎!如果你用 pip install --user
rm -rf /root/.conda

# 4. 删除 Jupyter 缓存
rm -rf /root/.local/share/jupyter
bash

将本地代码上传到Github仓库#

生成新的SSH密钥

ssh-keygen -t ed25519 -C "14680426@qq.com"
bash

将SSH公钥添加到Github

cat ~/.ssh/id_ed25519.pub
bash

复制公钥内容,登录 GitHub → 点右上角头像 → Settings → 左侧 SSH and GPG keys → New SSH key

测试SSH连接

ssh -T git@github.com
bash

WSL2安装可视化桌面#

安装VcXsrv 下载地址

启动VcXsrv 一直点next(注意第一个界面设置Display为0),第三个界面勾选Disable access control

在wsl环境中安装xfce

sudo apt install xfce4-terminal
sudo apt install xfce4
bash

因为每次启动WSL都会使用新的IP,所以配置自动更新~/.bashrc文件的IP

nano ~/.bashrc
bash

在末尾添加

export DISPLAY=$(awk '/nameserver/{print $2; exit}' /etc/resolv.conf):0
bash

启动xeyes测试

xeyes
bash

更新配置

source .bashrc
bash

安装中文支持

sudo apt install ttf-wqy-zenhei
bash

运行xfce4即可查看桌面

startxfce4
bash

在这里插入图片描述

Windows 关闭 Service Worker 进程#

1️⃣ 打开运行:

Win + R

输入:

resmon

2️⃣ 打开 CPU

3️⃣ 在 关联的句柄 搜索:

Service Worker

或你的文件夹名字

4️⃣ 找到进程 → 结束进程。

windows清理python进程#

查找进程命令

wmic process where "name='python.exe' or name='pythonw.exe'" get ProcessId,CommandLine /format:table
bash

kill命令

taskkill /PID <PID> /F
bash
常用命令和工具
http://soupcola.top/blog/tool_blogs/widely_tools
Author Soup Cola
Published at 2026年1月31日