- 查看端口占用
终端输入:lsof -i tcp:port 将port换成被占用的端口(如:8086、9998) 将会出现占用端口的进程信息。
- 安装memcache
brew install memcached 安装完成后,使用如下命令启动memcached: memcached -m 32 -p 11211 -d
-
SSH转发原理
很多情况下我们本地机和服务器之间的数据连接需要SSH来加密:比如翻墙,受限的服务器访问。这个时候我们可以通过端口转发,将TCP端口的数据通过SSH连接来转发,着放佛开了一条“隧道”。相信在应用Telnet,SMTP等服务的时候没少使用过,使用起来既安全又方便
举个我最常用的例子:使用SSH搭建Jupyter notebook服务器了。我们在本地连接到远程服务器,使用本地端口转发
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
-
我们首先在服务器启动一个jupyter notebook服务。
创建一个配置文件 jupyter_config.py. 内容如下:
c.NotebookApp.ip = 'localhost' # 指定 c.NotebookApp.open_browser = False # 关闭自动打开浏览器 c.NotebookApp.port = 8888 # 端口随意指定 c.NotebookApp.password = u'sha1:d8334*******' # 复制前一步生成的密钥 作者:叶俊贤 链接:https://www.jianshu.com/p/a9de7a089834 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
然后运行
jupyter notebook --config=jupyter_config.py
这样就启动了一个jupyter服务。
-
本地端口转发:
我们在本地机器中执行:
ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host
这里,-N知名没有用命令要远程执行;-f是后台执行SSH(可以没有);-L是指定端口配置。
-
打开浏览器,输入地址: https://localhost:8888/就可以使用服务器端的jupyter notebook 了。
参考: 实战SSH端口转发
-
-
批量杀死某进程
kill -9 `ps -ef |grep Task_name |awk '{print $2}' `
其中 Task_name是要杀死的进程名
-
终端(python输出)高亮显示 开头部分:\033[显示方式;前景色;背景色m 结尾部分:\033[0m
完整格式: \033[显示方式;前景色;背景色m要打印的文字\033[0m 如果有空格,空格也会打印出来# 显示方式: 0(默认值)、1(高亮,即加粗)、4(下划线)、7(反显)、 # 前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(梅色)、36(青色)、37(白色) # 背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(梅色)、46(青色)、47(白色) print("\033[1;31;40m您输入的帐号或密码错误!\033[0m") 标准写法
-
fork: retry: 没有子进程、资源暂时不可用问题
这是由于用户的线程满了导致的。通过ulimit -a命令查看可以看到该用户的max user processes值是1024或者4096。
ulimit -u 10000
或者 ```bash $ sudo vi /etc/security/limits.d/20-nproc.conf
-
soft nproc 4096 # 修改为需要的 root soft nproc unlimited ```
-
**GIT **
git命令 作用 备注 git config credential.helper store 为当前仓库记住密码,运行一次pull/push 就不用再输密码了 git reset –hard commit_id 回退到某个历史版本 git reflog 查看命令历史 git checkout – file 丢弃工作区某文件的修改 git reset HEAD 从暂存区放弃修改到工作区 git rm 手动删除文件后从git中删除 git branch 查看分支 git branch 创建分支 git checkout 或 git switch 切换分支 git checkout -b 或 git switch -c 创建 + 切换 分支 git merge 合并 分支 到当前分支 git branch -d 删除分支 git merge –no-ff -m “info” 禁用Fast forward模式,合并分支 git stash/ git stash apply&drop 保存/恢复 工作现场 git cherry-pick 将某次“提交”复制到当前分支 git remote -v 查看远程库的详细信息 git remote add gitee git@gitee.comxx 关联gitee仓库 git branch –set-upstream-to dev=origin/dev dev 指定本地dev分支与远程origin/dev的链接 git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支 git rebase ? git tag commit_id 为某次提交打标签 git show 查看标签信息 git tag -a -m "info" commit_id 为某次提交打标签并说明信息 git push origin –tags 将标签全部推送到远程 -
Jupyter notebook设置
Jupyter notebook作为强大的草稿纸,笔记本,绘图工具…实在太强大了,反正就是万能工具,默认主题太丑了。可以给它加上漂亮的主题,如果做教程或者其他需要添加目录的东西,那么外挂必不可少。 -
MAC鼠标滚轮反向
MAC的鼠标与触摸板都是采用的自然滑滚,这对于频繁切换windows/mac的人简直要崩溃:鼠标滚轮不一样啊。那么推荐可以单独对MAC的鼠标与触摸板进行滑滚设置的插件。 - MAC安装MysqlClinet
conda install mysqlclient
-
Dash helper
Dash for MacOS太强大了,没时间多少了,赶紧上船吧。 - Home brew设置中科大(或coding)源
替换brew.git: cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc.edu.cn/brew.git 替换homebrew-core.git: cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
coding的更新速度貌似比中科大还快,节点也更多。
$ cd /usr/local/Homebrew && git remote set-url origin https://git.coding.net/homebrew/homebrew.git $ cd $home && brew update
人生不如意之事十之八九,倘若中科大也被和谐了,那么可以切换回官方,直接brew doctor,按照提示来,或者手动设置:
重置brew.git: cd "$(brew --repo)" git remote set-url origin https://github.com/Homebrew/brew.git 重置homebrew-core.git: cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://github.com/Homebrew/homebrew-core.git
-
ubuntu pip 出错
#ValueError: Unable to determine SOCKS version from socks://127.0.0.1:1080 unset all_proxy && unset ALL_PROXY export all_proxy="socks5://127.0.0.1:1080"
-
docker常用服务
docker image pull hello-world # 拉取 hello-world 镜像 docker image ls # 查看本机有哪些镜像 docker container run hello-world --name test_container # 运行这个image(hello-world),生成一个运行的容器实例 docker container ls # 列出本机正在运行的容器 docker container ls --all # 列出本机所有容器,包括已经终止运行的 docker container kill [containerID] # 终止正在运行的容器 docker container rm [containerID] # 终止运行的容器依然会占据硬盘空间,可使用rm删除 docker container start [containerID]或[containerName] # 启动容器 docker attach container_id 或 docker container exec container_id /bin/bash # 进入容器终端 docker commit 容器名 镜像名 # 将容器保存为镜像 docker save -o 保存的文件路径以及文件名 镜像名 docker load -i 镜像名 # 加载镜像 docker load -i ./Downloads/nnUNet.tar.gz docker image build -t test:0.0.1 # 创建命令test的image文件,冒号指定标签 docker rmi -f $(docker images -qa) # 删除所有镜像 docker stop $(docker ps -a -q) # 先停止运行的容器 docker rm $(docker ps -a -q) # 关闭所有容器 sudo systemctl restart docker # 重启docker服务 docker login # 登录 docker hub
构建自己的docker image。我们新建一个文本文件
Dockerfile
, 写入如下内容:FROM nvidia/cuda:11.0-base-ubuntu20.04 # 该image文件继承自官方nvidia/cuda,冒号表示标签 COPY . /app # 将当前目录下所有文件都拷贝入 image 的/app目录中 WORKDIR /app # 设置 image 的工作路径为 /app RUN npm install --registry=https://registry.npm.taobao.org # 在/app目录下执行 npm install 命令,安装后的所有依赖都将打包进入 image文件 EXPOSE 3000 # 将容器的 3000端口暴漏出来,允许外部连接这个端口
之后就可以使用命令 docker image build -t test .
来创建image 文件了。
生成容器:
docker container run -p 8888:3000 --name first -it test /bin/bash -c "sh run.sh"
各个参数意义:
-p : 容器的3000端口映射到本机的8888端口
-i : “交互模式”运行容器,
-t : 容器启动后进入命令行
--name : 为创建的容器命名
-d : 创建守护式容器在后台运行
-e : 为容器设置环境变量
--rm : 运行完后删除
/bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell
-
docker-compose 常用命令
docker-compose build # 构建项目中的服务容器 docker-compose kill # 通过发送 SIGKILL信号来强制停止容器 docker-compose config # 验证并查看compose文件配置 docker-compose create # 为服务创建容器(只是单纯的创建,还需start启动) docker-compose down #停止和删除容器、网络、卷、镜像,这些内容是通过docker-compose up命令创建的. 默认值删除 容器 网络,可以通过指定 rmi 、volumes参数删除镜像和卷 docker-compose exec # 与docker exec命令功能相同,可以通过service name登陆到容器中。 docker-compose logs # -f 指定服务 docker-compose ps # 列出项目中目前的所有容器 docker-compose pull # 拉取服务依赖的镜像 docker-compose rm [options] [SERVICE...] # 删除所有(停止状态的)服务容器。 docker-compose up [options] [SERVICE...] # 自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一些列操作
-
vim 插件
vim中浏览目录 nerdtree vim中文输入法切换[fcitx-vim-osx](https://github.com/xcodebuild/fcitx-vim-osx
-
bash 快捷键
ctrl+a: 光标移动到行首 ctrl+e: 光标移动到行尾 ctrl+u: 从光标处删除至命令行首 ctrl+k: 从光标处删除至命令行尾 Ctrl+y: 粘贴至光标后 !!: 执行上一条命令 !blah:执行最近的以 blah 开头的命令,如 !ls
-
docker login issue:
docker login https://hub.infervision.com Username: axingle Password: Error response from daemon: Get https://hub.infervision.com/v2/: unauthorized: authentication required 解决方案: 1.打开终端,su root 输入密码 2.打开 vim /etc/docker/daemon.json(若没有自行创建) 3.写入: { "registry-mirrors":["https://hub.docker.com"] # 视情况而定 } 4.重启一下docker: systemctl daemon-reload systemctl restart docker