xml version="1.0" encoding="utf-8" standalone="yes"12bet++博客-Prayerhttp://www.fometaux.com/prayer/在一般中寻求杰出zh-cnSun, 25 Aug 2019 19:37:42 GMTSun, 25 Aug 2019 19:37:42 GMT6012bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/06/24/216446.htmlPrayerPrayerMon, 24 Jun 2019 02:09:00 GMThttp://www.fometaux.com/prayer/archive/2019/06/24/216446.htmlhttp://www.fometaux.com/prayer/comments/216446.htmlhttp://www.fometaux.com/prayer/archive/2019/06/24/216446.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216446.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216446.htmlhttps://blog.csdn.net/liujinwei2005/article/details/8547190

DB2 缓冲池调优Bufferpools


布景常识
缓冲池是内存中的一块存储区域,用于暂时读入和更改数据库页(包括表行或索引项)。缓冲池的用处是为了进步数据库体系的功用。从内存拜访数据要比从磁盘拜访数据快得多。因而,数据库办理器需求从磁盘读取或写入磁盘的次数越少,功用就越好。对一个或多个缓冲池进行装备之所以是调优的最重要方面,是由于衔接至数据库的应用程序的大多数数据(不包括大方针和长字段数据)操作都在缓冲池中进行。
缺省状况下,应用程序运用缓冲池 IBMDEFAULTBP,它是在创立数据库时创立的。当 SYSCAT.BUFFERPOOLS 目录表中该缓冲池的 NPAGES 值为 -1 时,DB2 数据库装备参数 BUFFPAGE 操控着缓冲池的巨细。不然会疏忽 BUFFPAGE 参数,并且用 NPAGES 参数所指定的页数创立缓冲池。
主张
关于仅运用一个缓冲池的应用程序,将 NPAGES 更改成 -1,这样 BUFFPAGE 就能够操控该缓冲池的巨细。这使得更新和陈述缓冲池巨细以及其它 DB2 数据库装备参数变得愈加便利。
保证能够运用数据库装备中的 BUFFPAGE 参数来操控缓冲池巨细之后,将该参数设置成适宜的值。依据数据库的巨细和应用程序的性质将该参数设置成一个合理的大值,这种做法很安全。一般,该参数的缺省值十分小,或许满意不了要求。请考虑下列状况:
一开端,假如您的机器上有足够大的内存,请将 BUFFPAGE 设置成 40000 个页(160 MB),或许等于机器总内存的 10%。 
关于大型 OLTP 数据库,在坚持体系安稳的一同为缓冲池留出尽或许多的内存。一开端,先测验运用 1.6 GB 的内存,然后测验用更多内存。 
怎么更改该参数
运转下面这个脚本,以便: 
验证目录值 
启用数据库装备参数 BUFFPAGE 
更新一切数据库的 BUFFPAGE 值。 
db2 -v connect to DB_NAME
db2 -v select * from syscat.bufferpools
db2 -v alter bufferpool IBMDEFAULTBP size -1
db2 -v connect reset
db2 -v update db cfg for dbname using BUFFPAGE bigger_value
db2 -v terminate
研讨进程
要确认数据库的缓冲池巨细是否由 BUFFPAGE 参数所决议,请运转:
db2 -v connect to DB_NAME
db2 -v SELECT * from SYSCAT.BUFFERPOOLS
db2 -v connect reset
db2 -v terminate
检查成果。假如每个缓冲池都有一个为“-1”的 NPAGES 值,那么缓冲池巨细是由数据库装备中的 BUFFPAGE 参数操控的。
要确认缓冲池巨细是否足够大,请在运转应用程序时搜集数据库和/或缓冲池的快照。相似于下面的脚本为您供给这些所需的信息:
db2 -v update monitor switches using bufferpool on
db2 -v get monitor switches
db2 -v reset monitor all
-- run your application --
db2 -v get snapshot for all databases > snap.out
db2 -v get snapshot for dbm >> snap.out
db2 -v get snapshot for all bufferpools >> snap.out
db2 -v reset monitor all
db2 -v terminate
请保证您在断开数据库衔接之前宣布“db2 -v get snapshot”。当最终一个应用程序与数据库断开衔接时,该数据库中止运转,一同一切快照核算信息将会丢掉。要保证一向存在使数据库处于正常运转状况的衔接,请运用下列办法之一:
在搜集快照的窗口中坚持一个独自的衔接。 
运用 DB2 ACTIVATE DATABASE 指令。
在数据库快照或缓冲池快照的快照输出中,查找下列“logical reads”和“physical reads”,这样就能够核算出缓冲池命中率,它能够协助您调优缓冲池:
-- Related lines from a sample of bufferpool snapshots --
Buffer pool data logical reads = 702033
Buffer pool data physical reads = 0
Buffer pool data writes = 414
Buffer pool index logical reads = 168255
Buffer pool index physical reads = 0
缓冲池命中率标明数据库办理器不需求从磁盘装入页(即该页已经在缓冲池中)就能处理页恳求的时刻百分比。缓冲池的命中率越高,运用磁盘 I/O 的频率就越低。按如下核算缓冲池命中率:
(1 - ((buffer pool data physical reads + buffer pool index physical reads) /
(buffer pool data logical reads + pool index logical reads))
) * 100%
这个核算考虑了缓冲池高速缓存的一切页(索引和数据)。抱负状况下,该比率应当超越 95%,并尽或许挨近 100%。要进步缓冲池命中率,请测验下面这些办法:
增加缓冲池巨细。 
考虑分配多个缓冲池,假如或许的话,为每个常常被拜访的大表所属的表空间分配一个缓冲池,为一组小表分配一个缓冲池,然后测验一下运用不同巨细的缓冲池以检查哪种组合会供给最佳功用。 
假如已分配的内存不能协助进步功用,那么请防止给缓冲池分配过多的内存。应当依据取自测验环境的快照信息来决议缓冲池的巨细。

