嘘~ 正在从服务器偷取页面 . . .

服务器使用


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 源文件 软连接文件

image-20211009172341652

# 创建新文件
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
image-20211009133137665
  • 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?

CSDN

官方文档

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

包括cuda、cudnn、pytorch的全方位介绍


上面的其实是因为那个版本用的是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

使用conda创建指定cuda版本环境

上面的tql!!!!

# 首先创建一个虚拟环境
conda create –n py3.6tf python=3.6 #创建Python3.6版本的名为py3.6tf的虚拟环境
conda activate py3.6tf #激活环境
# 2查询支持的cuda版本
conda search cudatoolkit 
image-20211211001707690
# 3 conda search cudnn #查询支持的cudnn版本,需要确保cuda版本一致
image-20211211001756161
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查看版本来检查是否正确,出现下述情况表示正确运行

image-20210519204527712

# 安装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与Cudnn的关系

CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

从官方安装指南可以看出,只要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。

image-20210519210512044 image-20210519210813074

二者文件不重复,所以不会对原有的Cuda功能造成影响,卸载Cudnn也很简单,只需要把对应的Cudnn文件删除即可

后台使用jupyter

后台运行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 尝新版

image-20211117165748691

TensorFlow1.xGPU和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()

文章作者: Dch
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Dch !
评论
  目录