项目上线部署的时候,领导要求直接jar包运行,特此研究了一下。

前期准备:

1.待运行的jar包:ROOT.jar

2.装好了jdk的linux环境

具体操作如下:

在/home/greatwall目录下建立一个项目jar目录用于存放我们打的包

将打包好的jar包上传到localJar目录下,注意打包时的项目端口号,我用的是9080端口

检查当前是否有进程占用待启动项目的端口号,如果没有可以考虑启用项目了,如果有,需杀掉此进程释放9080端口号

停止运行jar包也是此操作

启用项目jar,注意此处需要nohup后台启动项目,否则关闭服务器会导致项目停止运行

nohup Java -jar 包名.jar &            //意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行 

可以查看通过查看nohup.out来查看项目启动情况,也可以查看项目配置的日志路径来查看

日志显示缺少达梦驱动(项目用到了达梦驱动,maven下不下来,我给单独放在了lib包下,打包估计没打进来)

我的解决方案是,首先查看当前linux服务器的jdk安装路径 

命令最后一行可看到我的jdk装在了/usr/java/jdk1.8.0.231目录下,将lib下的达梦驱动jar包放到 jdk所在目录/jre/lib/ext目录下即可

此时再次运行nohup java -jar xxx.jar  &    命令即可 正常启动

 

1.lunix系统

通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少

在这里插入图片描述
open files那一行就代表系统目前允许单个进程打开的最大句柄数,这里是1024。
使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件

解决方法

ulimit -n 20480
这样就可以把当前用户的最大允许打开文件数量设置为20480了,但这种设置方法在重启后会还原为默认值。
ulimit -n命令非root用户只能设置到4096。

2.代码检查

代码一些连接对象或者io流对象用完之后是否用finally及调用close进行关闭关闭

       作为当今最顶尖的网络审计工具之一,Nmap 在国外已被大量的网络安全人员所使用,它的身影甚至出现在了很多的优秀影视作品中,其中影响力最大的要数经典巨著《黑客帝国》系列。在《黑客帝国2》中,Tritnity 就曾使用Nmap攻击SSH服务,从而破坏了发电厂的工作(攻击只是Nmap的副业,扫描才是Nmap的主要功能)。

       目前的Nmp已经具备了主机发现功能、端口扫描功能、服务及版本检测功能、操作系统检测功能。另外除了这些基本功能之外,Nmap还可以实现些高级的审计技术, 例如伪造发起扫描端的身份、进行隐蔽的扫描、规避目标的防御设备(例如防火墙)、对系统进行安全漏洞检测并提供完善的报告选项等。在后来的不断发展中,随着Nmap强大的脚本引擎NSE的推出,任何人都可以自己向Nmp中添加新的功能模块。

       如果我们使用Kimp对台计算机进行审计的话,最终可以获得如下的目标信息:

  • 目标主机是否在线
  • 目标主机所在网络的结构
  • 目标主机上开放的端口
  • 目标主机所使用的操作系统
  • 目标主机上所运行的服务以及版本
  • 目标主机上所存在的漏润

 Nmap 的基本用法


1.对单个主机的扫描

命令:nmap <目标ip>

 

在第一行中给出了Nmap的版本为7.80,扫描开始时间为2020-06-09 4:10第二行是一个标题,生成的是关于192.1681.7 主机的报告。第三行给出目标主机的状态为up (意味着这台主机是处于开机并连上了互联网的状态)。第四行表示在进行检查的1000个端口中,有985个是关闭的。

接下来是一张表,这个表中一共有3个字段,分别是PORT、STATE、SERVICE, 其中PORT指的是端口、STATE指的是状态、SERVICE指的是运行的服务。例如第一行的PORT列的值为22/TCP。STATE列的值为open,SERVICE列的值为ssh,完整的含义就是nmap发现目标计算机上的22号端口目前处于开放状态,这个端口提供着ssh服务。


2.对连续范围的主机扫描

命令:nmap -sn <ip地址范围>

