- 1. Git
- 2. 使用GPU服务器
- 3. Screen相关命令
- 4. 使用jupyter运行程序
- 5. 部署代码到服务器
- 6. Tomcat端口占用
- 7. 修复集群
- 8. 运行Spark
- 9. 使用vsCode
- 10. 字节
1. Git
Git是一个用来版本控制的软件,在用的过程中涉及到以下内容
- 在服务器上创建仓库。首先在服务器上创建一个文件夹,例如test。cd到这个文件夹下,使用
git init
命令,将该文件夹初始化为一个git仓库,会看到这个文件夹下多了一个.git的文件,然后我们把项目代码拷贝到test这个文件夹下。 - 在自己的电脑上下载并安装Git软件
- 从服务器git仓库上把代码clone到本地电脑。首先在自己电脑上,创建一个保存代码的目录,在这个目录下右键选择
Git Bash
,输入下面的代码git clone username@172.11.11.111:/file0/repo/EQ/
,这样服务器git仓库中的东西就完封不动的clone到本地了。 - 在自己电脑上打开eclipse或者myeclipse,在file中导入这个项目,就可以进行修改代码了。
- pull和push。右键选中这个工程,点击
team
,就可以对项目进行pull和push。当在本地修改完代码,本地的git会记录下来这些改动,所以本地文件夹中的git也有原先的历史记录,当push的时候会读取本地的git,找到本地的代码在服务器上的源,然后把改动同步到服务器上的git中。 - 除了使用eclipse中的team来pull和push代码,还可以使用命令来进行pull或push。每次改完代码提交的时候,打开EQ这个目录(一定要在这个目录下,因为只有这个目录有git这个文件夹),右键
Git Bash Here
输入以下命令:git add –all
,git commit –m "修改说明"
,git push
- 每次写代码之前,先进行pull。也是打开EQ这个目录,右键
Git Bash Here
输入以下命令:git pull
这样就会把别人改动过的代码更新到EQ这个文件夹下。
问题1:在eclipse中右键点击team—>show in History,会出现所有的改动。点击改动的一个文件,应该会出现2个窗口,一个窗口显示现在的代码,一个窗口显示原先的代码,可以明显的看出哪里进行了改动,但是我的电脑确没有出现历史窗口,只有现在代码的窗口。
解决: 在点击show in history之后右键一个文件,点击“compare with previous version”就会出现历史窗口。
问题2:在每次写代码之前都要先pull一下,把别人push的代码拉取到本地。但有时候你在写代码之前忘了pull别人的代码,直接在本地电脑上修改,然后你在pull别人的代码时会出现conflict,那是因为你和服务器上的代码修改了同一个地方,git不知道该采用谁的修改。
解决: 首先在eclipse中,右键点击team,把你自己本地的代码先commit,不要push。然后打开vscode,导入和eclispe中一样的代码(和eclipse导入的代码在同一个文件下,带有.git),然后在vscode中点击左侧的第三个图标(git的图标),然后在...
中右键从服务器上pull到本地。然后再点击左侧的第一个图标,在这里面如果文件的右侧出现M,说明这个文件被修改过,然后你在这里面进行解决冲突。是采用本地的修改还是采用服务上的修改。等到冲突都解决时保存。然后再回到eclispe,会发现项目已经没有报错了。这时在eclispe中右键team,把代码commit and push到服务器中。
2. 使用GPU服务器
涉及到2个软件:Putty是一个ssh工具。FileZilla用户和服务器进行文件传输。
2.1. 查看当前GPU的占用情况
nvidia-smi
gpustat -i 2
:其中-i 2
是可选的,表示每2秒刷新一次。
2.2. 查看当前的进程是谁的
ps -ef | grep 进程号
kill -9 进程号
2.3. 查看某个用户的进程
ps -ef|grep WangBeibei
3. Screen相关命令
3.1. 新建窗口
新建一个窗口有3种方法:
- screen #这样就可以新建窗口,进入到一个窗口中,但是这样窗口就没有名字,无法区分他们
- screen -S name #这样新建一个名字为name的窗口,并入到该窗口中
例如:screen -S count 新建了一个叫count的窗口并进入 - screen command #这样新建一个窗口并在窗口中执行command,同样没有名字
例如:screen python ./a.py 新建并执行a.py程序
3.2. 会话分离
我们在一个窗口运行某个程序之后,想退出登录关闭terminal干点别的事,让程序在后台运行。这时就需要和窗口会话分离,有2种方式:
- 在当前会话窗口中按Ctrl+a +d快捷键可以实现分离,这时窗口会弹出[detached]的提示,并回到主窗口。
- screen -d name #远程detach某个session,前提是已经跳出了name窗口
3.3. 恢复会话窗口
首先查看有哪些窗口正在运行
screen -ls #列出窗口列表
There is a screen on:
2637.count (12/17/2015/10:00:32 AM) (Detached)screen -r 2637 #进入2637线程,恢复count会话窗口
这样就能回到count窗口了
3.4. kill会话窗口
如果想关掉一个多余的窗口,有3种方法:
kill -9 threadnum
例如在上面的2637,kill -9 2637 即可杀死线程,当然就杀死了窗口- 使用
Ctrl a +k
杀死当前窗口和窗口中运行的程序 screen -S 进程号 -X quit
3.5. 清除死去的窗口
当窗口被杀死后,再用screen -ls
可以看到该窗口后面的(???dead)字样,说明窗口死了,但是仍在占用空间。这时需要清除窗口screen -wipe #自动清除死去的窗口
3.6. 解除窗口占用
有时你以为已经退出窗口了,但是screen -ls
命令仍显示该窗口是attach
状态,说明该窗口xxx时被占用的,可以用screen -d xxxx
来解除占用后再进入。
4. 使用jupyter运行程序
- 创建一个jupyter窗口
screen -S jupyter
- 激活虚拟环境并启动jupyter
source activate insis_template_3.6
激活环境jupyter notebook
打开jupyter 端口映射
第一次使用jupyter notebook,需要映射端口号,默认jupyter notebook的端口号是8888,但是在这个集群上,如果别人已经把8888端口占用了,集群会自动给你分配一个端口号,然后在putty中映射一下这个端口,具体操作如下:
在菜单栏选中change setting,找到Tunnels浏览器中打开
使用screen创建一个窗口运行jupyter notebook程序的好处:就算ssh和28号服务器的连接断开,jupyter notebook的程序依然可以在后台运行。如果你打开的jupyter notebook的程序运行完了,有3种关闭程序的方法:
1、在jupyter notebook菜单栏,有一个close and hot的按钮。
2、在jupyter notebook中running中shutdown掉程序
3、screen -r 23560切入到虚拟窗口,然后在这个窗口ctrl+c
关闭jupyter notebook进程。不用使用exit,因为使用exit是关闭
虚拟窗口,直接按shift+a+d从虚拟窗口中切出,这样这个窗口
5. 部署代码到服务器
- 首先在服务器上安装Tomcat
- 使用FileZilla进入到服务器,使用putty进入到服务器。
- 关闭Tomcat:使用putty cd到到file0/apache-tomcat下,输入bin/shutdown.sh关掉Tomcat服务器。然后把webapps下的项目删除,进入到logs删除里面的日志。
- 使用eclipse把项目导出成war压缩包
- 使用FileZilla把war上传到webapps下。
- 使用bin/startup.sh启动Tomcat服务器
- 查看日志主要在catalina.out这个文件中
- 浏览器查看,http://hz1:8080/EQ/jsp/login.jsp
6. Tomcat端口占用
- win + R,输入cmd回车进入dos界面
- 输入netstat -ano|findstr 8080 查看占用8080端口的进程
- 输入taskkill /pid 10148 /f 将显示的进程号(我的是10148)结束掉
- 重启tomcat
7. 修复集群
当集群中有个节点不能启动时,可以在虚拟机管理界面把虚拟机启动。
在浏览器中输入https://172.31.43.150
点击“登录到vsphere web client”
用户名:xxxx,
密码:*,
点击右侧的“vCenter清单列表”,然后点击左侧的“虚拟机”,在左侧找到需要重启的虚拟机,单击选中,在右侧“关闭虚拟机电源”,关闭后再点击“打开虚拟机电源”。这样就把虚拟机重启了。还需要启动Cloudera manager agent。使用putty,例如输入hz5,
进入到ssh,用户名xxx,密码**。
先和server同步时间ntpdate hz1,
然后启动agent:/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent start
平时就可以使用/vsphere-client/?csp#extensionId%3Dvsphere.core.viVms.domainView
8. 运行Spark
不论是用什么语言写的spark程序在运行的时候都要用spark-submit来运行
如果是java程序需要指定—class 主程序的报名.类名
例如—class test.Test
python不需要指定—class这个参数
- local模式:spark-submit —class test.Test —master local[2] mySpark.py
- standalone模型: spark-submit —class test.Test —master spark://hz4:7077 mySpark.py
- yarn模式: spark-submit —class test.Test —master yarn mySpark.py
9. 使用vsCode
使用vscode编写python程序时,如果出现空格和Tab共用时导致程序出错。需要把所有的Tab换成空格,在vscode最下面有一个蓝色的条纹,在条纹的右边有”空格4”,点击这个字,然后在vscode的最上面会出现几个选项:点击“将缩进转换成空格”这个选项,再运行就没错了。
10. 字节
int是4个字节,无论数字多长都是4个字节,如果用string定义数字时,字节的长度就是字符的个数。
1 | int a = 11111111; |
输出如下所示: