Git Submodule 使用

Git Submodule 使用,第1张

git 的 submodule 作为一个独立的 repo , 其拥有普通 repo 全部的功能, 我们可以完全按照普通的 repo 管理命令来进入 submodule 中进行手动管理 不过如果存在多个 submodule 位于同一 superproject 下时, 掌握一些 git submodule 命令就变得尤为重要了

本文列出了常用的一些 git submodule 管理命令, 并举出实际应用中遇到的问题及解决方案

在 git 仓库 superproject 的目录中使用 git submodule add >本节所讲内容:
101 进程概述和ps查看进程工具
102 uptime查看系统负载-top动态管理进程
103 前后台进程切换-nice进程优先级-screen后台执行命令
安装包地址:渗透测试实战:内网渗透之域渗透
101 进程概述和ps管理进程 1011 什么是进程?
进程: 是程序运行的过程, 动态,有生命周期及运行状态,是已启动的可执行程序的运行实例。
进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态
线程:进程和线程都是由 *** 作系统所体现的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
程序: 二进制文件(程序即二进制文件),静态实体 /bin/date,/usr/sbin/sshd
下图所示的是进程的生命周期:
父进程复制自己的地址空间(fork [fɔ:k] 分叉)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
centos5或6PID为1的进程是: init
centos7 PID为1的进程是: systemd
centso8 PID为1的进程是: systemd
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
父进程退出了, 子进程没有退出, 那么这些子进程就没有父进程来管理,就变成僵尸进程。
1012 进程的属性
进程ID(PID):是唯一的数值,用来区分进程
父进程的ID(PPID)
启动进程的用户ID(UID)和所归属的组(GID)
进程状态:状态分为运行R(running)、休眠S(sleep)、僵尸Z(zombie)
进程执行的优先级
进程所连接的终端名
进程资源占用:比如占用资源大小(内存、CPU占用量)
1013 使用ps查看进程工具
1、ps查看进程工具
例1:常用的参数:
a: 显示跟当前终端关联的所有进程
u: 基于用户的格式显示(U: 显示某用户ID所有的进程)
x: 显示所有进程,不以终端机来区分
例2:常用的选项组合是 ps -aux
[root@xuegod63 ~]# ps -axu | more
注: 最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。 没有括起来的是用户态进程。
上面的参数输出每列含意:
USER: 启动这些进程的用户
PID: 进程的ID
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
STAT:该程序目前的状态,Linux进程有5种基本状态:
R :该程序目前正在运行,或者是可被运行;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
D 不可中断状态
5个基本状态后,还可以加一些字母,比如:Ss、R+,如下图:
它们含意如下::
<: 表示进程运行在高优先级上
N: 表示进程运行在低优先级上
L: 表示进程有页面锁定在内存中
s: 表示进程是控制进程
l: 表示进程是多线程的
+: 表示当前进程运行在前台
START:该 process 被触发启动的时间;
TIME :该 process 实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令
例1: 查看进程状态
[root@xuegod63 ~]# vim atxt
在另一个终端执行:
[root@xuegod63 ~]# ps -aux | grep atxt #查看状态 S表示睡眠状态, + 表示前台
root 4435 00 02 151752 5292 pts/1 S+ 20:52 0:00 vim atxt
root 4661 00 00 112676 996 pts/0 S+ 21:05 0:00 grep --color=auto atxt
在vim atxt 这个终端上 按下: ctrl+z
[1]+ 已停止 vim atxt
在另一个终端执行:
[root@xuegod63 ~]# ps -aux | grep atxt #查看状态 T表示停止状态
root 4435 00 02 151752 5292 pts/1 T 20:52 0:00 vim atxt
root 4675 00 00 112676 996 pts/0 S+ 21:05 0:00 grep --color=auto atxt
注:
ctrl-c 是发送 SIGINT 信号,终止一个进程
ctrl-z 是发送 SIGSTOP信号,挂起一个进程。将作业放置到后台(暂停) 前台进程收到这些信号,就会采取相应动作。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。代表输入完成或者注销
在shell中,ctrl-d表示退出当前shell
例2: D 不可中断状态
[root@xuegod63 ~]# tar -zcvf usr-targz /usr/
#然后在另一个终端不断查看状态,由S+,R+变为D+
2、ps常用的参数: ps -ef
-e 显示所有进程
-f 显示完整格式输出
我们常用的组合: ps -ef
包含的信息如下
UID: 启动这些进程的用户,程序被该UID所拥有
PID: 该进程的ID
PPID: 该进程的父进程的ID
C: 该进程生命周期中的CPU 使用资源百分比
STIME: 进程启动时的系统时间
TTY: 表明进程在哪个终端设备上运行。如果显示 表示与终端无关,这种进程一般是内核态进程。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
TIME: 运行进程一共累计占用的CPU时间
CMD: 启动的程序名称
例1:测试CPU使用时间。
dd if=/dev/zero of=~/zerotxt count=10 bs=100M
[root@localhost ~]# ps -axu | grep dd
注:
ps aux 是用BSD的格式来显示进程。
ps -ef 是用标准的Unix格式显示进程
102 uptime查看系统负载-top动态管理进程 1021 uptime查看CPU负载工具
[root@localhost ~]# uptime
13:22:30 up 20days, 2 users, load average: 006, 060, 048
d出消息含意如下:
13:22:30
当前时间
up 20days
系统运行时间 ,说明此服务器连续运行20天了
2 user
当前登录用户数
load average: 006, 060, 048
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
任务队列的平均长度是什么?
大厅排队买票:
这时队列是4:
cpu队列数为3时,如图:
互动:例1:找出前当系统中,CPU负载过高的服务器?
服务器1: load average: 015, 008, 001 1核
服务器2: load average: 415, 608, 601 1核
服务器3: load average: 1015, 1008, 1001 4核
答案:服务器2
如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。
经验:单核心,1分钟的系统平均负载不要超过3,就可以,这是个经验值。
如下图: 1人只能买1张票,排第四的人可能会急。 所以我们认为超过3就升级CPU
1022 top命令
[root@xuegod63 ~]# top #topd出的每行信息含意如下:
第一行内容和uptimed出的信息一样
进程和CPU的信息( 第二、三行)
当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 481 total
进程总数
1 running
正在运行的进程数
480 sleeping
睡眠的进程数
0 stopped
停止的进程数
0 zombie
僵尸进程数
Cpu(s): 00% us
系统用户进程使用CPU百分比。
00% sy
内核中的进程占用CPU百分比
00% ni
用户进程空间内改变过优先级的进程占用CPU百分比
987% id
空闲CPU百分比
00% wa
cpu等待I/0完成的时间总量。
测试:
终端1:执行:top
终端2:dd if=/dev/zero of=/atxt count=10 bs=100M
终端3:dd if=/dev/zero of=/atxt count=10 bs=100M
正常读写时,如果wa占用较多CPU,那么就是磁盘性能问题,建议更换磁盘。
如下:
00% hi(了解)
硬中断消耗时间
硬中断,占用CPU百分比。1 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ(Interrupt Request),CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。# hi -> Hardware IRQ: The amount of time the CPU has been servicing hardware interrupts
00% si(了解)
软中断消耗时间
软中断,占用CPU百分比。1 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程通常和磁盘I/O的方式是相同。# si -> Software Interrupts: The amount of time the CPU has been servicingsoftware interrupts
00 st (steal 偷)
st:虚拟机偷取物理的时间。比如:物理机已经运行了KVM虚拟机。KVM虚拟机占用物理机的cpu时间
内存信息(第四五行)
内容如下:
Mem: 2033552k total
物理内存总量
340392k used
使用的物理内存总量
1376636k free
空闲内存总量
316524k buff/cache
用作内核缓存的内存量。
和free -k 一个意思
Swap: 2017948k total
交换区总量
0k used
使用的交换区总量
192772k free
空闲交换区总量
1518148 avail Mem
总的可利用内存是多少
注:如果swap分区,被使用,那么你的内存不够用了。
第7行进程信息
列名
含义
PID
进程id
USER
进程所有者的用户名
PR
优先级(由内核动态调整),用户不能
NI
进程优先级。 nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整
VIRT(virtual memory usage)
虚拟内存,是进程正在使用的所有内存(ps中标为VSZ)
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES(resident memory usage)
是进程所使用的物理内存。实际实用内存(ps中标为RSS)
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR
共享内存大小,单位kb
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
S
进程状态。
D=不可中断的睡眠状态
R=运行中或可运行
S=睡眠中
T=已跟踪/已停止
Z=僵停
%CPU
上次更新到现在的CPU时间占用百分比
%MEM
进程使用的物理内存百分比
TIME+
进程使用的CPU时间总计,单位1/100秒
COMMAND
命令名/命令行
top快捷键:
默认3s刷新一次,按s修改刷新时间
按空格 :立即刷新。
q退出
P:按CPU排序
M:按内存排序
T按时间排序
p: 进程pid,查看某个进程状态
数字键1:显示每个内核的CPU使用率,展示cpu数量,再按下,就收起来了
u/U:指定显示的用户
h:帮助
例1:运行top,依次演示一下top的快捷键,让大家看一下效果
例2:使用TOP动态只查看某个或某些进程的信息
找到进程PID
[root@localhost ~]# vim atxt
[root@localhost ~]# ps axu | grep vim
Warning: bad syntax, perhaps a bogus '-' See /usr/share/doc/procps-328/FAQ
root 9667 00 02 143620 3344 pts/1 S<+ 19:15 0:00 vim atxt
[root@localhost ~]# top -p 9667
1023 实战1:找出系统中使用CPU最多的进程
运行top , 找出使用CPU最多的进程 ,按大写的P,可以按CPU使用率来排序显示
互动:在linux系统中一个进程,最多可以使用100%cpu对吗?
如下图,可以看到dirtycow(脏牛漏洞,用于提权) 进程使用1968%
这是你第一次看见: 1
如果你的4核心的cpu,你可以运行400%
64核心的cpu,可以运行到6400%
1024 lsof命令
lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)
-i<条件>:列出符合条件的进程。(ipv4、ipv6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
例:
[root@xuegod63 ~]# vim atxt
[root@xuegod63 ~]# ps -axu | grep atxt
root 43641 08 02 151744 5280 pts/3 S+ 18:19 0:00 vim atxt
root 43652 00 00 112676 996 pts/1 S+ 18:19 0:00 grep --color=auto atxt
[root@xuegod63 ~]# yum -y install lsof
[root@xuegod63 ~]# lsof -p 65641 #进程pid一般用于查看木马进程,在读哪些文件
[root@xuegod63 ~]# lsof -i :22 #查看端口,或查看黑客开启的后门端口是哪个进程在用
[root@xuegod63 ~]# lsof -c vim #进程名,显示vim进程现在打开的文件
[root@xuegod63 ~]# lsof /test/abctxtswp #显示占用文件abctxtswp的进程
在这个示例中,用户root正在其/test目录中进行一些 *** 作。一个 bash是实例正在运行,并且它当前的目录为/test,另一个则显示的是vim正在编辑/test下的文件。要成功地卸载/test,应该在通知用户以确保情况正常之后,中止这些进程。 这个示例说明了应用程序的当前工作目录非常重要,因为它仍保持着文件资源,并且可以防止文件系统被卸载。这就是为什么大部分守护进程(后台进程)将它们的目录更改为根目录、或服务特定的目录的原因,以避免该守护进程阻止卸载不相关的文件系统。
1025 free显示系统中可用内存和已用内存的数量
free命令查看内存使用状态
子选项:
-b:以字节为单位表示。
-k:以KB为单位显示,默认是以KB为单位显示。
-m:以MB为单位显示。
-g:以GB为单位显示。
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 972 603 69 24 299 123
Swap: 2047 69 1978
其中:
第一行:total是总内存量,used是已经使用的内存量,free是空闲的内存,shared是多个进程共享的内存总数,buffers是缓冲内存数,cache是缓存内存数。默认单位是KB。available 实际可用
(case 加速读,buffers加速写。)
第二行开始:total系统中有972MB的物理内存,used是已经使用的内存数量。free是空闲的内存数量。shared是多个进程共享的内存数量。buff/cache用来作为缓冲和缓存的空间,内核会在内存将要耗尽时释放这部分内存给其他进程使用。availble:可使用空间,评估有多少内存可用于启动新应用程序,不包括swap,不同于free和cache字段。available字段考虑了页缓存,而不是所有可回收的内存。正因为这个原因所以通常free+buff/cache的数值要比available的数值大。
互动:执行free命令查看系统状态,这一瞬间,当前系统,真正,还有多少M 内存可以使用?
答案1:free+ buff/cache=69 +299=368M
答案2:available=123M
103 前后台进程切换- nice进程优先级-screen后台执行命令 1031 Linux后台进程与前台进程的区别
前台进程:是在终端中运行的命令,那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随着消失
后台进程: 也叫守护进程(Daemon),是运行在后台的一种特殊进程,不受终端控制,它不需要终端的交互;Linux的大多数服务器就是用守护进程实现的。比如,Web服务器>

实体对象的生命周期在Hibernate应用中是一个很关键的概念 正确的理解实体对象的生命周期将对我们应用Hibernate做持久层设计起到很大的作用 而所谓的实体对象的生命周期就是指实体对象由产生到被GC回收的一段过程 在这过程中我们需要理解的就是实体对象生命周期中的三种状态

自由状态(Transient)

所谓的Transient状态 即实体对象在内存中自由存在 与数据库中的记录无关 通常是我们的J EE中VO 并没有被纳入Hibernate的实体管理容器

    Test test = new Test();

        test setName( energykk );

        //此时的test对象处于Transient(自由状态)并没有被Hibernate框架所管理

持久状态(Persistent)

何谓 Persistent 即实体对象已经处于被Hibernate实体管理容器容器所管理的状态 这种状态下这个实体对象的引用将被纳入Hibernate实体管理容器容器所管理

处于Persistent状态的实体对象 对它的变更也将被固化到数据库中

在J EE中通常指的是一个PO

Transaction tr = session beginTransaction();

session save(test);

//此时的test对象已经处于Persistent(持久状态)它被Hibernate纳入实体管理容器

mit();

Transaction tr = session beginTransaction();

test setName( xukai );

//在这个事务中我们并没有显示的调用save()方法但是由于Persistent状态的对象将会自动的固化到

//数据库中 因此此时正处在Persistent状态的test对象的变化也将自动被同步到数据库中

mit();

处于Persistent状态的实体可以简单的理解为:如果一个实体对象与session发生了关联 并且处于session的有效期内 那么这个实体对象就处于Persistent状态

游离状态(Detached)

处于Persistent状态的实体对象 其对应的session关闭以后 那么这个实体就处于Detached状态

我们可以认为session对象就是一个Persistent的宿主 一旦这个宿主失效 那么这个实体就处于Detached状态

session close();

//与test对象关联的session被关闭 因此此时的test对象进入Detached(游离状态)

session = HibernateSessionFactory getSession();

Transaction tr = session beginTransaction();

session update(test);

//此时正处于Detached状态的test对象由于再次借助与session 被纳入到Hibernate的实体管理容器所以此时的

//test对象恢复到Persistent状态

test setName( jjjj );

mit();

session close();

既然Transient状态的实体与Detached状态的实体都与Hibernate的实体管理容器没有关系 那他们到底存在哪些差异

差异就在于处于Transient状态的只有一个Name的属性 此时的test对象所包含的数据信息仅限于此 他与数据库中的记录没有任何瓜葛

但是处于Detached状态的实体已经不止包含Name这个属性 还被赋予了主键也就是通常POJO里的id属性 由于id是主键 他可以确定数据库表中的一条

唯一的记录 那么自然的处于Detached状态的实体就能与数据库表中拥有相同id的记录相关联

lishixinzhi/Article/program/Java/ky/201311/28035

Flute " Robinson Crusoe " of good fortune, novelist of British, describe protagonist drift about on the island, overcome the difficulty, the legend story of pioneering an enterprise with painstaking efforts Novel write true naturally, legendary The protagonist plants the crops on the detached island, puts up the log cabin, has eaten the innumerable trials and tribulations, survive Want, go back human world anxious, want to go how about go out of these damnable place only like make him to be fascinated, result fail, get back to, long separated for Britain for 28 year give me enlightenment by " Robinson's records of adventure " on 1868 year finally, tanacity of him let me wait for a chance to cause trouble, want, march toward another goal for life, look like Robinson like that spend one's own strength,reach ideal realm one's own We need possess Robinson so spirit of struggle diligently


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12859395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存