可以输入以上的命令来选择扫描从192.168.1.7-192.168.1.255的主机,这里面为了保证速度,我使用了-sn参数,这个参数的意义是只扫描是否在线,不扫描端口。在这里可以看到通过这次扫描,在这个子网中共有11台设备。另外为了节约扫描时间,所以使用了-sn参数。

 


3.对整个子网进行扫描

命令:nmap -sn <ip地址/掩码位数>

如果要扫描192.168.1.1-192.168.1.255整个子网范围的话,还可以使用以上命令。扫描结果是4台主机存活在线。


 

4.扫描全部端口

命令:nmap -p "*" <ip地址>

 

扫描结果是端口全部关闭。

若是有端口开放就是以下画面:


5.扫描指定端口

命令:nmap -p <端口号ip地址>

结果是此主机的80号端口是关闭状态。


小结

我们以nmap作为工具,介绍了几种主动扫描的方法。nmap功能极为强大,提供了数十种的扫描技术。这些功能极为强大而实用,作为和Metasploit相并列的渗透行业两大神器之一,要描述nmap的强大功能需要大量的篇幅,如果希望能够深入了解nmap,可以参考《诸神之眼——nmap 网络安全审计技术揭秘》。

 

——内容来源:《Kali Linux2 网络渗透测试实践指南(人民邮电出版社)》

1、 下载虚拟机

(比如VMware-workstation-full,官网下载试用版就好就好)
在“免费产品试用版和演示”栏点“Workstation Pro”,选择相应版本。

2、安装虚拟机

windows下很容易安装,安装后在网上搜个序列号就行。
ubuntu下安装虚拟机如下:
linux下的安装文件如右VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle
使用户具有对文件的执行权:chmod a+x chmod a+x ~/下载/VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle;不要放到根目录下去设置。
运行文件安装虚拟机:sudo ~/下载/VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle
然后等待两分钟,如果屏幕出现‘无法在模块路径中找到主题引擎:“murrine”’,暂时不用管。
之后出现安装界面,一路向下就行,这里记录向安装位置“/var/lib/vmware/Shared VMs”,https port:443,免得以后要进行其他操作自己以后忘了装在哪里了。
license key先不管,先安装。
安装完后,在dash中输入vmware就可以看到安装好的程序。第一次打开会提示输入序列号,在网上搜个序列号试试。

3、VMware简介

windows下VMware的界面如下:
这里写图片描述
ubuntu下界面跟windows差不多。
在文件菜单下可以新建虚拟机等操作。
可以创建多个新虚拟机,在每台虚拟机上安装和进行相关配置(配置文件可以从一台机器复制到其他虚拟机);也可以先在一台虚拟机上装好系统、进行配置并装好各种软件后,直接克隆就可以,几台虚拟机的是一样的;然后再去设置网络、主机名称这些,这样会很少很多事。
装完系统后还可以对虚拟机进行其他的一些设置,比如内存,屏幕显示等。
虚拟机有快照功能,记录某一时刻的系统,未来因为装软件把系统搞乱了可以回到之前的某个状态。

4、装系统

与物理机装系统的过程相似。
在使用过程,可能因为虚拟机不稳定导致系统进不去,此时可以到系统的安装目录去扫描这个系统,进行重新加载。
centos与ubuntu的安装过程相似

一、 Android架构
Android就是包括一个操作系统、中间件和关键应用的移动设备的一个软件堆。
从底层到上层共包括四层:
1、 Linux内核层
Linux操作系统及驱动
2、 系统库和Andriod运行时
系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带,通过JAVA本地调用JNI(Java Native Interface)的接口函数实现和上层之间的通信。
Android运行时包括核心库和Dalvik虚拟机,主要由C和C++实现。
3、 应用框架层
是Android应用开发的基础,主要由Java语言实现,为应用层提供API。应用层框架提供了可以服用的组件,提供了应用开发的规范,屏蔽了应用层和底层交互的复杂性。
4、 应用程序层
核心应用程序包、Java语言设计和编写的应用程序,两者彼此平等、友好共处,同时,开发人员也可以使用自行开发应用程序替换核心应用程序,使手机应用更加灵活和个性化。
在这里插入图片描述

