linux教程:http://c.biancheng.net/view/4017.html
基本函数
unzip -d des src
#解压到指定目录 解压zip
zip -r day.zip day/*
# 压缩指定目录为zip文件,会将软链接文件转为硬链接文件
zip -ry day.zip day/*
# 加个y,会保留软链接文件
tar -xzvf .tar.gz
# 解压.tar.gz
# 有可能使用gzip2压缩的,这个时候可以使用file查看文件类型
file filename.tar.gz
# 如果是用 bzip2 压缩的,而不是 gzip,则使用以下命令
tar -xjvf data.tar.gz
gunzip # 用于解开被 gzip 压缩过的文件,这些压缩文件预设最后的扩展名为 .gz。 解压完会删除
gunzip passwd.gz
df -h
# 查看磁盘空间大小
history
# 查看历史命令
nvcc -V
# 查看当前cuda版本
ps aux |grep dch
# 查看进程 |gerp是查找对应的字符串
kill -9 pid
# 杀死指定pid的进程,9是信号编号SIGKILL
cd
cd ~
#都会返回到用户主目录/home/dch
sudo #用来执行需要提升权限(通常是作为root用户)的命令
# 显示后20行
tail -n 20 1.txt
# 显示持续刷新的内容
tail -f 1.log
# 显示内存使用情况
free
# 实时显示进程情况,包括内存等
top
# 删除文件
rm filename
# 删除文件夹,递归地删除目录
rm -r dirname
# 如果目录是受写保护的,则会提示是否继续删除目录和目录中的文件作为一个整体。-f 强制删除而不被提示。
rm -rf dirname
# 复制文件夹, 表示将dir1及其dir1下所包含的文件复制到dir2下
cp -r dir1 dir2
# 重启命令
shutdown -r now
# 显示当前工作夹的绝对目录
pwd
# 使用requirements格式列出所有已安装的包,包以不区分大小写的排序顺序列出
pip freeze > requirments.txt
# 安装requirements.txt的包
pip install -r requirements.txt
# 软连接 -s或--symbolic 对源文件建立符号连接,而非硬连接。
ln -s 源文件 软连接文件
# 创建新文件
touch filename
# 以树状图列出目录的内容。
tree dir
# 服务器间数据互传 https://blog.csdn.net/zhangjipinggom/article/details/106137809
scp -r /home/dch/DarkSeg/path/to/ dch@10.112.9.72:/home/dch/DarkSeg/path/
# 如果提示端口不对(默认端口是22),改成:
scp -P port -r /home/dch/DarkSeg/path/to/ dch@10.112.9.72:/home/dch/DarkSeg/path/
# 显示各用户占用空间大小
sudo du -sh /home/*
# nohup及取消输出
nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &
# >/dev/null 将信息输出到/dev/null
# 2>&1 将错误信息重定向到标准输出
# 最后一个&符号,表示程序在后台运行
"""
/dev/null:在类 Unix 系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。
在程序员行话,尤其是 Unix 系统中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。
"""
adduser username
# linux添加新用户
GPU使用情况查看?
watch -n 1 nvidia-smi

- GPU:本机中的GPU编号(有多块显卡的时候,从0开始编号)
- Fan:风扇转速(0%-100%),N/A表示没有风扇
- Name:GPU类型
- Temp:GPU的温度(GPU温度过高会导致GPU的频率下降)
- Perf:GPU的性能状态,从P0(最大性能)到P12(最小性能),图上是:P2
- Persistence-M:持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时花费的时间更少,图上显示的是:off
- Pwr:Usager/Cap:能耗表示,Usage用了多少,Cap总共多少
- Bus-Id:GPU总线相关显示,domain:bus:device.function
- Disp.A:Display Active ,表示GPU的显示是否初始化
- Memory-Usage:显存使用率
- Volatile GPU-Util:GPU使用率
- Uncorr. ECC:关于ECC的东西,是否开启错误检查和纠正技术,0/disabled,1/enabled
- Compute M:计算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
- Processes:显示每个进程占用的显存使用率、进程号、占用的哪个GPU
将监控结果写入文件,并且指定写入文件的监控字段
nvidia-smi -l 1 --format=csv --filename=report.csv --query-gpu=timestamp,name,index,utilization.gpu,memory.total,memory.used,power.draw,temperature.gpu
-l:隔多久记录一次,命令中写的是1
–format:结果记录文件格式是csv
–filename: 结果记录文件的名字
–query-gpu:记录哪些数据到csv文件
timestamp:时间戳
memory.total:显存大小
memory.total:显存使用了多少
utilization.gpu:GPU使用率
power.draw:显存功耗,对应Pwr:Usage
**temperature.gpu:**显卡温度
linux服务器安装conda?
source ~/.bashrc
环境变量生效
conda的使用
菜鸟教程pip使用介绍:https://www.runoob.com/w3cnote/python-pip-install-usage.html
pip安装包应该是安装到了Lib/site-packages
windows用命令行运行python文件,利用anaconda prompt,然后 python *.py
pip show 包
显示包的安装位置
# 查看当前存在哪些虚拟环境
conda env list
# 创建虚拟环境
# your_env_name文件可以在Anaconda安装目录envs文件下找到。
conda create -n your_env_name python=X.X # (2.7、3.6等)
# 激活虚拟环境
conda activate ml_django
# 关闭虚拟环境
conda deactivate
# 删除虚拟环境
conda remove -n your_env_name --all
安装pytorch?
建议安装下面这个版本的pytorch,不然咱们实验室的cuda用不了
pip install --pre torch torchvision -f https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html
https://discuss.pytorch.org/t/rtx-3000-support/98158
上面的其实是因为那个版本用的是cuda11.0,实验室的cuda也是11.0
其实只要pytorch版本可cuda11.对应都可以
python版本更改?
还是有大佬的!https://www.cnblogs.com/chenhuabin/p/10718471.html
Xshell设置
复制粘贴
https://www.cnblogs.com/sxdcgaq8080/p/10025759.html
jupyter配置?
首先,安装jupyter
pip install jupyter
生成jupyter配置文件
jupyter notebook --generate-config
打开ipython,生成密码:
# ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
'argon2:$argon2id$v=19$m=10240,t=10,p=8$/ea+nGkJvktsLC2yo2Huzw$fr/mxPU0bp5BZxAxObad2A'
'sha1:ad2bd4dc8582:9d740abfc74bf994362d0c0dbf866e2b749c4ada'
会让输入两次密码,输入完成后 复制生成的 秘钥,后面会用到,秘钥带上sha1
修改配置文件:vi中查找 命令模式/字符串
vi /username/.jupyter/jupyter_notebook_config.py #/username/可能要去掉如果在这个目录的话
#改几个地方:
c.NotebookApp.ip = 'localhost' #一定要把注释的#号去掉
c.NotebookApp.port = 10001 即对外提供访问的端口
c.NotebookApp.open_browser = False False即启动不打开浏览器
c.NotebookApp.password = u'sha1:XXXXX' 这个就是上面生成的秘钥
c.NotebookApp.notebook_dir = u'workplace' 即设置jupyter启动后默认的根目录,这个文件夹要自己创建
mkdir workplace
然后打开xshell,文件->当前会话属性->隧道->添加 #端口号可以自己设置别的
然后打开jupyter
jupyter notebook
然后在windows上打开localhost:10001,就能在windows上使用linux的jupyter notebook
安装Cuda和Cudnn
上面的tql!!!!
# 首先创建一个虚拟环境
conda create –n py3.6tf python=3.6 #创建Python3.6版本的名为py3.6tf的虚拟环境
conda activate py3.6tf #激活环境
# 2查询支持的cuda版本
conda search cudatoolkit

# 3 conda search cudnn #查询支持的cudnn版本,需要确保cuda版本一致

conda install cudatoolkit=9.0 cudnn=7.3.1 #安装指定版本的cuda,cudnn到当前的虚拟环境中
然后就可以用了,太强了!!!!!!
==Cuda30系不支持cuda10.0,至少也是cuda11.1了,但是tensorflow1.x官网写的是cuda10.0,实际上11.1也能跑==
Cuda如何加载,把这个搞明白好吧
首先取Cuda官网下载对应版本的Cuda Toolkit
在本地环境变量设置cuda
#可以显示安装的cuda
ls /usr/local
#显示如下
#bin cuda cuda-11.3 etc games include lib man sbin share src sunlogin
# 将下面这些命令加到.bashrc文件末尾
#加CUDA的bin到PATH环境变量
export PATH=$PATH:/usr/local/cuda/bin
#加CUDA的库文件到系统库搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
然后source .bashrc
,然后可以运行nvcc -V
查看版本来检查是否正确,出现下述情况表示正确运行
# 安装torch
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
# 这个特别好用
CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
从官方安装指南可以看出,只要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。


二者文件不重复,所以不会对原有的Cuda功能造成影响,卸载Cudnn也很简单,只需要把对应的Cudnn文件删除即可
后台使用jupyter
jupyter notebook & #后台运行,你关掉终端会停止运行
nohup jupyter notebook & #后台运行,你关掉终端也会继续运行
ps -aux | grep jupyter #查找jupyter命令
jobs -l#查看当前有多少在后台运行的命令,加上-l参数可以显示后台运行的pid
fg %jobnumber#将后台中的命令调至前台继续运行。%jobnumber是jobs查到的序号,不是pid
bg %jobnumber#将一个在后台暂停的命令,变成继续执行。
opencv安装
https://www.cnblogs.com/thewaytotheway/p/12847260.html
tensorflow安装
pip install tensorflow安装的是CPU版本
pip install tensorflow-gpu 安装的是gpu版本
https://blog.csdn.net/china_xin1/article/details/109824882 显卡3090只支持CUDA11
所以要pip install tf-nightly-gpu
尝新版

TensorFlow1.x
GPU和CPU软件包是分开的,TensorFlow2.x
同时支持CPU和GPU。
.bashrc
/home/dch/.bashrc
配置文件,保存个人的一些个性化设置,如命令别名、路径、环境变量等
source .bashrc
立刻加载修改后的设置,使之生效。
export
查找文件
https://www.linuxprobe.com/linux-jar.html find -name 文件
vim调高亮
set nocompatible " 关闭 vi 兼容模式
syntax on " 自动语法高亮
set number " 显示行号
set cursorline " 突出显示当前行
set ruler " 打开状态栏标尺
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 " 设定 tab 长度为 4
set nobackup " 覆盖文件时不备份
set autochdir " 自动切换当前目录为当前文件所在的目录
filetype plugin indent on " 开启插件
set backupcopy=yes " 设置备份时的行为为覆盖
set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan " 禁止在搜索到文件两端时重新搜索
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set noerrorbells " 关闭错误信息响铃
set novisualbell " 关闭使用可视响铃代替呼叫
set t_vb= " 置空错误铃声的终端代码
"set showmatch " 插入括号时,短暂地跳转到匹配的对应括号
"set matchtime=2 " 短暂跳转到匹配括号的时间
set magic " 设置魔术
set hidden " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
set smartindent " 开启新行时使用智能自动缩进
set backspace=indent,eol,start
" 不设定在插入状态无法用退格键和 Delete 键删除回车符
set cmdheight=1 " 设定命令行的行数为 1
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldenable " 开始折叠
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
" set foldclose=all " 设置为自动关闭折叠
" nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 用空格键来开关折叠
" return OS type, eg: windows, or linux, mac, et.st..
function! MySys()
if has("win16") || has("win32") || has("win64") || has("win95")
return "windows"
elseif has("unix")
return "linux"
endif
endfunction
" 用户目录变量$VIMFILES
if MySys() == "windows"
let $VIMFILES = $VIM.'/vimfiles'
elseif MySys() == "linux"
let $VIMFILES = $HOME.'/.vim'
endif
" 设定doc文档目录
let helptags=$VIMFILES.'/doc'
" 设置字体 以及中文支持
if has("win32")
set guifont=Inconsolata:h12:cANSI
endif
" 配置多语言环境
if has("multi_byte")
" UTF-8 编码
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk
if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
set ambiwidth=double
endif
if has("win32")
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr "S
ssh命令
报错
1.you are in emergency mode
https://blog.csdn.net/weixin_40689871/article/details/108451501
GPU监测
import os
import sys
import time
cmd = 'CUDA_VISIBLE_DEVICES=0 nohup bash ../run.sh --stage 6' #当GPU空闲时需要跑的脚本
def gpu_info():
gpu_status = os.popen('nvidia-smi | grep %').read().split('|') #根据nvidia-smi命令的返回值按照'|'为分隔符建立一个列表
'''
结果如:
['', ' N/A 64C P0 68W / 70W ', ' 9959MiB / 15079MiB ', ' 79% Default ',
'\n', ' N/A 73C P0 108W / 70W ', ' 11055MiB / 15079MiB ', ' 63% Default ',
'\n', ' N/A 60C P0 55W / 70W ', ' 3243MiB / 15079MiB ', ' 63% Default ', '\n']
'''
gpu_memory = int(gpu_status[2].split('/')[0].split('M')[0].strip())
#获取当前0号GPU功率值:提取标签为2的元素,按照'/'为分隔符后提取标签为0的元素值再按照'M'为分隔符提取标签为0的元素值,返回值为int形式
gpu_power = int(gpu_status[1].split(' ')[-1].split('/')[0].split('W')[0].strip())
#获取0号GPU当前显存使用量
gpu_util = int(gpu_status[3].split(' ')[1].split('%')[0].strip())
#获取0号GPU显存核心利用率
return gpu_power, gpu_memory, gpu_util
def narrow_setup(secs=600): #间隔十分钟检测一次
gpu_power, gpu_memory, gpu_util = gpu_info()
i = 0
while not(gpu_memory < 1000 and gpu_power < 20 and gpu_util < 20) : # 当功率,使用量,利用率都小于特定值才去退出循环
gpu_power, gpu_memory, gpu_util = gpu_info()
i = i % 5
symbol = 'monitoring: ' + '>' * i + ' ' * (10 - i - 1) + '|'
gpu_power_str = 'gpu power:%d W |' % gpu_power
gpu_memory_str = 'gpu memory:%d MiB |' % gpu_memory
gpu_util_str = 'gpu util:%d %% |' % gpu_util
sys.stdout.write('\r' + gpu_memory_str + ' ' + gpu_power_str + ' ' + gpu_util_str + ' ' + symbol)
#sys.stdout.write(obj+'\n')等价于print(obj)
sys.stdout.flush() #刷新输出
time.sleep(secs) #推迟调用线程的运行,通过参数指秒数,表示进程挂起的时间。
i += 1
print('\n' + cmd)
os.system(cmd) #执行脚本
if __name__ == '__main__':
narrow_setup()