缓冲池命中率

这个比率阐明晰为页面恳求供给服务时,数据库办理器不需从磁盘装入页(即该页已经在缓冲池中)就能处理页恳求的时刻百分比。

核算:

BPHR = (1 - ((缓冲池数据物理读 + 缓冲池索引物理读) /

(缓冲池数据逻辑读 + 缓冲池索引逻辑读) ) ) * 100%

索引命中率

这个比率标明晰能够在缓冲池中找到的页面能够满意的对索引页的一切读恳求所占的百分比。

核算:

IHR = (1 - (缓冲池索引物理读 / 缓冲池索引逻辑读) ) ) * 100%

数据命中率

这个比率阐明晰能够在缓冲池中找到的页面能够满意的对数据页的一切读恳求所占的百分比。

核算:

DHR = (1 - (缓冲池数据物理读 / 缓冲池数据逻辑读) ) ) * 100%

定论

缓冲池命中率大于 80% 被以为是抱负的。关于 OLTP 体系来说,该值的抱负状况是尽或许挨近于 100% (索引命中率更是如此)。

要进步缓冲池的命中率,能够增加缓冲池的巨细,也能够考虑分配多个缓冲池,能够为每个常常拜访的具有自己的表空间的大型表运用一个缓冲池,也能够为一组小型表运用一个缓冲池。



Bwin平台 2019-06-24 10:09 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/06/03/216394.htmlPrayerPrayerMon, 03 Jun 2019 10:20:00 GMThttp://www.fometaux.com/prayer/archive/2019/06/03/216394.htmlhttp://www.fometaux.com/prayer/comments/216394.htmlhttp://www.fometaux.com/prayer/archive/2019/06/03/216394.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216394.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216394.htmlhttps://blog.csdn.net/haifeilang/article/details/54959450
每次下载最新的UltraEdit,默许主题是黑色,很不习惯,想更改主题又常常找不到在哪里,
最新Ultraedit设置主题和老版别不太相同,所以网上经历没太大协助。
记录到12bet怎么样,以备不时之需:
Ultraedit -->布局(Layout)-->主题(Themes)
      
挑选自己喜爱的主题吧!
--------------------- 
作者:haifeilang 
来历:CSDN 
原文:https://blog.csdn.net/haifeilang/article/details/54959450 
版权声明:本文为博主原创文章,转载请附上博文链接!