二、 HAL层介绍
1、HAL简介
HAL(Hardware Abstraction Layer 硬件抽象层),处于Linux内核层之上,作用:1). Linux是遵从GPL开源协议,把控制硬件的动作(或者是寄存器直接映射到HAL中)都放到了 Android HAL中,可以避开开源协议。2).在HAL中实现驱动的进一步接口封装,提供给构架层。Android HAL存在的原因主要有:
a) 并不是所有的硬件设备都有标准的linux kernel的接口;
b) KERNEL DRIVER涉及到GPL的版权,某些设备制造商并不愿意公开硬件驱动,所以才去用HAL方式绕过GPL;
c) 针对某些硬件,Android有一些特殊的需求。

1、 下载虚拟机

(比如VMware-workstation-full,官网下载试用版就好就好)
在“免费产品试用版和演示”栏点“Workstation Pro”,选择相应版本。

2、安装虚拟机

windows下很容易安装,安装后在网上搜个序列号就行。
ubuntu下安装虚拟机如下:
linux下的安装文件如右VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle
使用户具有对文件的执行权:chmod a+x chmod a+x ~/下载/VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle;不要放到根目录下去设置。
运行文件安装虚拟机:sudo ~/下载/VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle
然后等待两分钟,如果屏幕出现‘无法在模块路径中找到主题引擎:“murrine”’,暂时不用管。
之后出现安装界面,一路向下就行,这里记录向安装位置“/var/lib/vmware/Shared VMs”,https port:443,免得以后要进行其他操作自己以后忘了装在哪里了。
license key先不管,先安装。
安装完后,在dash中输入vmware就可以看到安装好的程序。第一次打开会提示输入序列号,在网上搜个序列号试试。

3、VMware简介

windows下VMware的界面如下:
这里写图片描述
ubuntu下界面跟windows差不多。
在文件菜单下可以新建虚拟机等操作。
可以创建多个新虚拟机,在每台虚拟机上安装和进行相关配置(配置文件可以从一台机器复制到其他虚拟机);也可以先在一台虚拟机上装好系统、进行配置并装好各种软件后,直接克隆就可以,几台虚拟机的是一样的;然后再去设置网络、主机名称这些,这样会很少很多事。
装完系统后还可以对虚拟机进行其他的一些设置,比如内存,屏幕显示等。
虚拟机有快照功能,记录某一时刻的系统,未来因为装软件把系统搞乱了可以回到之前的某个状态。

4、装系统

与物理机装系统的过程相似。
在使用过程,可能因为虚拟机不稳定导致系统进不去,此时可以到系统的安装目录去扫描这个系统,进行重新加载。
centos与ubuntu的安装过程相似

1.cd

用途:切换目录  

来源:cd 的英文是Change
Directory,是切换目录的命令

demo:

  1. cd ..  返回上一级目录
  2. cd /whx/demo 切换到目录/whx/demo
  3. cd ../demo 切换到上层目录的demo目录中

2.pwd

用途:显示当前所在的目录
来源:pwd的英文全称是Print Working Directory,是显示当前所在目录的命令
demo :
  1.  pwd -P 显示正确完整的目录

3.ls

用途:查看文件和目录
来源:ls 的英文全称是 list source,一般后面跟参数-l,-A,-h等
demo:
  1. ls -l    列出当前目录下文件和目录,包括权限和时间,所在组等(drwxrwxr-x  3 root publish    25 Oct 10 19:47 jdk8)

4.mkdir

用途:创建新目录
来源:英文全称make
directory,一般跟参数-m(文件夹权限),-p等
demo:
  1. mkdir -m 775 test 创建test文件夹,并赋予775的权限

5.cp

