常用工具介绍
操作系统
- 特殊的计算机程序(软件),控制着电脑(硬件),连接用户和资源,资源包括CPU、硬盘、内存、打印机等
- 当用户需要执行程序,操作系统必须要分配内存空间来下载和访问程序;当程序执行时,允许它访问CPU;在一个时间共享的系统中,通常有几个程序需要同时访问CPU
UNIX
Linux
- 查看内核版本:
uname -a
- CPU相关
- cpu型号:
cat /proc/cpuinfo | grep 'model name' | sort | uniq
,输出如model name : Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz - cpu颗数/物理cpu数目:
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
,输出一般为2 - cpu的核心数/一颗CPU上面能处理数据的芯片组的数量:
cat /proc/cpuinfo | grep 'cores' | uniq | awk '{print $4}'
,输出为14 - 逻辑cpu核数(=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启超线程)):
cat /proc/cpuinfo | grep 'processor' | wc -l
,输出为56
- cpu型号:
- GPU
- 查看服务器中GPU信息:
nvidia-smi
;用这个命令判断哪几块GPU空闲。Memory Usage是显存占用;GPU利用率;每个进程占用的显存。- 显存占用和GPU占用是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系
- 动态实时监控GPU的使用情况:
watch --color -n1 gpustat -cpu
watch -n 0.1 nvidia-smi
- 查看cuda版本:
nvcc --version
- 若在一块GPU上运行程序出现显存不足的情况,可采取减小batch_size的措施
- 查看服务器中GPU信息:
- 设别空间: 在linux中设备空间有两个条件决定的:硬盘容量和inode
- 硬盘容量即硬盘可用容量
- inode即索引节点编号(记录文件的大小,拥有者,权限,区块地方等信息,可以通过stat命令查看),每个分区中都会有固定大小的inode容量,每个inode节点也会占用硬盘空间,一般是128字节或256字节,inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode,要查看各分区的inode情况可以通过
df -i
查看 - 硬盘与inode其中一项超额就会造成设备上没有空间异常错误
df -h
:判断硬盘满,发现有占用率达100% 就可以断定该分区满了。df -ia
:判断inode满,发现有占用率达100%就可以断定该分区碎片文件超多- 硬盘满了一般删除不要的临时文件,清空日志文件等不需要的文件即可(最好同时看下inode使用情况)
- inode满了一般就是垃圾小文件越多造成的,linux下有很多服务会生成日志文件,如果处理不当,几年下来删除都是个头痛事(上万文件后 rm 使用就困难,甚至rm无法全部删除)
du -sh *
可以查看当前目录下每个文件夹的大小,而ls -lh
可查看文件的大小
- Linux文件系统:也可以理解为目录拓扑,每个目录下都可以存放文件,但是每个目录下文件存放的磁盘可以不同
- 每个设备都叫一个文件,指定文件系统中某个目录到某个设备就叫挂载,而这个目录就叫挂载点
- Linux终端运行sh文件: bash xxx.sh
Linux常用命令
wget
- 下载文件: wget+网址
-O
以不同的文件名保存-c
断点续传-b
进行后台下载-i
下载多个文件(将多个URL写到一个txt文件中)
scp
- 从本地上传内容到远程服务器:
scp - r path_of_local_file remote_path
- 其中remote_path的格式为:name@ip:path
- 例如:
scp -r ... yaoqf@10.101.168.234:yaoqingfeng/Code-Repository/...
- 若有端口号可不用写
tar
- 解压: -zxvf xxx.tar.gz,其中z表示有gzip属性的,x表示解压,v表示显示所有过程
- .bz2结尾的文件是bzip2压缩的结果;tar命令使用-j这个参数来调用gzip压缩或者解压缩.tar.bz2
- 如压缩: tar -cjf images.tar.bz2 ./images/;解压缩: tar -xjf images.tar.bz2
- 解压: unzip xxx.zip
- 压缩文件.zip是大于2G的,那unzip就无法使用了
- 文件单以
gz
结尾的,解压使用gzip -d
+压缩文件名-d
表示解开压缩文件
git
- 一个分布式的代码版本管理工具,类似的常用工具还有SVN、CVS
- Git 有一个本地仓库的概念,提交代码首先是提交到本地仓库,然后再执行push命令后,才会真正push到远端的仓库。这点和svn有极大的不同
- git准备工作
- 设置用户名与邮箱:git config --global user.name "My Name";git config --global user.email "my@email.com"
- 上面设置命令中带了“--global"参数,是全局配置,影响本机上所有的git项目。也可以对一些单独的项目进行设置,进入要设置的项目目录,进行设置:git config user.name "My Name"/git config user.email "my@email.com"/查看配置:cat .git/config
- 生成和添加 SSH Keys:由于git 也是客户端,服务端的模式,要想客户端可以和服务端通信,必须在客户端生成一个key(SSH Keys),然后添加到服务端去
- 设置用户名与邮箱:git config --global user.name "My Name";git config --global user.email "my@email.com"
- 取消暂存(即已经git add但还未git commit):git restore --staged ...
- 分支
- git branch 会列出你本地分支,-a显示所有分支,包括本地和远程分支
- git branch -r:列出所有远程分支
- git branch -m
:重命名本地分支 - git remote show origin:查看远程分支和本地分支的对应关系
- git push origin --delete remote-branchname:删除远程分支
- git remote prune origin:远程删除了分支本地也想删除
- 如果你还在一个分支上,那么 Git 是不允许你删除这个分支的。所以,请记得退出分支:git checkout master
- 删除本地分支:通过 git branch -d
删除一个分支;当一个分支被推送并合并到远程分支后,-d 才会本地删除该分支。如果一个分支还没有被推送或者合并,那么可以使用-D强制删除它
- 切换到了 testing 分支: git checkout testing
- git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下/直接继承前一个分支下的内容(当然可以在新分支名后加上要继承的代码分支名); git push origin branchname
- git checkout -:快速切换到上一个分支
- git branch 会列出你本地分支,-a显示所有分支,包括本地和远程分支
- git clone git@... 出现问题permission denied fatal could not read from ... access rights repository exists host authenticity not established RSA key continue connect
- 解决: github点击头像设置SSH key,将要下到地方的ssh key加到资源的库中
- ssh-keygen -t rsa -C "your_email@example.com",然后将id_rsa.pub中的内容添加
- git diff: 输出工作区和暂存区的不同
- git diff --cached: 展示暂存区和最近版本的不同
- git diff HEAD: 展示暂存区、工作区和最近版本的不同
- git diff
: 展示本地仓库中任意两个 commit 之间的文件变动
- git config --list --show-origin: 查看所有的配置以及它们所在的文件
- git config --global user.name "Your Name"
- git config --global user.email you@example.com
- 当没有配置上述两项,则会提示git config --global --edit进行编辑,格式如下:[user] name =
email = - git config user.name # 查看用户名
- git config user.email # 查看邮箱
- git log: 查看日志(commit信息)
- 在Git中,HEAD表示当前版本,
HEAD^
表示上一个版本,HEAD^^
表示上上一个版本,往上100个版本可以写成HEAD加连续100个^,也可以写成:HEAD~100 - git log --pretty=oneline:将只会显示提交的commit id号和对应的注释
- 在Git中,HEAD表示当前版本,
- git reset --hard 版本 # 回到之前的版本,版本回退
- git ls-files -t:展示所有 tracked 的文件
- git ls-files --others:展示所有 untracked 的文件
- git remote:列出所有远程仓库
- git push/git clone出现问题:kex_exchange_identification: Connection closed by remote host/fatal: 无法读取远程仓库。请确认您有正确的访问权限并且仓库存在。
- 调试:
ssh -v git@github.com
- 尝试连接到github:
ssh -T git@github.com
- 一般是服务器的问题,需要登一下网关: curl -s http://gw.bupt.edu.cn/login --data "user=2019110633&pass=Yaofen1996&line=",涉及校园网的账户和密码;有时没有奏效需要等待一段时间再试
- 如果一直不行就是github问题了(服务器20171是http代理端口,可以git clone时设置一下代理转发,参考链接,指令后面那个domain改成localhost:20171)
- 调试:
- github展示图片: 需要上传图片,使用格式
![DATE train overview](resources/date_train.png)
进行引用
conda
- linux上安装:miniconda-->64位/python3.7,参考链接
- 创建conda环境:conda create -n env_name python=...
- 删除conda环境:conda remove -n old_name --all
- 克隆环境:conda create -n new_name --clone old_name
- 查看当前有多少个环境:conda info -e
- If you'd prefer that conda's base environment not be activated on startup, set the auto_activate_base parameter to false: conda config --set auto_activate_base false
tmux
- 翻页: 先按
ctrl+b+[
进入翻页模式,然后使用上下箭头可进行上下行的移动翻页;若要多行快速翻页,可使用fn+command
加上上下键共同执行 tmux ls
:罗列会话tmux kill-session -t 0
: 杀死会话,0表示会话编号
MacOS
- 电脑出现黑屏,按住
shift+ctrl+option
和开机键,按住几秒后松开,等待一会即可
编程工具
VSCode
- 文件内查找:
command+f
shift+command+X
: 打开插件搜索;shift+command+P
: 打开命令搜索- 点击在path中安装code命令
command+,
: 进入设置界面- 双击文件即可进入编辑模式
- 设置可通过文件-首选项(preferences)-设置进入,也可通过
shift+command+P
输入setting,选择json那一项 - 编码设置:文件-首选项(preferences)-设置-在搜索栏输入 Files: Auto Guess Encoding,勾选
- 如果没有效果,就直接修改Files: Encoding;一般就直接修改不去勾选,有时自动识别会出错
- 不要随便下载一些不相关的插件,如GBK2UTF
- 当打开文件,其内容中文乱码时,不要Ctrl+S保存文件。因为那样会保存乱码,使其无法恢复中文
- 在终端打开vscode:通过
shift+command+P
打开命令面板,然后键入以找到shell命令:shell command- 如果重启后失效,则需要先uninstall再install
- vscode中打开ipynb文件显示json格式: 可将python插件删除再重装
- vscode连服务器:
- 免密登录:将本地的公钥上传至服务器的.ssh文件夹下,命名为authorized_keys
jupyter
- 在ipynb文件中运行终端命令只要在命令前加!即可,如
!pip install ...
- 模块重载: 有时候我们需要重新import之前已经导入的模块,代码已经跑了一半了?重启?那是不可能的。在启动jupyter第一个cell运行下面代码(
%load_ext autoreload
%autoreload 2),就可以在notebook外改模块代码啦,notebook会自动重载的 - 把几个notebooks合并: 安装个nbmerge就可以merge notebook了
- pip install nbmerge
- nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
- 遇到提示:abc_code.ipynb notebook is not trusted
- 说我们notebook不被信任,导致notebooks无法导出,因此只需要一行代码就可以解决这个问题:jupyter trust file1.ipynb
- 想看你代码跑了多久?: 不用导入time模块,只要像下面加行代码即可:
- 一行代码:%time my_list = [x for x in all_items]
- 多行代码: %%time
my_list = [x for x in all_items]
with open('a.txt') as f:
'''do something'''
- 换主题
- pip install jupyterthemes
- 安装完查看下有哪些主题: jt -l
- 选择个主题:jt -t theme_name
- 然后重启即变换主题
- 参考链接
办公工具
word
- 分栏:首先不分,之后全部分为两栏,再之后根据内容需要调整为单栏或多栏