Bwin平台 2019-06-03 18:20 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/10/216346.htmlPrayerPrayerWed, 10 Apr 2019 06:28:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/10/216346.htmlhttp://www.fometaux.com/prayer/comments/216346.htmlhttp://www.fometaux.com/prayer/archive/2019/04/10/216346.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216346.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216346.htmlnm指令介绍的许多,但大多不介绍其函数符号标志的意义。
最近在调试动态库经常用到,其顶用的最多的用法:
nm -A * |grep “aaa” | 12betfilt  // -A 为了显现文件, 12betfilt转换为可读风格,如同有个参数也能完成相似功用


其他内容收拾如下(原作者不知道):

nm用于列出方针文件的符号清单,假如没有指定方针文件,则默许为“a.out”。nm的格局如下:

nm [‘-a’|‘--debug-syms’] [‘-g’|‘--extern-only’]
         [‘-B’] [‘-C’|‘--demangle’[=style]] [‘-D’|‘--dynamic’]
         [‘-S’|‘--print-size’] [‘-s’|‘--print-armap’]
         [‘-A’|‘-o’|‘--print-file-name’][‘--special-syms’]
         [‘-n’|‘-v’|‘--numeric-sort’] [‘-p’|‘--no-sort’]
         [‘-r’|‘--reverse-sort’] [‘--size-sort’] [‘-u’|‘--undefined-only’]
         [‘-t’ radix|‘--radix=’radix] [‘-P’|‘--portability’]
         [‘--target=’bfdname] [‘-f’format|‘--format=’format]
         [‘--defined-only’] [‘-l’|‘--line-numbers’] [‘--no-demangle’]
        [‘-V’|‘--version’] [‘-X 32_64’] [‘--help’] [objfile...]
  
关于每一个符号,nm列出其值(the symbol value),类型(the symbol type)和其姓名(the symbol name)。
如下例:
  
     00000024 T cleanup_before_linux
     00000018 T cpu_init
     00000060 T dcache_disable
     00000054 T dcache_enable
     0000006c T dcache_status
     00000000 T do_reset
     0000003c T icache_disable
     00000030 T icache_enable
     00000048 T icache_status
 
上面的显现是运用nm cpu.o的输出,关于cleanup_before_linux这个符号来说,00000024是以16进制显现的其值,T为其类型,而cleanup_before_linux是其姓名。能够看出,上面显现的cleanup_before_linux这个symbol的值实践上是该函数在text section中的偏移。可是,每个符号的值的详细意义依其类型而异。当然,关于每个符号的值,其类型、其值以及它们所属的section是密切相关的。
下面阐明符号类型:关于每一个符号来说,其类型假如是小写的,则标明该符号是local的;大写则标明该符号是global(external)的。

符号
类型
阐明
A该符号的值是肯定的,在今后的链接进程中,不允许进行改动。这样的符号值,常常呈现在中断向量表中,例如用符号来表明各个中断向量函数在中断向量表中的方位。
B该符号的值呈现在非初始化数据段(bss)中。例如,在一个文件中界说大局static int test。则该符号test的类型为b,坐落bss section中。其值表明该符号在bss段中的偏移。一般来说,bss段分配于RAM
C该符号为commoncommon symbol是未初始话数据段。该符号没有包括于一个一般section中。只需在链接进程中才进行分配。符号的值表明该符号需求的字节数。例如在一个c文件中,界说int test,并且该符号在其他当地会被引证,则该符号类型即为C。不然其类型为B
D该符号坐落初始话数据段中。一般来说,分配到data section中。例如界说大局int baud_table[5] = {9600, 19200, 38400, 57600, 115200},则会分配于初始化数据段中
G该符号也坐落初始化数据段中。首要用于small object进步拜访small data object的一种办法。
I该符号是对另一个符号的直接引证。
N该符号是一个debugging符号。
R该符号坐落只读数据区。例如界说大局const int test[] = {123, 123};test便是一个只读数据区的符号。留意在cygwin下假如运用gcc直接编译成MZ格局时,源文件中的test对应_test,并且其符号类型为D,即初始化数据段中。可是假如运用m6812-elf-gcc这样的穿插编译东西,源文件中的test对应方针文件的test,即没有增加下划线,并且其符号类型为R。一般来说,坐落rodata section。值得留意的是,假如在一个函数中界说const char *test = “abc”, const char test_int = 3。运用nm都不会得到符号信息,可是字符串“abc”分配于只读存储器中,testrodata section中,巨细为4
S符号坐落非初始化数据区,用于small object
T该符号坐落代码区text section
U该符号在当时文件中是未界说的,即该符号的界说在其他文件中。例如,当时文件调用另一个文件中界说的函数,在这个被调用的函数在当时便是未界说的;可是在界说它的文件中类型是T。可是关于大局变量来说,在界说它的文件中,其符号类型为C,在运用它的文件中,其类型为U
V该符号是一个weak object
WThe symbol is a weak symbol that has not been specifically tagged as a weak object symbol.
-该符号是a.out格局文件中的stabs symbol
该符号类型没有界说


