本篇涉及一些常用操作及查询手册,汇总在这里 ,不断补充
MacDetails
Softmare
用途 | 软件 |
---|---|
编辑器+IDE | vscode,Typora,Subline3,Xmind |
终端 | ITem2,oh-my-zsh |
办公文档 | MS-onedirve, onenote, OS-keynote,pages,numbers |
截图,快捷键 | snipaste,cheatsheet |
硬盘 | paragon for Mac 15 |
公式截图转latex | mathpix snipping tool |
video/music | Inna,MPV |
网络调试 | postman |
温度控制 | TempMonitor |
Vim配置 | https://github.com/amix/vimrc |
Homebrew | https://brew.sh/ |
修改电脑名(侧边栏) | sudo scutil –set ComputerName xxx |
修改终端显示主机名 | sudo scutil –set HostName xxx |
修改本地主机名 xxx.local | sudo scutil –set LocalHostName xxx |
BugFix
Mac无法播放音乐或视频
1
sudo killall coreaudiod
修改名称
- 电脑名,finder侧边栏显示的名称 sudo scutil –set ComputerName xxx
Jupyter服务器布置
RT,由于服务器端是不提供图形界面的,因此在进行开发时候,一般采用的是本地开发调试,通过之后再进行服务器端的deploy
,对于机器学习来说,由于本人使用的Mac
电脑,硬件配置是在堪忧,而服务器端用的是4*1080Ti
,如何实现在服务器端启动jupyter
服务,并且在本地进行文件编写及测试呢?
登录远程服务器,一般的使用的是
ssh
的方式1
ssh usrname@server_url
提示输入密码登录即可
确保在服务器端安装了
jupyter notebook
或者jupyterlab
,可以先进入个人账户名下的虚拟环境并激活,接下来进行jupyter
的设置1
2
3
4
5
6sudo pip install pyzmq
sudo pip install tornado
sudo pip install jinja2
sudo pip install jsonschema
sudo pip install jupyter
sudo pip install jupyterlab生成配置文件
1
jupyter notebook --generate-config
生成的配置文件保地址为
1
~/.jupyter/jupyter_notebook_config.py
生成本地登录密码,在服务器端打开
ipython
1
2
3
4
5
6In [1]: from IPython.lib import passwd
In [2]: passwd()
# 这里输入的密码为本地访问服务器jupyter是需要输入的密码
Enter password:
Verify password:
Out[2]: 'sha1:0e422dfccef2:84cfbcbb3ef95872fb8e23be3999c123f862d856'保存并复制生成的密码
sha1:....
,修改第三步生成的配置文件1
vim ~/.jupyter/jupyter_notebook_config.py
会看到该文件大部分为注释,随便选个位置复制粘贴如下内容并保存配置文件
1
2
3
4
5c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =9999 #随便指定一个端口,为本地访问的端口
c.IPKernelApp.pylab = 'inline'服务器端启动
jupyter
下面这两个启动一个就可以,
jupyter lab
为jupyter notebook
的高级版本1
2$ jupyter notebook # 启动notebook
$ jupyter lab # 启动jupyterlab本地访问服务器端启动的
jupyter
在本地浏览器输入如下地址
server_url:port
,其中server_url
为服务器的url地址,port
为在第五步设置的端口此时会弹出输入密码窗口,输入第四步设置的密码即可实现登录
PyPI配置
配置源
python中一般使用pip或者conda进行package安装,在国内推荐使用镜像加速的功能,
linux && Mac
修改 ~/.pip/pip.conf (没有就创建一个), 修改 index-url至tuna,内容如下:
1 | [global] |
设置一个镜像即可,推荐使用阿里镜像
Windows
直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
1 | [global] |
requirement.txt相关
使用 pip freeze
1
2# 生成 requirements.txt
pip freezepipreqs
相关连接https://github.com/bndr/pipreqs
1
2
3
4# 安装
pip install pipreqs
# 生成requirements.txt
pipreqs /home/project/locationpigar
相关链接https://github.com/damnever/pigar
1
2
3
4
5
6
7
8
9
10
11
12
13# Generate requirements.txt for current directory.
$ pigar
# Generate requirements for given directory in given file.
$ pigar -p ../dev-requirements.txt -P ../
# Specify a requirements file.
$ pigar -c ./requirements.txt
# Or, you can let pigar search for *requirements.txt in the current directory
# level by itself. If not found, pigar will generate requirements.txt
# for the current project, then check for the latest versions.
$ pigar -c安装requirements
1
pip install -r requirements.txt
虚拟环境
CONDA
下载anaconda
在.zshrc中加入一行
1
PATH="$HOME/anaconda3/bin:$PATH"
source .zshrc 生效
命令行启用conda
创建环境,conda create -n env_name python=2.7
首次启用会报错,使用source activate env_name的方法
之后可以使用conda的方式激活,conda activate env_name
如果要更换环境内的python版本,使用conda install python=xx
Conda配置源
使用conda默认package下载路径一般下载较慢,在conda中配置源,类似于pip配置方法,提升下载速度
文件~/.condarc
在文件中添加
1 | auto_activate_base: false |
第一行表示是否默认启动base环境,默认为true,此处更改为false
第二行表示源的url,此处使用的中科大和清华源
第三行表示是否展示package来源于那个url中
conda安装本地文件
1 | conda install --use-local your-pkg-name |
Conda添加系统路径
使用conda管理环境,但是在系统中存在很多公共包,外网无法安装,这时候需要在conda的虚拟环境中添加环境路径
解决方法:
参考链接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c10/p09_add_directories_to_sys_path.html
首先查看默认python的环境,找到默认python中的环境
在conda环境下添加路径文件
在环境的’lib/python2.7/site-packages/‘路径下创建’add.pth’文件
在’add.pth’内部填写python中的路径
1
2
3
4
5
6
7
8/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/data00/tiger/ss_lib/python_package/lib/python2.7/site-packages
/usr/lib/python2.7/dist-packages
/usr/lib/pymodules/python2.7
/opt/tiger/ss_lib/python_package/lib/python2.7/site-packages之后再次查看conda环境下的路径,可以看到已经将’pth’文件内的路径加入到了环境路径内
virtualenv
want | coding |
---|---|
linux install | sudo apt-get install python-virtualenv |
virtualenv如果继承全局Python的库 | virtualenv –system-site-packages venv |
默认不使用全局Python安装的库 | virtualenv venv |
激活虚拟环境 | source venv/bin/activate |
关闭虚拟环境 | deactivate |
常用命令
归纳常用命令如下
Description | Command |
---|---|
install latest version | pip install xxx |
Install Specified version | pip install xxx==version |
show package list | pip list |
show specified package details | pip show numpy |
update all packages | pip freeze –local \ | grep -v ‘^-e’ \cut -d = -f 1 \xargs pip install -U |
update specified package | pip install -U numpy |
Generate requirements.txt | pip freeze |
Install requirements.txt | pip install -r requirements.txt |
Linux常用命令
查找文件夹下的指定文件名文件
1 | find ./ -name "*.png" |
如上是查找文件名后缀为png的文件
查看文件夹的文件数量
- 统计当前目录下文件的个数(不包括目录)
1 | ls -l | grep "^-" | wc -l |
- 统计当前目录下文件的个数(包括子目录)
1 | ls -lR| grep "^-" | wc -l |
- 查看某目录下文件夹(目录)的个数(包括子目录)
1 | ls -lR | grep "^d" | wc -l |
用户相关
使用root权限添加用户
root@host 登陆
添加用户
useradd -d /data00/home/xxx -m -s /bin/bash xxx
1
2
3
4
5
6
7
添加用户,并指定用户bash
- 为用户设置登陆密码
```bash
passwd xxx如果在新建用户的时候没有指定shell,可以使用命令:
1
usermod -s /bin/bash user0;其中user0是用户名,来为用户指定shell;
2、可以使用命令将用户添加到sudo用户组:
1
usermod -aG sudo user0;这儿的a参数代表追加 。或者命令 gpasswd –a user0 sudo;
删除
#### 过滤删除
1 | shopt -s extglob |
过滤删除文件,!表示不要删除括号内文件
快速删除大文件
如果目录中文件太多,使用常用的rm -rf
进行删除,会耗费大量时间,推荐使用
1 | # 先创建一个空目录 |
选项说明
1 | -delete-before 接收者在传输之前进行删除操作 |
rsync快的原因
1 | rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复遍历很多次; |
添加环境
1 | # 添加当前文件夹到环境中 |
如果需要添加到系统默认启动的环境中,可以在home
目录下的.bashr
或.zshrc
文件下添加上述内容
解压缩文件
进行文件的解压缩操作
want | how to | Description |
---|---|---|
Zip compress | zip -r myfile.zip ./* |
将当前目录下的所有文件和文件夹全部压缩成myfile.zip 文件,-r表示递归压缩子目录下所有文件. |
zip -d myfile.zip smart.txt |
删除压缩文件中smart.tx t文件 |
|
zip -m myfile.zip ./rpm_info.txt |
向压缩文件中myfile.zip 中添加rpm_info.txt 文件 |
|
unzip -o -d /home/sunny myfile.zip |
把myfile.zip文件解压到 /home/sunny/ | |
zip -e yourZipFileName.zip yourSourceFile |
创建加密压缩文件-压缩单个文件 | |
zip -e -r yourZipFileName.zip yourSourceFileDir |
创建加密压缩文件-压缩文件夹 | |
jar xvf xx.zip | unzip无法解压的时候试试这个 | |
tar -zcvf /home/x.tar.gz /x |
将文件夹压缩到指定路径 | |
tar | tar -zxvf /x.tar.zip -C /home/x |
将tar解压到指定目录 |
如果压缩文件较大或者压缩文件中文件数量较多,使用cpu并发进行解压缩
安装pigz
1
sudo apt install pigz
打包文件
1
tar --use-compress-program=pigz -cvpf package.tgz ./package
解压文件
1
tar --use-compress-program=pigz -xvpf package.tgz -C ./package
查询ip地址
1 | ip addr show |
使用ip addr show
得到下述信息
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 |
可以看到ip为10.224.11.207
端口为22
使用hostname -I
得到信息如下
1 | 10.224.11.207 172.17.0.1 |
查询系统信息
1 | uname -a |
查询得到系统的版本,内核信息
1 | shixiaofeng@n224-011-207:~$ uname -a |
GPU进程管理
查看GPU当前使用信息
每个10s循环查看信息
1
watch -n 10 nvidia-smi
安装
pip install gpustat
,实时监控1
watch --color -n1 gpustat -cpu
查看GPU显存占用情况
1
sudo fuser -v /dev/nvidia*
kill进程
- 强制杀死进程
1 | kill -9 PID |
- 过滤删除进程 killall
1 | killall -9 xxx |
这里xxx表示过滤条件,通过给定的xxx作为过滤条件删除进行
1 | ps -ef | grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9 |
和killall差不多,这里的xxx也是进程的过滤条件
Hadoop 常用命令
Reference
https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
command
Description | HowTo |
---|---|
从hdfs拉取文件到本地 | hdfs dfs -get hdfs_file local _file |
hadoop fs -get hdfs_file local_file | |
在hdfs上创建文件夹 | hdfs dfs -mkdir hdfs_dir |
hadoop fs -mkdir hdfs_dir | |
将本地文件上传Hadoop | hdfs dfs -put local_file hdfs_file |
上传之前最好将文件打包,文件不怕大,就怕文件碎 | hadoop fs -put local_file hdfs_file |
SSH配置
GitHub+GitLab
场景
对于 Git 来说,邮箱是识别用户的唯一手段,所以对于不同的服务商,由于邮箱不同,那么通过邮件名创建的 SSH Key自然是不同的,这时候在不同的服务商之间进行push命令的时候,Git 是不知道使用哪个 SSH Key ,自然导致 push 的失败。场景如下:
- 在公司团队使用搭建的 Gitlab 服务,提交邮箱$xxx@company.com$
- 个人 Github 服务,提交邮箱$ xxx@163.com$
- 有两个Github账户,不同的账户想不通的服务器进行提交
解决方案-gitconfig
- 首先进行全局配置,在不加特殊说明时,默认使用全局用户名及用户邮箱
- 该文件路径
~/.gitconfig
1
2全局配置,Github仓库中默认使用此配置
git config --global user.name 'github' && git config --global user.email 'xxx6@163.com'Generate ssh key and upload to github/gitlab
1
2
3
4生成默认,Github使用
ssh-keygen -t rsa -C " xxx@163.com"
生成公钥、密钥的同时指定文件名,Gitlab使用
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "xxx@company.com"执行命令之后,会在文件夹
~/.ssh
文件夹下生成id_rsa.pub
和id_rsa.gitlab.pub
两对ssh key文件id_rsa.gitlab.pub
为为要上传到gitlab的密钥文件id_rsa.pub
文件为要上传到github的密钥文件
配置config文件
在
~/.ssh
目录下,如果不存在config文件,则新建touch ~/.ssh/config
添加内容如下:1
2
3
4# Host 进行过滤设置,如果仓库的前缀符合gitlab.yc345.tv,均采用~/.ssh/id_rsa.gitlab这个密钥进行验证连接
Host gitlab.yc345.tv*
IdentityFile ~/.ssh/id_rsa.gitlab
User gitlab测试连接
首先在github和gitlab账户下添加对应的pub密钥
进行测试:github+gitlab
1
2
3
4
5
6
7
8
9测试github连接
ssh -T git@github.com
得到输出信息如下
Hi xiaofengShi! You've successfully authenticated, but GitHub does not provide shell access.
####################
测试gitlab连接
ssh -T git@gitlab.yc345.tv
得到输出信息如下
Welcome to GitLab, @shixiaofeng!
使用方法
对于日常个人使用github来说,不需要进行特殊设置,会自动使用全局设置
对于在公司内部来说,由于在config中进行了设置,也不用进行特殊设置,会根据设置的config文件,对于
gitlab.yc345.tv*
形式的仓库使用对应设置的密钥连接在本地新建要上传到gitlab的项目,在创建之后要在仓库目录中进行local设置,方法如
1
2团队项目配置,每次新创建一个项目,需要执行下
git config --local user.name 'gitlab' && git config --local user.email 'xiaofeng@company'
Github+Github
场景:
一台电脑多人使用,这时候需要进行多个ssh key的管理,方法与github+gitlab相同
首先同样进行全局设置,如果没有特殊声明,就会使用全局设置
1
git config --global user.name 'github' && git config --global user.email 'sxf1052566766@163.com'
生成ssh key
使用不同的邮箱生成密钥文件名
配置config文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20该配置用于用户xiaofeng
Host 服务器别名,这个别名以后在clone、pull、push时替代具体的IP或域名
Host xiaofeng
HostName 服务器ip地址或机器名
HostName github.com
User连接服务器的用户名
User git
IdentityFile 密匙文件的具体路径
IdentityFile ~/.ssh/id_rsa
该配置用于用户icey
Host
Host icey
HostName 服务器ip地址或机器名
HostName github.com
User连接服务器的用户名
User git
IdentityFile 密匙文件的具体路径
IdentityFile ~/.ssh/id_rsa_icey测试
1
2
3
4测试用户xiaofeng
ssh -T git@xiaofeng
测试用户icey
ssh -T git@icey使用
clone
假设仓库ssh为
git@github.com:xiaofengShi/CV-detection.git
在进行clone时要使用
git clone git@xiaofeng:xiaofengShi/CV-detection.git
也就是将原来的guthub.com改成xiaofeng ,会使用xiaofeng这个账户进行仓库的clone
pull & push
1
2
3git remote add origin git@xiaofeng:mti/xxx.git
git pull origin master
git push origin master
gitignore
在项目文件中使用.gitignore
对文件是否进行上传过滤,比如一些大的数据文件或者临时文件显然是不希望上传到github上的,编写规则如下
1 | ## 使用文件扩展名进行过滤 |
ssh连接服务器
在日常工作中,一般使用ssh的方法对开发机进行配置,配置之后可以实现免密登录
相关链接:https://blog.csdn.net/knight_zhen/article/details/47001449
本地生成密钥对,如果已经存在了,那么就用已经存在的密钥对就可以,保存的路径在
~\.ssh
系统中默认使用的密钥是id_rsa,如果不想用默认的密钥,跟上文中配置GitHub+gitlab的方式,在
.ssh\config
文件中加入1
2
3
4
5
6
7# 设置服务器地址
Host crm.abc.com
# 设置一个用户名
User xxx
PreferredAuthentications publickey
# 如果满足设置的服务器地址,那么让ssh寻找下面的私钥进行配对
IdentityFile ~/.ssh/id_rsa.abc上传密钥到服务器,并把公钥的内容添加到服务器端的
.ssh/authorized_keys
中1
2
3scp ~/.ssh/id_rsa.pub user@host_id
ssh user@host_id
cat id_rsa.pub >> ~/.ssh/authorized_keys依次执行上述命令
设置私钥和公钥访问权限
本地私钥权限
1
2chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa服务器端设置公钥权限
1
2chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
GitHub&GitLab
.gitignore
创建仓库的时候推荐先创建文件.gitignore
,文件中记录不需要上传到远程仓库的文件或路径,这里记录一个常有的.gitignore
模板文件。
1 | Initially taken from Github's Python gitignore file |
实际上看
删除远程仓库中的文件夹
有时候会误操作,比如在没有写.gitignore
之前进行了add和push操做,但是仓库中包含一些很大的文件,比如一些模型的预训练权重,这个时候想要删除已经存在于远程仓库的文件,具体操作方法
- git clone xxx 拉取远程仓库到本地
- git rm -r xxx 在本地删除想要删除的路径
- git commit -m “remove ignore directory”
- git push -u origin master 上传本地至远程
经过上述操作,远程仓库会被更新并且删除了你在本地删除的路径。
LINUX+ZSH
在Mac上安装zsh的教程有很多了,在Linux上安装zsh替换默认的bash,服务器上的bash实在是难用
安装zsh
1
sudo apt-get install zsh
更改系统默认设置
1
2
3sudo vim /etc/passwd
# find you name and change the bash to zsh
# convert from name:x:2017:2017::/data00/home/name:/bin/bash to name:x:2017:2017::/data00/home/name:/bin/zshInstall oh-my-zsh
1
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
更改主题显示样式
默认的zsh主题是robbyrussell.zsh-theme,
cd ~/.oh-my-zsh/themes
这里先备份一个并重命名为my_robbyrussell.zsh-theme修改文件my_robbyrussell.zsh-theme第二行为
1
PROMPT='${ret_status} %{$fg[cyan]%}%M:[$PWD]%{$reset_color%} $(git_prompt_info)'
1
PROMPT='%{$fg_bold[red]%}-> %{$fg_bold[green]%}%p%{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}~#:'
修改~/.zshrc 文件中的theme为”my_robbyrussell”
source ~/.zshrc
高亮zsh-syntax-highlighting
1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
自动补全 zsh-autosuggestion
1
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
CUDA
install
安装NVIDIA驱动
使用
nvidia-smi
进行测试,如果没有该命令,需要安装,安装链接为https://www.nvidia.com/Download/index.aspx?lang=en-us ,如果已经安装,进入下一步安装cuda
首先要查询想要安装的TensorFlow版本与cuda版本的对应关系,可以在此处查询https://www.tensorflow.org/install/source,另外,补充TensorFlow1.14.0 对应cuda10.0
确认好版本之后在此处进行下载https://developer.nvidia.com/cuda-toolkit-archive 以cuda10+linux为例,当安装的是debain版本时,选择14.04的版本,因为cuda是向下兼容的,这样可以避免出错,
推荐下载runfile的方式,安装方式如下
1
2
3Installation Instructions:
Run `sudo sh cuda_10.0.130_410.48_linux.run`
Follow the command-line prompts按照提示一步步进行安装即可,最后在
.zshrc
或者.bashrc
中加入cuda的路径
安装cudnn
根据安装的cuda版本找到对应的cudnn版本,尽量选择runtime版本,下载完之后,进行安装
1
sudo dpkg -i xxx.deb
安装tensorflow
1
pip install tensorflow-gpu=1.14.0
VIM
TMUX
http://blog.leanote.com/post/braveapple/Linux-%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE-tmux
install
1
sudo apt install tmux
install theme refer
1
2
3
4cd ~
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .install plugin
1
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
编辑配置文件
~/.tmux.conf
:
1 | set -g default-terminal "screen-256color" # colors! |
重新导入
tmux
配置环境1
tmux source ~/.tmux.conf
安装插件使配置文件生效
tmux new-session -s install
# 创建一个 tmux 会话- 在
tmux
会话中,按下快捷键Ctrl + a + I
或者Ctrl + b + I
(注意I
是大写,因此需要按下Shift + i
) - 输入以下命令,查看
tmux
配置已经导入系统环境中
1
tmux show-options -g
- 在