用途:复制文件和目录
来源:英文全称copy,一般与参数-r,-a,-i(若目标档已经存在时,在覆盖时会先询问动作)结合。
demo:
  1. cp -i text.txt whx.txt (把文件text.txt复制到whx.txt,如果whx.txt已经存在,则会询问是否覆盖)

6.mv

用途:移动文件与目录,或修改名称
来源:英文全称 move,一般与-u,-f,-i(若目标文件已经存在时,就会询问是否覆)等参数一齐使用。
demo:
  1. mv -i text.txt whx/  (移动text.txt文件到whx文件夹下面)
  2. mv text.txt  text_rename.txt (把text.txt的命名改为text_rename.txt


7.rm

用途:删除文件或者文件夹目录
来源:英文全称remove,一般与-f(强制删除),-i(询问是否删除),-r(递归删除所有,危险参数)等参数一起使用。
demo:
  1. rm -f  whx_txt (强制删除文件 whx_txt
  2. rm -i  whx_rename.txt (执行命令提示是否删除whx_rename.txt,按y则删除

8.ps

用途:将某个进程情况输出打印出来
来源:一般与-e(显示所有进程),-f(全格式)等参数结合使用
demo:
  1. ps -ef  (以全格式方式输出所有进程)

9.grep

用途:用于关键字,字符串查找
来源:全称是Global
Regular Expr
ession Print,使用格式grep
[options]
demo:
  1. ls -l  | grep "whx" (查找文件名包含whx关键字的文件,并打印查来)

10.kill 

用途:用于终止一个进程
来源:一般跟-9 使用,先用ps -ef | grep “xxx” 查找出某个进程,然后再kill -9杀掉进程。
demo:
    1.kill -9 3451 (杀掉3451的进程)

11.vim

用途:linux环境下的文本编辑器
描述:分三种模式(1.命令模式,2.插入模式,3.底线命令模式),如下图(图片来源于linux菜鸟教程)


demo:
  1.  vim text.txt 打开文本 text.txt(如果text.txt不存在,则新建text.txt)

12.tail

用途:用来显示结尾某个数量的文字块
描述:可以跟-n,-f参数结合使用
demo:
  1. tail -n 5 test.sh (输出test.sh文件的最后5行)
  2. tail -f test.sh (对test.sh进行实时查看,如果有新行添加到文件尾部,它会继续输出新的行,查看日志一般拿这个命令+-f参数)

13.ssh

用途:登录到远程机
demo:
  1. ssh [email protected] (用user用户登录到远程host)
  2. ssh  -p 2222 [email protected](用user用户登录到远程host,端口为2222)

14.df

用途:显示文件系统的磁盘使用情况
描述:一般跟参数-h,-k,-T结合使用
demo:
  1. df  -h(显示磁盘使用量,-h符合阅读习惯
  2. df -T (df-T选项显示文件系统类型)

15.chmod

用途:改变文件和目录的权限
描述:chmod [-cfvR] [--help] [--version] fileName
demo:
  1. chmod ugo+w text.txt (给所有用户text.txt的写权限)
  2. chmod 771
    text.txt (给User,同组用户读写执行的权限(7=4(r)+2(r)+1(x)),其他人执行的权限))


16.netstat

用途:用于显示各种网络相关信息,如网络连接,路由表,接口状态
demo:
  1. netstat (列出所有的端口)
  2. netstat -at (列出所有tcp端口)

17.tar

用途:解压打包.tar文件
  1.  tar cvf text.tar text.txt (把文件text.txt打包成text.tar
  2.  tar xvf text.tar(解压text.tar文件

18.zip

用途:解压打包.zip文件
  1. zip whx.zip text.txt (把text.txt文件打包成whx.zip)
  2. unzip  whx.zip  (解压whx.zip文件)




   

一、 Android架构
Android就是包括一个操作系统、中间件和关键应用的移动设备的一个软件堆。
从底层到上层共包括四层:
1、 Linux内核层
Linux操作系统及驱动
2、 系统库和Andriod运行时
系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带,通过JAVA本地调用JNI(Java Native Interface)的接口函数实现和上层之间的通信。
Android运行时包括核心库和Dalvik虚拟机,主要由C和C++实现。
3、 应用框架层
是Android应用开发的基础,主要由Java语言实现,为应用层提供API。应用层框架提供了可以服用的组件,提供了应用开发的规范,屏蔽了应用层和底层交互的复杂性。
4、 应用程序层
核心应用程序包、Java语言设计和编写的应用程序,两者彼此平等、友好共处,同时,开发人员也可以使用自行开发应用程序替换核心应用程序,使手机应用更加灵活和个性化。
在这里插入图片描述

二、 HAL层介绍
1、HAL简介
HAL(Hardware Abstraction Layer 硬件抽象层),处于Linux内核层之上,作用:1). Linux是遵从GPL开源协议,把控制硬件的动作(或者是寄存器直接映射到HAL中)都放到了 Android HAL中,可以避开开源协议。2).在HAL中实现驱动的进一步接口封装,提供给构架层。Android HAL存在的原因主要有:
a) 并不是所有的硬件设备都有标准的linux kernel的接口;
b) KERNEL DRIVER涉及到GPL的版权,某些设备制造商并不愿意公开硬件驱动,所以才去用HAL方式绕过GPL;
c) 针对某些硬件,Android有一些特殊的需求。