Bwin平台 2019-04-10 14:28 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/04/216337.htmlPrayerPrayerThu, 04 Apr 2019 09:49:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/04/216337.htmlhttp://www.fometaux.com/prayer/comments/216337.htmlhttp://www.fometaux.com/prayer/archive/2019/04/04/216337.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216337.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216337.htmlhttps://www.cnblogs.com/ev-zhk/p/4277023.html
[root@www ~]# sed [-nefr] [动作] 选项与参数: -n :运用安静(silent)形式。在一般 sed 的用法中,一切来自 STDIN 的数据一般都会被列出到终端上。但假如加上 -n 参数后,则只需经过sed 特别处理的那一行(或许动作)才会被列出来。 -e :直接在指令列形式上进行 sed 的动作修正; -f :直接将 sed 的动作写在一个文件内, -f filename 则能够运转 filename 内的 sed 动作; -r :sed 的动作支撑的是延伸型正规表明法的语法。(默许是根底正规表明法语法) -i :直接修正读取的文件内容,而不是输出到终端。  动作阐明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『挑选进行动作的行数』,举例来说,假如我的动作是需求在 1020 行之间进行的,则『 10,20[动作行为] 』  function: a :新增, a 的后边能够接字串,而这些字串会在新的一行呈现(现在的下一行)~ c :替代, c 的后边能够接字串,这些字串能够替代 n1,n2 之间的行! d :删去,由于是删去啊,所以 d 后边一般不接任何咚咚; i :刺进, i 的后边能够接字串,而这些字串会在新的一行呈现(现在的上一行); p :列印,亦行将某个挑选的数据印出。一般 p 会与参数 sed -n 一同运转~ s :替代,能够直接进行替代的作业哩!一般这个 s 的动作能够调配正规表明法!例如 1,20s/old/new/g 便是啦!
仿制代码


sed -i 便是直接对文本文件进行操作的

sed -i 's/原字符串/新字符串/' /home/1.txt sed -i 's/原字符串/新字符串/g' /home/1.txt


这两条指令的差异便是,看示例吧

这是1.txt的内容

#cat 1.txt d ddd #ff

再看履行这两条指令的差异吧

仿制代码
sed -i 's/d/7523/' /home/1.txt 履行成果 7523 7523dd #ff  sed -i 's/d/7523/g' /home/1.txt 履行成果 7523 752375237523 #ff
仿制代码

 

去掉 “行首” 带“@”的首字母@

sed -i 's/^@//' file

 

特定字符串的行前刺进新行

sed -i '/特定字符串/i 新行字符串' file

 

特定字符串的行后刺进新行

sed -i '/特定字符串/a 新行字符串' file

 

特定字符串的删去

sed -i '/字符串/d' file

 



Bwin平台 2019-04-04 17:49 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/04/216336.htmlPrayerPrayerThu, 04 Apr 2019 09:46:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/04/216336.htmlhttp://www.fometaux.com/prayer/comments/216336.htmlhttp://www.fometaux.com/prayer/archive/2019/04/04/216336.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216336.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216336.htmlhttps://blog.csdn.net/halazi100/article/details/41722021

在运用sed对日志或许其它文本进行parse的进程傍边,有时分咱们需求引证外部变量的值,
 
或许获取一个shell指令履行的成果,以便到达愈加可观的输出成果。这儿介绍怎么做到。
 
sed中运用变量替换
 
1.sed指令运用双引号的状况下,运用$var直接引证
 
$ echo|sed "s/^/$RANDOM.rmvb_/g"
 29328.rmvb_

