项目上线部署的时候,领导要求直接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 & 命令即可 正常启动
通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少
open files那一行就代表系统目前允许单个进程打开的最大句柄数,这里是1024。
使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件
ulimit -n 20480
这样就可以把当前用户的最大允许打开文件数量设置为20480了,但这种设置方法在重启后会还原为默认值。
ulimit -n命令非root用户只能设置到4096。
代码一些连接对象或者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 网络渗透测试实践指南(人民邮电出版社)》
(比如VMware-workstation-full,官网下载试用版就好就好)
在“免费产品试用版和演示”栏点“Workstation Pro”,选择相应版本。
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就可以看到安装好的程序。第一次打开会提示输入序列号,在网上搜个序列号试试。
windows下VMware的界面如下:
ubuntu下界面跟windows差不多。
在文件菜单下可以新建虚拟机等操作。
可以创建多个新虚拟机,在每台虚拟机上安装和进行相关配置(配置文件可以从一台机器复制到其他虚拟机);也可以先在一台虚拟机上装好系统、进行配置并装好各种软件后,直接克隆就可以,几台虚拟机的是一样的;然后再去设置网络、主机名称这些,这样会很少很多事。
装完系统后还可以对虚拟机进行其他的一些设置,比如内存,屏幕显示等。
虚拟机有快照功能,记录某一时刻的系统,未来因为装软件把系统搞乱了可以回到之前的某个状态。
与物理机装系统的过程相似。
在使用过程,可能因为虚拟机不稳定导致系统进不去,此时可以到系统的安装目录去扫描这个系统,进行重新加载。
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有一些特殊的需求。
(比如VMware-workstation-full,官网下载试用版就好就好)
在“免费产品试用版和演示”栏点“Workstation Pro”,选择相应版本。
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就可以看到安装好的程序。第一次打开会提示输入序列号,在网上搜个序列号试试。
windows下VMware的界面如下:
ubuntu下界面跟windows差不多。
在文件菜单下可以新建虚拟机等操作。
可以创建多个新虚拟机,在每台虚拟机上安装和进行相关配置(配置文件可以从一台机器复制到其他虚拟机);也可以先在一台虚拟机上装好系统、进行配置并装好各种软件后,直接克隆就可以,几台虚拟机的是一样的;然后再去设置网络、主机名称这些,这样会很少很多事。
装完系统后还可以对虚拟机进行其他的一些设置,比如内存,屏幕显示等。
虚拟机有快照功能,记录某一时刻的系统,未来因为装软件把系统搞乱了可以回到之前的某个状态。
与物理机装系统的过程相似。
在使用过程,可能因为虚拟机不稳定导致系统进不去,此时可以到系统的安装目录去扫描这个系统,进行重新加载。
centos与ubuntu的安装过程相似
用途:切换目录
来源:cd 的英文是Change
Directory,是切换目录的命令
demo:
一、 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…
首先shell的英文含义是“壳”;
由于Linux不同于Windows,Linux是内核与界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面。
这样,在Linux系统中,就出现了两种shell表现形式,一种是在无图形界面下的终端运行环境下的shell,另一种是桌面上运行的类似Windows 的MS-DOS运行窗口,前者我们一般习惯性地简称为终端,后者一般直接称为shell.
shell有两种执行指令的方式,第一种方法是用户事先编写一个sh脚本文件,内含shell脚本,而后使用shell程序执行该脚本,这种方式,我们习惯称为shell编程。
第二种形式,则是用户直接在shell界面上执行shell命令,由于shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。
总结:shell可以说只是为用户与机器之间搭建成的一个桥梁,让我们能够通过shell来对计算机进行操作和交互,从而达到让计算机为我们服务的
总而言之:
终端就是一个shell的模拟.
shell是一个人机交互的软件