来记录一个问题
好久不上腾讯云服务器
上来之后 用下cd xx tab
发现自动补全建不能使用了

难道是哪个熊孩子在我的服务器上恶作剧了?

我根据命令提示的错误信息

-bash: cannot create temp file for here-document: No space left on device

没有空间了! 怎么可能?
是哪个文件呢?
查看下硬盘空间

df -h
在这里插入图片描述
果然满了!

du -sh /* 来查看哪个目录占用空间大
sudo du -sh /var/* 发现是var 目录占用空间大
sudo du -sh /var/tmp/*

找到了 /var/tmp/mysql.cnf.swp 这个文件自己占了 42G, 太狠了, 我总共才50G.

rm /var/tmp/mysql.cnf.swp
临时文件删除了

现在cd命令的自动补全命令可以正常使用了

问题是这个文件为何会这么大呢?
to be continue…

Linux中的虚拟终端

  • 所谓虚拟,是因为物理上它还是在本机上的一个软件控制台,而不是一个真正的远程物理终端,但是虚拟终端确在实现上显得更统一了,这就像Linux同等对待设备和一般文件一样。
  • Linux是一个多终端的操作系统,可以使用同一个用户ID在多个终端上同时登陆。
  • Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 控制台虚拟终端)来让用户登录。在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换。
  • 输入tty可以查看现在是哪个终端。
  • 虚拟终端均由 mingetty 程序产生。
    在这里插入图片描述

shell

shell的含义

首先shell的英文含义是“壳”;

  • 它是相对于内核来说的,因为它是建立在内核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。
  • Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息.

shell在Linux中的存在形式

  • 由于Linux不同于Windows,Linux是内核与界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面。

  • 这样,在Linux系统中,就出现了两种shell表现形式,一种是在无图形界面下的终端运行环境下的shell,另一种是桌面上运行的类似Windows 的MS-DOS运行窗口,前者我们一般习惯性地简称为终端,后者一般直接称为shell.

shell如何执行用户的指令

  • shell有两种执行指令的方式,第一种方法是用户事先编写一个sh脚本文件,内含shell脚本,而后使用shell程序执行该脚本,这种方式,我们习惯称为shell编程。

  • 第二种形式,则是用户直接在shell界面上执行shell命令,由于shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。

  • 总结:shell可以说只是为用户与机器之间搭建成的一个桥梁,让我们能够通过shell来对计算机进行操作和交互,从而达到让计算机为我们服务的

总而言之:
终端就是一个shell的模拟.
shell是一个人机交互的软件