假如替换的变量内容中含有/符号则会提示如下过错,如
查找当时目录下的目录文件并将相对途径替换为肯定途径
find . -type f | sed -n "s/\./$PWD/p"
sed: -e expression #1, char 19: unknown option to `s'
从语法上看,没有任何问题;但由于变量中包括有“/”作为分隔符,这会和sed的替换操作的分隔符“/”引起混杂;所以,只需不运用“/”做分隔符就能够处理这个问题,假如运用“%”而不是“/”来作为sed的替换操作的分隔符,就不会犯错。其实运用#或%或;作为分隔符也是能够的,只需不会与替换中有相同的并且不是元字符的特别符号都是能够的;运用时能够依据状况灵敏挑选。
find . -type f | sed -n "s%\.%$PWD%p"
find . -type f | sed -n "s#\.#$PWD#p"

# 上面比方引证了一个环境变量$RANDOM的值
 
2.sed指令运用单引号的状况下,运用'"$var"'引证
 
相似,咱们能够看到
 
$ echo|sed 's/^/'"$RANDOM"'.rmvb_/g'
 31338.rmvb_
 
sed中履行外部指令
 
1.sed指令运用单引号的状况下运用'`shell command`'或许'$(shell command)'引证指令履行的成果
 
仍是以上面事例剖析,比方如下
 
$ echo|sed 's/^/'`echo $RANDOM`'.rmvb_/g'
 8063.rmvb_
 

# 上面的比方运用了老式的指令替换,也能够选用新式的指令替换办法,如下
 
$ echo|sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
 18554.rmvb_
 

# 下面比方取用当时日期作为成果的一部分,如下
 
$ echo|sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
 20120108.rmvb_
 

2.sed指令运用双引号的状况下直接`shell command`或许$(shell command)引证指令履行的成果
 

相似的,双引号的状况,如下
 
$ echo|sed "s/^/$(date +"%Y%m%d").rmvb_/g"
 20120108.rmvb_
 

# 运用环境变量$RANDOM以及老式指令替换的比方
 
$ echo|sed "s/^/`echo $RANDOM`.rmvb_/g"
 4988.rmvb_
 
总结
 
在sed句子里边,变量替换或许履行shell指令,双引号比单引号少绕一些弯子



Bwin平台 2019-04-04 17:46 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/04/216335.htmlPrayerPrayerThu, 04 Apr 2019 09:46:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/04/216335.htmlhttp://www.fometaux.com/prayer/comments/216335.htmlhttp://www.fometaux.com/prayer/archive/2019/04/04/216335.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216335.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216335.html比较文件夹diff,能够直接运用diff指令

[root@~]# diff -urNa dir1 dir2
  -a Treat all files as text and compare them line-by-line, even if they do not seem to be text.
  -N, --new-file
    In directory comparison, if a file is found in only one directory, treat it as present but empty in the other directory.
  -r When comparing directories, recursively compare any subdirectories found.

  -u Use the unified output format.

 

比较文件夹diff,也能够比较文件MD5列表。下面指令能够获取文件夹中文件md5列表

find /home/ -type f -not \( -name '.*' \) -exec md5sum {} \;

阐明:(1) /home/文件目录

     (2) -type f 文件类型为一般文件

     (3) -not \( -name '.*' \)  过滤掉躲藏文件。能够过滤掉不需求考虑的文件

         (4) -exec md5sum {} \;  对每个文件履行md5sum指令 

 

 用tar指令紧缩后,比较文件的MD5是不可的。tar紧缩会带上文件的时刻



Bwin平台 2019-04-04 17:46 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/04/216334.htmlPrayerPrayerThu, 04 Apr 2019 09:13:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/04/216334.htmlhttp://www.fometaux.com/prayer/comments/216334.htmlhttp://www.fometaux.com/prayer/archive/2019/04/04/216334.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216334.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216334.htmlhttps://www.jianshu.com/p/66f79ad53406

假如知道行号能够用下面的办法

sed -i '88 r b.file' a.file    #在a.txt的第88行刺进文件b.txt awk '1;NR==88{system("cat b.file")}' a.file > a.file 

假如不知道行号,能够用正則匹配

sed -i '/regex/ r b.txt' a.txt # regex是正则表达式 awk '/target/{system("cat b.file")}' a.file > c.file 

