一:linux常用命令篇 6223050001392045
包含字符串的文件查找
grep -n "hello,world!" *
grep -rn "17:17:19" .
find / -name socket
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
下面是一些有意思的命令行参数:
cat /proc/cpuinfo 查看cpu信息
scp /etc/mysql/my.cnf necok@192.168.1.136:/etc/mysql
将mysql配置文件上传到136服务器相应文件夹内
scp necok@192.168.1.136:/etc/mysql/my.cnf /etc/mysql
将136服务器上的mysql配置文件下载到本地的相应文件夹下面
scp -r /etc/mysql/ necok@192.168.1.136:/etc/mysql
-r为拷贝目录
查看端口号是否被占用 netstat -anp|grep 80
易洽:
1. 远控 10.42.205.228 (存在一个小网卡,可以连到192.168.0.0网段) 用户名密码: zw/Mcptt.123
10.42.205.178(双网卡,小网地址:192.168.15.178) root Mcptt.123 wifi环境,登录调度台可以远程10.42.205.228,再用网页访问192.168.15.178。PDS代码里取的地址为小网地址。手机app的服务器IP地址需要连wifi分配的地址。
2. 管理台: http://114.55.174.201:8002/echat/
新建运营商账号:放号使用,只管理终端号码
新建集团用户账号:账号使用后,进行群组创建之类
(详细参看文档)
集团管理员用户名密码 zwdf1/111111 //获取个人账号和加入群组
调度台: http://114.55.174.201 调度员账号密码 10111600030/111111 //必须使用集团调度员账号 权限才能进入,在管理台中寻找集团调度员账号
若出现下载插件,更新完后,需要把后台explorer.exe杀掉才行
OMM: http://114.55.174.201:2323/mcptt_1/client/# //用10.42.205.228(开发部公网pc机,能登录阿里云114.55.174.201)远程后IE进入,用admin01/zteGota1819账号进入 调试日志,输入msn号(管理台中申请的)
http://192.168.15.178:2323/inms_254/client/# //进入和PHR等配置界面
http://192.168.15.178:2323/mcptt_1/client/#
http://10.42.205.178:2323/mcptt_1/client/#
MBS登陆查看(admin/888888)
http://47.92.159.106/mbss/
一、 先远控堡垒机,有两台,随便用那一台都可以
10.42.205.2 用户名密码: gota/gota
10.42.205.5 用户名密码: dss/dss
二、然后在堡垒机里在远控内网的PC机
172.16.7.207 mcptt/mcptt123
这台机器是其他同事暂时不用,你先用着,自己的东西单独建个目录存放
后面机器具体怎么安排,等 青海 统一安排。
调试机环境:
172.16.2.250 root/pdscode123
mcptt/pdscode123
172.16.2.248 root/mcptt123
172.16.2.22 root/epc123 (PHR调试环境)
telnet调试:telnet 172.16.2.248 60020 (UPM是60021) 密码:zte
使用print直接打印shell可以直接显示,shell的反馈是输出到/zte/pds/log/cpm_shell.txt(upm_shell.txt)这个文件里(需要敲入命令:tail -f /zte/pds/log/shell_cpm.txt)。
本地 pc机如何向172.16.2.248拷贝数据:
PC<---ftp传输---10.42.123.178
|
|----ftp传输---->10.42.205.178创建zhuwei目录文件夹
tcpdump -i any -s 0 -w /home/zhuwei/udp.cap
linux的网卡流量统计工具是iftop统计
打开linux的core文件
vi /etc/security/limits.conf
#<domain> <type> <item> <value>
* soft core unlimited //打开core文件记录
* soft stack 10240 //修改线程栈空间到10M
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
shutdow -r now
#########################分析开始 函数栈被破坏的跑飞故障##############################
gdb -c core.4561
file pdscpm
bt
set print elements 0
//解决字符过长无法打印显示问题
(gdb) f 0
#0 0x00007fc996e9bd5a in ?? ()
(gdb) info f 查看当前栈的调用信息
Stack level 0, frame at 0x7fc995005b20:
rip = 0x7fc996e9bd5a; saved rip 0x7fc996e525e2
called by frame at 0x7fc995005b28
Arglist at 0x7fc995005b10, args:
Locals at 0x7fc995005b10, Previous frame's sp is 0x7fc995005b20
Saved registers:
rip at 0x7fc995005b18
(gdb)
info registers //查看寄存器值
(gdb) info registers
rax 0x7fc995006310 140503764984592
rbx 0x7fc995006110 140503764984080
rcx 0xffffffff 4294967295
rdx 0x7fc9950062f0 140503764984560
rsi 0xffffffff 4294967295
rdi 0xfffffff0 4294967280
rbp 0x7fc995006100 0x7fc995006100
rsp 0x7fc995005b30 0x7fc995005b30
r8 0x0 0
r9 0xc 12
r10 0xc 12
r11 0x7fc996e949f2 140503797025266
r12 0xfbad8001 4222451713
r13 0x7fc9950062f0 140503764984560
r14 0xffffffff 4294967295
r15 0x7fc9950062f0 140503764984560
rip 0x0 0x0
eflags 0x10286 [ PF SF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
info 回车查看帮助
(gdb) x/32 0x7fc995005b30
0x7fc995005b30: 0x00000000 0x00000000 0xffffffff 0xffffffff
0x7fc995005b40: 0x96e53d58 0x00007fc9 0x00000000 0x00000000
0x7fc995005b50: 0x00000075 0x00000000 0x00000000 0x00007fc9
0x7fc995005b60: 0x00000000 0x00000000 0x00ad9420 0x00000000
0x7fc995005b70: 0x00000002 0x00000000 0x0000000f 0x00007fc9
0x7fc995005b80: 0x00ad9425 0x00000000 0x00000000 0x00000000
0x7fc995005b90: 0x00000000 0x00007fc9 0x00000000 0x00007fc9
0x7fc995005ba0: 0x00000000 0x00007fc9 0x00000001 0x00000000
(gdb) x/32 0x7fc995006100
0x7fc995006100: 0x02dcd9ef 0x00000000 0x96e7f599 0x00007fc9
0x7fc995006110: 0xfbad8001 0xffffffff 0x02dcd9ef 0x00000000
0x7fc995006120: 0x02dcd9ef 0x00000000 0x02dcd9ef 0x00000000
0x7fc995006130: 0x02dcd9ef 0x00000000 0x02dcd9ef 0x00000000
0x7fc995006140: 0x02dce9df 0x00000000 0x02dcd9ef 0x00000000
0x7fc995006150: 0x02dce9df 0x00000000 0x00000000 0x00000000
0x7fc995006160: 0x00000000 0x00000000 0x00000000 0x00000000
0x7fc995006170: 0x00000000 0x00000000 0x00000000 0x00000000
(gdb) info thread
Id Target Id Frame
5 LWP 19779 0x00007fc996ef9413 in ?? ()
4 LWP 19776 0x00007fc996ef9413 in ?? ()
3 LWP 19777 0x00007fc997c006d5 in ?? ()
2 LWP 19778 0x00007fc997c006d5 in ?? ()
* 1 LWP 19780 0x00007fc996e9bd5a in ?? () //当前 跑飞的线程
(gdb) thread
[Current thread is 1 (LWP 19780)] //只有一个id无法查看
在当前服务器shell下敲入:dmesg >>/zte/pds/dmesg.txt 然后打开查找19780的线程
找到这一行有用信息:[236445.233493] pdscpm[19780]: segfault at fffffff0 ip 00007fc996e9bd5a sp 00007fc995005b18 error 4 in libc-2.17.so[7fc996e0b000(进程的.SO装入地址)+1b7000(so长度)]
可以断言跑飞在libc-2.17.so中,
如何取当前跑飞行地址呢:
当前跑飞行地址(相对地址,是编译elf之前的地址未经过重定向,所以后面反汇编时不是用elf,而是用.SO) = 00007fc996e9bd5a - 7fc996e0b000 = 90D5A(跑飞行相对地址)
objdump -d libc-2.17.so>>/zte/pds/libc-2.17.so.txt
vim libc-2.17.so.txt
0000000000090d40 <strchrnul>:
90d40: 66 0f 6e ce movd %esi,%xmm1
90d44: 48 89 f9 mov %rdi,%rcx
90d47: 66 0f 60 c9 punpcklbw %xmm1,%xmm1
90d4b: 48 83 e7 f0 and $0xfffffffffffffff0,%rdi
90d4f: 66 0f ef d2 pxor %xmm2,%xmm2
90d53: 66 0f 60 c9 punpcklbw %xmm1,%xmm1
90d57: 83 ce ff or $0xffffffff,%esi
90d5a: 66 0f 6f 07 movdqa (%rdi),%xmm0 //跑飞行,通过上面最原始的跑飞信息看到rdi的值为0xfffffff0,这个地址应该对应的是bois地址。rdi寄存器值被修改
90d5e: 66 0f 70 c9 00 pshufd $0x0,%xmm1,%xmm1
90d63: 48 29 f9 sub %rdi,%rcx
90d66: 66 0f 6f d8 movdqa %xmm0,%xmm3
90d6a: 48 8d 7f 10 lea 0x10(%rdi),%rdi
90d6e: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0
90d72: 66 0f 74 da pcmpeqb %xmm2,%xmm3
90d76: d3 e6 shl %cl,%esi
90d78: 66 0f d7 d0 pmovmskb %xmm0,%edx
90d7c: 66 0f d7 cb pmovmskb %xmm3,%ecx
90d80: 09 d1 or %edx,%ecx
90d82: 21 f1 and %esi,%ecx
90d84: 75 20 jne 90da6 <strchrnul+0x66>
90d86: 66 0f 6f 07 movdqa (%rdi),%xmm0
90d8a: 48 8d 7f 10 lea 0x10(%rdi),%rdi
90d8e: 66 0f 6f d8 movdqa %xmm0,%xmm3
90d92: 66 0f 74 c1 pcmpeqb %xmm1,%xmm0
90d96: 66 0f 74 da pcmpeqb %xmm2,%xmm3
90d9a: 66 0f d7 d0 pmovmskb %xmm0,%edx
90d9e: 66 0f d7 cb pmovmskb %xmm3,%ecx
90da2: 09 d1 or %edx,%ecx
90da4: 74 e0 je 90d86 <strchrnul+0x46>
90da6: 0f bc d1 bsf %ecx,%edx
90da9: 48 8d 44 17 f0 lea -0x10(%rdi,%rdx,1),%rax
90dae: c3 retq
90daf: 90 nop
[root@iz8vbc7u89ns6vm0vwqm3bz lib64]# addr2line -e /usr/lib64/libc-2.17.so 90d5a -f
__strchrnul
:? /*lib库编译的时没有增加编译选项,行数未打出来*/
#########################分析结束##############################
x/11bb 0x7f041405e995 //按byte格式显示11个字节
云环境下载apk:
将手机apk拷贝到10.42.205.228的目录C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs中,
然后再手机终端浏览器输入:http://192.168.15.228/1-5.apk进行下载
取发布版本地址:
ftp:10.42.205.3
echat55云服务器:
主pds服务器:114.55.250.9
备pds服务器:47.92.154.238(私有:172.26.108.137)
MDS容灾服务器:47.92.159.106(私有:172.26.108.136)
版本安装英文转换成中文:
env | grep LANG查看中英文
cd /etc/
vi /etc/locale.conf
#LANG=en_US.UTF-8
LANG=zh_CN.UTF-8
source /etc/locale.conf
cd /home/installagent/
./killsetup.sh
./run.sh
主备容灾管理IE网页:http://caltta.com.cn/manage
安装完新版本,如果PHR进程没有起来,需要再db动态表里修改pds和phr的ip地址
[root@iz8vbc7u89ns6vm0vwqm3bz upm]# ll
鎬荤敤閲?6644
-rw-r--r-- 1 root root 5000028 6鏈? 22 16:30 division1.log
-rw-r--r-- 1 root root 1106413 6鏈? 23 09:36 division2.log
-rw-r--r-- 1 root root 1 6鏈? 23 09:31 division.ctl
-rw-r--r-- 1 root root 660728 6鏈? 23 09:36 pdsdb1.log
-rw-r--r-- 1 root root 1 6鏈? 23 09:31 pdsdb.ctl
[root@iz8vbc7u89ns6vm0vwqm3bz upm]# tail -f division2.log
查看线程:
[root@iz8vbc7u89ns6vm0vwqm3bz ~]# ps -aux | grep pds
root 1662 0.1 27.4 3193808 2195152 ? Sl 7月10 1:51 /zte/pds/pdscpm
root 1692 0.0 0.3 445468 26476 ? Sl 7月10 0:29 /zte/pds/pdsupm
root 1755 0.0 0.0 245804 4832 ? Sl 7月10 0:03 /zte/pds/pdsdbio
[root@iz8vbc7u89ns6vm0vwqm3bz ~]# pstree -p 1662
pdscpm(1662) ─┬─{pdscpm}(1665)
(1662是主线程)├─{pdscpm}(1666)
├─{pdscpm}(1667)
├─{pdscpm}(1668)
├─{pdscpm}(1670)
├─{pdscpm}(1671)
├─{pdscpm}(1672)
├─{pdscpm}(1673)
├─{pdscpm}(1674)
└─{pdscpm}(1675)
pstack pid 查看主线程或其他线程函数栈
strace -o output.txt -T -tt -e trace=all -p 1662 /*所有系统调用输出到output.txt中去*/
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo 机器的内存使用信息
/proc/pid(进程号)/maps pid(进程号)为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
71d6d000-71d8e000 rw-p 00000000 00:00 0 [heap]
71d8e000-72028000 rw-p 00000000 00:00 0 [heap]
71d6d000-71d8e000 rw-p 00000000 00:00 0 [heap]
71d8e000-72028000 rw-p 00000000 00:00 0 [heap]
脚本中引入环境变量:
. /etc/profile
. ~/.bash_profile
crontab自动运行脚本可能的失败原因:
1.脚本无法识别环境变量
2.脚本无法获取相对路径,脚本中调用脚本应该使用绝对路径
登陆mysql:
mysql -u root -p
SHOW DATABASES;
mysql> USE echat;
SHOW TABLES;
select * from phr_fleet;
select * from phr_fleet where nFID = 33;/*条件查询*/
select * from phr_fleet where nFID=4 AND cFleetName="ztefleet";/*复合条件查询*/
update ofuser set name = 'zhuweitest0000',creationDate = '00000',modificationDate = modificationDate,fleet_id = '0000' where username = 'admin';
查看mysql后台文件存在位置:show variables like '%dir%';