用友U8软件维护

U8服务器端:

U8客户端:

 

U8客户端与服务器端之间的关系:

  1. 客户端请求服务器端的11520端口
  2. 几次交互之后,客户端直接访问服务器端的sqlserver(1433端口)
  3. 问题:
    1. 客户端连接sqlserver的信息是在哪里配置的?或者是服务器端通过11520端口告知的?如果是的话,告知的是ip地址还是域名?告知的信息在服务器端如何配置的?
    2. 服务器端连接的1433端口是在哪里配置的?
    3. 服务器端的memcached是做啥的?哪里配置的?

rpm包制作点滴

由于没有系统全面地学习rpm包的制作,恨不得每次制作rpm都会遇到新的问题。

此前,我已经制作过几十个rpm包了,以为自己就是专家了,制作一个java的rpm包应该不难吧。

任务:替换掉原始jdk的rpm包中的几个文件,重新制作一个自定义的rpm包

问题:

  1. 制作的使用rpmbuild会自动分析依赖(其实根本没有任何依赖),如何避免?
    1. 解决办法: 在spec中添加
      AutoReqProv: no
  2. jdk中有很多jar文件,制作rpm包时会分析这些jar包,并且重新打jar包,过程如下:

    其中的/usr/lib/rpm/redhat/brp-java-repack-jars    慢的要死(其实根本没必要)
    解决办法: spec文件中添加:
    %define __jar_repack 0

 

参考: http://linuxadmin.blog.51cto.com/2683824/1782145

关于openssh

ssh是linux上不可或缺的软件,一般来讲,我们也不关心我们使用的ssh是哪个版本,因为我们很少会用到一些高级的功能。

在学习ansible的时候,发现了一个ssh的高级功能: ControlPersist 选项,可以持久化ssh回话,避免多次操作的重新连接,可以极大地提高ansible的效率,于是怀着极大的好奇想用一把试试;才发现连这个小小的愿望都不能很好地满足。

ssh的ControlPersist选项是从5.6版本开始出现的;我们常用的操作系统是centos6,标配的openssh版本为5.3(https://pkgs.org/download/openssh),如果要升级openssh就需要自己编译,没有找见el6下更高版本的openssh的rpm包,编译却是一件比较麻烦的事情: Linux升级openssh及问题总结 ; 如果使用centos7就好了,标配openssh版本为6.6的(现在最新版本已经7.4了,MAC上的openssh已经是7.2的了),然而从centos6升级到centos7又谈何容易。

新版本的openssh需要更新版本的openssl,如果要通过rpm包的方式升级的话,会带来很多软件的升级,牵一发而动全身

(从此,我有了一个新的想法,有意识地尽量使用centos7)

gdb tui

gdb 的tui模式看起来会舒服一些,不过,有时候可能会由于终端处理不好而花掉,此时可以ctrl-z 推到后台在回来,重绘就好了

进入tui模式的两种方式:

  1. 启动时使用-tui选项
  2. 启动后使用ctrl – x a

 

关于窗口:

一共有4中展示方式:

  1. src: 显示源码窗口和命令窗口(如果是用纯汇编写的二进制程序,则源码窗口不会有东西的)
  2. asm: 显示汇编窗口和命令窗口
  3. split: 显示源码窗口、汇编窗口、命令窗口
  4. regs: 如果当前是源码窗口/汇编窗口和命令,则同时显示寄存器窗口,如果当前是split的,则。。。

ctrl+alt+j 可以快速切换窗口,所以有时候不必太过于纠结使用哪种layout

 

参考资料:

  1. http://mingxinglai.com/cn/2013/07/gdbtui/
  2. 图形界面的gdb: https://blog.csdn.net/shenyuflying/article/details/53931865

关于traceroute偶发超时的问题

刚配好的网络,traceroute测试一下:

-n 是不需要ip反解析,执行会比较快;于是就遇到了今天的问题:快速执行几次该命令就会出现失败(*)的情况,如果执行的慢点儿倒是没有问题

分析:

  1. 可能是网络不稳定
    1. ping 测试,大量请求,无一丢包 (显然不是网络问题)
  2. 限速?
    1. traceroute 涉及的是udp和icmp,不放sysctl -a|grep rate 试试

原因如下:

该问题和内核的两个参数有关:icmp_ratelimit、icmp_ratemask

虽然 ping 也是icmp,但是这种类型的icmp默认没有速率限制,而端口不可达的icmp是有限制的,所以,ping没有问题,traceroute有问题

参考:

icmp_ratelimit : INTEGER
默认值是100 Jiffie
限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。0表示没有任何限制,否则表示jiffies数据单位中允许发送的个数。(如果在icmp_ratemask进行相应的设置Echo Request的标志位掩码设置为1,那么就可以很容易地做到ping回应的速度限制了)

icmp_ratemask : INTEGER
在这里匹配的ICMP被icmp_ratelimit参数限制速率.
匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100000011000 (6168 十进制)
关于标志位的设置,可参考 源程序目录/include/linux/icmp.h

0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply

* 号的被默认限速(见上表mask)

匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100 0 0 0 0 1 1001  (6169 十进制)

0 Echo Reply  掩码匹配