sed的話假如不改动源文件,能够去掉-i开关,修正会输出到STDOUT

原文件:

[root@xiaowu shell]# cat -n file       1  aaaa      2  bbbb      3  cccc      4  dddd 

现在要在第二行即“bbbb”行的下面增加一行,内容为“xiaowu”

[root@xiaowu shell]# sed '/bbbb/a\xiaowu' file  aaaa bbbb xiaowu cccc dddd 

假如要加两行“xiaowu”能够用一下句子,留意用“\n”换行

[root@xiaowu shell]# sed '/bbbb/a\xiaowu\nxiaowu' file  aaaa bbbb xiaowu xiaowu cccc dddd 

假如要在第二行即“bbbb”行的上增加一行,内容为“xiaowu”,能够把参数“a”换成“i”

[root@xiaowu shell]# sed '/b/i\xiaowu' file  aaaa xiaowu bbbb cccc dddd 

以上文件中只需一行匹配,假如文件中有两行或许多行匹配,成果有是怎么呢?

[root@xiaowu shell]# cat -n file       1  aaaa      2  bbbb      3  cccc      4  bbbb      5  dddd 
[root@xiaowu shell]# sed '/bbbb/a\xiaowu' file  aaaa bbbb xiaowu cccc bbbb xiaowu dddd 

由成果可知,每个匹配行的下一行都会被增加“xiaowu”

那么假如指向在第二个“bbbb”的下一行增加内容“xiaowu”,该怎么操作呢?
能够考虑先获取第二个“bbbb”行的行号,然后依据行号在此行的下一行增加“xiaowu”

获取第二个“bbbb”行的行号的办法:
办法一:

[root@xiaowu shell]# cat -n file |grep b |awk '{print $1}'|sed -n "2"p 4 

办法二:

[root@xiaowu shell]# sed -n '/bbbb/=' file |sed -n "2"p 4 

由成果可知第二个“bbbb”行的行号为4,然后再在第四行的前或后增加相应的内容:

[root@xiaowu shell]# sed -e '4a\xiaowu' file  aaaa bbbb cccc bbbb xiaowu dddd 
[root@xiaowu shell]# sed -e '4a\xiaowu\nxiaowu' file  aaaa bbbb cccc bbbb xiaowu xiaowu dddd 

向指定行的结尾增加指定内容,比方在“ccccc”行的行尾介绍“ eeeee”

[root@xiaowu shell]# cat file aaaaa bbbbb ccccc ddddd [root@xiaowu shell]# sed 's/cc.*/& eeeee/g' file aaaaa bbbbb ccccc eeeee ddddd 

原文链接



Bwin平台 2019-04-04 17:13 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/04/216333.htmlPrayerPrayerThu, 04 Apr 2019 02:15:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/04/216333.htmlhttp://www.fometaux.com/prayer/comments/216333.htmlhttp://www.fometaux.com/prayer/archive/2019/04/04/216333.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216333.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216333.html在rhel6.6上装置qt后,运转qtcreator提示 “中心载入失利: /opt/Qt5.3.2/Tools/QtCreator/lib/qtcreator/plugins/libCore.so: 无法加载库/opt/Qt5.3.2/Tools/QtCreator/lib/qtcreator/plugins/libCore.so:(/usr/lib64/libstd12bet.so.6: version `GLIBCXX_3.4.14' not found (required by /opt/Qt5.3.2/Tools/QtCreator/lib/qtcreator/plugins/libCore.so))

在网上查找材料后,处理办法如下

 

1.检查gcc版别中包括哪些库。

strings /usr/lib64/libstd12bet.so.6 | grep GLIBC

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  能够看出不包括GLIBCXX_3.4.14

2.从网上下载高版别的libstd12bet.so.6.0.13以上的版别,比方libstd12bet.so.6.0.17。

3.把libstd12bet.so.6.0.17拷贝到/usr/lib64目录下。

  cp libstd12bet.so.6.0.17 /usr/lib64/

4.删去libstd12bet.so.6符号衔接。

  rm libstd12bet.so.6

5.新建里符号衔接。

  ln -s libstd12bet.so.6.0.17 libstd12bet.so.6

6.再次检查就没有问题了。

 

