连接(vscode)
1下载插件:
2 点击加号
3 输入服务器地址以及用户名
4 点击加号,进入该服务器
5 输入密码
6 openfolder,定位文件夹,左侧可视化窗口
连接(pycharm)
pycharm的连接因为写时间比较久远加上当时非常小白,所以叙述可能会有些混乱…
简单来说就是连接本地目录和服务器目录+选择编译器(就是环境),pycharm不像vscode是直接可视化服务器内容,而是相当于连接了本地和服务器,所以比vscode多了一个从本地上传到服务器的步骤。
1、在linux中运行py文件:
python name.py
2、pycharm配置虚拟编译器:
1)tool-deployment-configuration
+sftp
输入该服务器名称(自定义)
connection-configuration(可以用test connection试试)
mappings:
localpath与deploymentpath:分别为本地项目文件目录和服务器中项目文件
2)file-settings-project-python interpreter-add-ssh interpreter
next-interpreter写python解释器的位置
(linux中进入python,
import sys
sys.executable)
一般bin下放可执行文件
file-settings-interpreter-show all:
点击笔修改为ssh(原本是configuration)
注意,解释器连着服务器时是不能运行本地文件的,否则报错:
要pycharm deployment同步本地项目到服务器
deployment path要写好,然后右键project,deployment-up to xxx
upload 成功
deployment不要设置太多路径,可能会冲突
pycharm远程连接服务器编译错误: No such file or directory
原因:
1、可能是本地文件没有上传到服务器;解决方法:deployment-mapping建立好连接然后上传;
2、setting-interpreter里的mapping没设置
这样就算设置完成了,点ok后运行成功
tmux:terminal分屏
可以通过config文件修改配置
(这里将默认ctrlb改成了ctrla)
终端里先ssh -name@ip,登录
tmux ls 查看有哪些窗口
输入tumx进入tmux页面
tmux attach -t number:进入indx为number的窗口
ctrla+| 左右分屏
ctrla±上下分屏
ctrla+c开新窗口
ctrla+q关闭分屏/窗口
ctrla+n下个窗口/ctrlc+N上个窗口
ctrl+d退出但不关闭
ctrla+r刷新
ctrla+z 最大化pannel
tmux attach -t 编号 -d 进入该session并强行退出其他session
ctrla m关闭鼠标
ctrla M打开鼠标
gpu命令
查看cuda版本:vvcc --version
watch -n 0.1 -d nvidia-smi 查看动态内存
watch -n 0.1 --color gpustat --c 查看动态内存(小视图)
nvidia-smi
查看静态内存
释放gpu内存(程序运行结束后仍显示gpu内存被占用):
fuser -v /dev/nvidia* #查找占用GPU资源的PID
kill -9 pid
使用指定gpu:
CUDA_VISIBLE_DEVICES=1 python my_script.py
或
os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘3,4,5,6,7’(代码里写)
强行杀死进程:当程序卡住/停止但gpu内存没释放:
gpustat -p 查看进程pid
kill -9 pid
linux命令
~ 代表/home/用户名目录
看用户名目录下的隐藏文件:(例如bashrc):~/.bashrc
ls -a看隐藏文件
#未实现
恢复被删除的文件
这里
文件处理
删除文件夹:
rm -rf 目录名
不能在目录a下删除目录a
查看文件数量:
ll | grep -c “^-”
ll | grep -c “^d”
移动文件:
https://blog.csdn.net/u010579482/article/details/72081996
mv sourcePath destPath
例入,将94…文件夹中的内容放到PatchAttack中:
mv /home/lyli/codeRepete/PatchAttack/942d3a0ac09ec9e5eb3a/* /home/lyli/codeRepete/PatchAttack
mv同样可以用作文件重命名:mv path/before.suffix path/after.suffix
下载并解压文件:
使用wget -O rename url
下载
解压:(ref:https://blog.csdn.net/showgea/article/details/80596197)
解压大文件(超过2个g)
7z x xxx.zip
本地与服务器文件传输
本地上传文件:
scp /path/filename username@servername:/path
本地上传目录:
scp -r local_dir username@servername:remote_dir
服务器下载文件:
scp username@servername:/path/filename /path/filename(本地目录)
服务器下载目录:
scp -r username@servername:/path(远程目录) /path(本地目录)
查看空间占用
磁盘清理
https://docs.conda.io/projects/conda/en/4.6.0/commands/clean.html
conda clean -p
conda clean -t
查看硬盘的空间占用
du -lh --max-depth=1 查看当前目录的子目录分别占用
du -sh 仅查看当前目录
df -hl path 查看磁盘空间占用/可用空间
查看剩余内存(区分内存和硬盘!!!)
free -m 单位mb
free -g 单位gb
vim
vim 文件名 进入vim
:q退出vim
:wq保存并退出
在主页面下输入vim ~/.vimrc
(在主目录下创建vimrc文件)
在.vimrc里进行配置
输入 /关键词 即可搜索关键词,按enter+n为查找下一个
选择复制:ctrl+shift+光标
粘贴:shift+insert
如何优雅地在远程服务器上debug
ref:https://cloud.tencent.com/developer/article/1840922
命令行方法:ipdb
pip install ipdb
python -m ipdb xxx.py
h(help):帮助命令
s(step into):进入函数内部
n(next):执行下一行
b(break): b line_number 打断点
cl(clear): 清除断点
c(continue): 一直执行到断点
r(return): 从当前函数返回
j(jump): j line_number,跳过代码片段,直接执行指定行号所在的代码
l(list): 列出上下文代码
a(argument): 列出传入函数所有的参数值
p/pp: print 和 pretty print 打印出变量值
r(restart): 重启调试器
q(quit): 推出调试,清除所有信息
GUI方法
参考ref连接
putty连接
环境相关
3090与cuDA
查看服务器cuda:nvcc --version
注意服务器cuda版本最好和torch的cuda版本匹配,不然会出现model.cuda()执行不了的问题
conda info -e
:查看所有conda环境
python -V
查看python版本
查看torch,cuda 及tf版本:
python
import torch
import tensorflow as tf
torch.__version__
tf.__version__
torch.version.cuda
或者 pip list grep | torch
查看某个路径下带关键词:(例:看该目录下的pip)
ls ~/anaconda3/envs/tf115/bin/ | grep pip
which pip
看pip的路径(其他命令同理)
如果pip路径不对(不在本环境路径下,可能导致当前channel没有要下载的包),运行
export PATH="/home/用户名/anaconda3/bin:$PATH"
,然后重启(换base再换回当前环境)检查which pip
或者:conda install -c conda-forge 包名
,这样直接从conda forge下载
tail -30 ~/.bashrc
看隐藏文件bashrc的后30行
echo $PATH
看环境变量(冒号分割)
jupyter问题
jupyter 配置文件: vim /home/lyli/.jupyter/jupyter_notebook_config.py
或:~/.jupyter/jupyter_notebook_config.py
更改或添加kernal:参考这里
pip install ipykernel
python -m ipykernel install --name your_invironment_name
我的环境:
以下仅为个人创建的环境记录
torch1:python3.8.8 ;torch 1.11.0+cu102; tf:1.15.0
test1: python 3.8.10 ; torch 1.11.0+cu102; tf:1.15.5
tf115:python 3.6.9 ; torch 1.10.2 ;tf:1.15.0
注意3090和低版本tf不兼容,这个环境是tf1.15特殊维护的,需要在命令行最前面加入
TF_ENABLE_DEPRECATION_WARNINGS=1
torch1_0: python 3.7.11; torch 1.0.1 ;tf:null
torchEnv: python 3.8.13; torch 1.11.0+cu102; tf: 1.15.5
以上cuda都是10.2
p_3.6: python 3.6.13 ; torch 1.10.2 cuda:11.1
环境变量
PYTHONPATH:
python import 包时从此环境变量里找, PYTHONPATH中的路径优先度高于默认搜索路径。默认搜索路径如下:
$path_prefix/lib(标准库路径,服务器中是user)
$path_prefix/lib/pythonX.Y/site-packages(三方库路径,X.Y 是对应 Python 的主次版本号,如 3.7, 2.6,也就是pip的路径(pip list - pip show 随便一个包,可以看到pip路径))
当前工作目录(pwd命令的返回结果)
ref:https://frostming.com/2019/03-13/where-do-your-packages-go/
应用:如果不想pip install包(比如看到包里setup源码中有强制升级的部分,需要手动注释掉,则将该仓库 git clone 到服务器里,然后将下载地址加到PYTHONPATH里:
export PYTHONPATH="路径:$PYTHONPATH"
)
PATH:
运行命令的时候,系统从此环境变量里找(即在conda 环境a中 which pip 出来的路径不是a的时候要将anaconda bin的路径export到PATH里的原因)