libstd12bet.so.6.0.17下载地址



Bwin平台 2019-04-04 10:15 宣布谈论
]]>
12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/04/216332.htmlPrayerPrayerThu, 04 Apr 2019 02:14:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/04/216332.htmlhttp://www.fometaux.com/prayer/comments/216332.htmlhttp://www.fometaux.com/prayer/archive/2019/04/04/216332.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216332.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216332.html
  • /lib 
    最基本的同享库和内核模块。 
    意图 -> 寄存用于发动体系和履行root文件体系的指令的如/bin /sbin的二进制文件的同享库,或许寄存32位,或许64位(file指令检查)。
  • /lib、 /usr/lib、/usr/local/lib 
    意图 -> 便是为了区别32位和64位而设置的目录。这种状况下/lib有或许是其符号链接。
  • /usr/lib、/usr/local/lib 
    程序和装置包的库途径。 
    阐明 -> 不依靠特定架构的库应该放到/usr/share中而不是这儿。应用程序能够自己创立一个独自的子目录并把自己的库放在其间。

  • 总结 
    一般状况下: 
    体系自己会匹配应用程序与其应该调用的位数的库。 
    假如是用于/bin /sbin的库,放置到/lib*之中。 
    假如是用于用户程序或装置包的,放置到/usr/lib*或/usr/local/lib*之中。 
    假如某个库仅仅特其他用了某个专用程序,而这个程序但并不计划直接被用户或许root调用,应放置到/usr/libexec中。

  • http://unix.stackexchange.com/questions/74646/difference-between-lib-lib32-lib64-libx32-and-libexec



    Bwin平台 2019-04-04 10:14 宣布谈论
    ]]>
    12bet++博客-Prayerhttp://www.fometaux.com/prayer/archive/2019/04/03/216328.htmlPrayerPrayerWed, 03 Apr 2019 07:56:00 GMThttp://www.fometaux.com/prayer/archive/2019/04/03/216328.htmlhttp://www.fometaux.com/prayer/comments/216328.htmlhttp://www.fometaux.com/prayer/archive/2019/04/03/216328.html#Feedback0http://www.fometaux.com/prayer/comments/commentRss/216328.htmlhttp://www.fometaux.com/prayer/services/trackbacks/216328.html

    本文要介绍的ldd和nm是linux下,两个用来剖析程序很有用的东西。ldd是用来剖析程序运转时需求依靠的动态库的东西;nm是用来检查指定程序中的符号表相关内容的东西。下面经过比方,分别来介绍一下这两个东西:

    1. ldd, 先看下面的比方, 用ldd检查cs程序所依靠的动态库:

    1. $ ldd cs  
    2. linux-gate.so.1 =>  (0xffffe000)  
    3. libz.so.1 => /lib/libz.so.1 (0xb7f8c000)  
    4. libpthread.so.0 => /lib/libpthread.so.0 (0xb7f75000)  
    5. libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb7e4d000)  
    6. libpcre.so.0 => /usr/lib/libpcre.so.0 (0xb7e21000)  
    7. libstd12bet.so.6 => /usr/local/gcc4.5.1/lib/libstd12bet.so.6 (0xb7d40000)  
    8. libm.so.6 => /lib/libm.so.6 (0xb7d18000)  
    9. libgcc_s.so.1 => /usr/local/gcc4.5.1/lib/libgcc_s.so.1 (0xb7cfd000)  
    10. libc.so.6 => /lib/libc.so.6 (0xb7bbc000)  
    11. /lib/ld-linux.so.2 (0xb7fab000)  
    12. libdl.so.2 => /lib/libdl.so.2 (0xb7bb7000)  

    在上面的比方中,ldd的成果能够分为三列来看:

    •榜首列:程序需求依靠什么库
    •第二列: 体系供给的与程序需求的库所对应的库
    •第三列:库加载的开端地址
    经过上面的信息,咱们能够得到以下几个信息:

    •(1) 经过比照榜首列和第二列,咱们能够剖析程序需求依靠的库和体系实践供给的,是否相匹配
    •(2) 经过调查第三列,咱们能够知道在当时的库中的符号在对应的进程的地址空间中的开端方位
    2. nm, 经过下面的比方,咱们来介绍nm东西:

    先看一下这个简略的程序:

    1. #include "iostream"   
    2.    
    3. using namespace std;  
    4.    
    5. class Test  
    6. {  
    7. public:  
    8.     void Hello()  
    9.     {  
    10.         cout < < "Hello world!" << endl;  
    11.     }  
    12. };  
    13.    
    14. int main()  
    15. {  
    16.     Test test;  
    17.     test.Hello();  
    18. }  

    接下来,咱们编译该程序,然后看nm的成果:

    1. $ g++ test.cc -o test  
    2. c$ nm test  
    3. 08049f10 d _DYNAMIC  
    4. 08049ff4 d _GLOBAL_OFFSET_TABLE_  
    5. 080486f0 t _GLOBAL__I_main  
    6. 080487fc R _IO_stdin_used  
    7.          w _Jv_RegisterClasses  
    8. 080486b0 t _Z41__static_initialization_and_destruction_0ii  
    9. 0804870c W _ZN4Test5HelloEv  
    10.          U _ZNSolsEPFRSoS_E@@GLIBCXX_3.4  
    11.          U _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4  
    12.          U _ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4  
    13. 0804a040 B _ZSt4cout@@GLIBCXX_3.4  
    14.          U _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCXX_3.4  
    15. 0804a0d4 b _ZStL8__ioinit  
    16.          U _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCXX_3.4  
    17. 08049f00 d __CTOR_END__  
    18. 08049ef8 d __CTOR_LIST__  
    19. 08049f08 D __DTOR_END__  
    20. 08049f04 d __DTOR_LIST__  
    21. 080488c8 r __FRAME_END__  
    22. 08049f0c d __JCR_END__  
    23. 08049f0c d __JCR_LIST__  
    24. 0804a02c A __bss_start  
    25.          U __cxa_atexit@@GLIBC_2.1.3  
    26. 0804a024 D __data_start  
    27. 080487b0 t __do_global_ctors_aux  
    28. 08048610 t __do_global_dtors_aux  
    29. 0804a028 D __dso_handle  
    30.          w __gmon_start__  
    31.          U __gxx_personality_v0@@CXXABI_1.3  
    32. 080487aa T __i686.get_pc_thunk.bx  
    33. 08049ef8 d __init_array_end  
    34. 08049ef8 d __init_array_start  
    35. 08048740 T __libc_csu_fini  
    36. 08048750 T __libc_csu_init  
    37.          U __libc_start_main@@GLIBC_2.0  
    38. 0804a02c A _edata  
    39. 0804a0d8 A _end  
    40. 080487dc T _fini  
    41. 080487f8 R _fp_hw  
    42. 08048508 T _init  
    43. 080485e0 T _start  
    44. 0804a0cc b completed.7065  
    45. 0804a024 W data_start  
    46. 0804a0d0 b dtor_idx.7067  
    47. 08048670 t frame_dummy  
    48. 08048694 T main  

    上面便是test这个程序中一切的符号,首要需求介绍一下上面的内容的格局:

    •榜首列:当时符号的地址
    •第二列:当时符号的类型
    •第三列:当时符号的称号
    在上面的成果中,像_ZN4Test5HelloEv这样的符号,许多读者朋友或许会被它搞晕,这儿介绍个小技巧,在nm的时分,加上-C选项,就能够把这些难以识其他符号,转换成便于咱们阅览的符号TestHello()。这个首要是12bet中的mangle机制所导致的,加上-C便是指定列出的符号是demangle了的。说了这么多,究竟nm对咱们程序有啥详细的协助呢,我觉得首要有以下几个方面:
    (1)判别指定程序中有没有界说指定的符号 (比较常用的办法:nm -C proc | grep symbol)
    (2)处理程序编译时undefined reference的过错,以及mutiple definition的过错

    (3)检查某个符号的地址,以及在进程空间的大约方位(bss, data, text区,详细能够经过第二列的类型来判别)

    本文要介绍的ldd和nm是linux下,两个用来剖析程序很有用的东西。ldd是用来剖析程序运转时需求依靠的动态库的东西;nm是用来检查指定程序中的符号表相关内容的东西。下面经过比方,分别来介绍一

    相关引荐



    Bwin平台 2019-04-03 15:56 宣布谈论
    ]]>