linux 调试 命令,linux常用命令全集
大家好,关于linux 调试 命令很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于linux常用命令全集的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
linux网络相关的调试命令
在Linux网络调试中,常用的一系列命令能够帮助我们快速定位和解决网络相关问题。本文将详细介绍如何使用这些命令进行网络故障诊断。
首先,查看网卡物理连接状态,可以使用`nmcli device status`命令获取网络设备的详细信息。这会展示当前连接的网络设备及其状态,帮助确认网络连接是否正常。
查看IP相关信息时,`ifconfig`命令是一个基础工具。它用于配置和显示网络接口的网络参数。例如,eth0、eth4、wlan0、eno17776、ens33、ens160、bond0、virbr0、br0和lo等,分别代表不同的网络接口,如以太网接口、无线接口、团队网卡绑定接口等。
要修改网卡IP地址,可以采用以下方法:
手动修改网卡配置文件:使用`vim/etc/sysconfig/network-scripts/ifcfg-ens33`命令打开并编辑ens33的配置文件,调整IP地址、子网掩码、网关、DNS等参数,然后使用`nmcli con reload`、`nmcli connection down ens33`、`nmcli connection up ens33`或`systemctl restart network`等命令使配置生效。
使用`nmtui-edit`命令进行字符界面配IP(建议了解,但不推荐使用)。
临时配置IP地址,可以通过命令`ifconfig ens38 192.168.1.90`或`ifconfig ens38 192.168.1.90 netmask 255.255.255.0`实现。
查看端口的监听状态,使用`netstat an ut p`命令,其中`-a`表示显示所有连接和监听端口,`-u`表示显示UDP协议连接,`-t`表示显示TCP协议连接,`-p`表示显示连接对应的PID与程序名。
了解网络连接状态,`netstat`命令提供了丰富的信息,如连接协议种类、接收/发送字节数、本地和远程地址等。
优化TCP连接快速释放,可以通过修改`/proc/sys/net/ipv4/tcp_fin_timeout`文件,缩短TIME_WAIT时间来快速释放链接。
配置主机名和IP与主机名(域名)的对应关系,编辑`/etc/hostname`和`/etc/hosts`文件,后者优先级高于DNS解析。
查看路由信息,使用`route-n`命令,输出包含目标网络、网关地址、子网掩码等信息的路由表。
添加/删除路由条目,使用`route add`或`route del`命令,根据需要添加或删除路由条目,实现特定网络数据走指定网卡。
网络调试时,`traceroute`命令有助于跟踪到目标网址经过的路由器,而`ping`命令用于测试网络连通性,`arping`则在IP冲突或网关冲突时用于检查网络状况。
最后,`watch`命令提供实时监控网络状态的功能,通过设置高亮显示变化的区域和指定执行间隔时间,实现网络数据包变化的实时监控。
Linuxdebug常用Linux系统Debug命令
Linuxdebug,常用Linux系统Debug命令很多人还不知道,现在让我们一起来看看吧!
常用Linux系统Debug命令
命令系统,是一种计算机代码控制系统。常用Linux系统Debug命令有哪些呢?下面是相关的知识,欢迎阅读。
1、查看TCP连接状态
netstat-nat|awk'{print$6}'|sort|uniq-c|sort-rn
netstat-n| awk'/^tcp/{++S[$NF]};END{for(a in S) print a, S[a]}'
netstat-n| awk'/^tcp/{++state[$NF]}; END{for(key in state) print key,"",state[key]}'
netstat-n| awk'/^tcp/{++arr[$NF]};END{for(k in arr) print k,"",arr[k]}'
netstat-n|awk'/^tcp/{print$NF}'|sort|uniq-c|sort-rn
netstat-ant| awk'{print$NF}'| grep-v'[a-z]'| sort| uniq-c
netstat-nat|awk'{print$6}'|sort|uniq-c|sort-rn
netstat-n| awk'/^tcp/{++S[$NF]};END{for(a in S) print a, S[a]}'
netstat-n| awk'/^tcp/{++state[$NF]}; END{for(key in state) print key,"",state[key]}'
netstat-n| awk'/^tcp/{++arr[$NF]};END{for(k in arr) print k,"",arr[k]}'
netstat-n|awk'/^tcp/{print$NF}'|sort|uniq-c|sort-rn
netstat-ant| awk'{print$NF}'| grep-v'[a-z]'| sort| uniq-c
2、查找请求80端口最多的20个IP连接
netstat-anlp|grep 80|grep tcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|head-n20
netstat-ant|awk'/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}'|sort-rn|head-n20
tcpdump-i eth0-tnn dst port 80-c 1000| awk-F"."'{print$1"."$2"."$3"."$4}'| sort| uniq-c| sort-nr|head-n 20
3、查找较多time_wait连接
netstat-n|grep TIME_WAIT|awk'{print$5}'|sort|uniq-c|sort-rn|head-n20
4、找查较多的SYN连接
netstat-an| grep SYN| awk'{print$5}'| awk-F:'{print$1}'| sort| uniq-c| sort-nr| more
5、根据端口列进程
netstat-ntlp| grep 80| awk'{print$7}'| cut-d/-f1
6、获取Web访问前10位的'ip地址
cat access.log|awk'{print$1}'|sort|uniq-c|sort-nr|head-n 10
cat access.log|awk'{counts[$(11)]+=1}; END{for(url in counts) print counts[url], url}'
7、访问次数最多的文件或页面,取前20
cat access.log|awk'{print$11}'|sort|uniq-c|sort-nr|head-n 20
8、列出传输最大的几个rar文件
cat access.log|awk'{print$11}'|sort|uniq-c|sort-nr|head-n 20
9、列出输出大于200000byte(约200kb)的rar文件以及对应文件发生次数
cat access.log|awk'($10> 200000&&$7~/.rar/){print$7}'|sort-n|uniq-c|sort-nr|head-n 100
10、如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log|awk'($7~/.php/){print$NF""$1""$4""$7}'|sort-nr|head-n 100
cat access.log|awk'($7~/.php/){print$NF""$1""$4""$7}'|sort-nr|head-n 100
11、列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log|awk'($NF> 60&&$7~/.php/){print$7}'|sort-n|uniq-c|sort-nr|head-n 100
12、列出传输时间超过 30秒的文件
cat access.log|awk'($NF> 30){print$7}'|sort-n|uniq-c|sort-nr|head-n 20
13、统计网站流量(G)
cat access.log|awk'{sum+=$10} END{print sum/1024/1024/1024}'
14、统计404的连接
awk'($9~/404/)' access.log| awk'{print$9,$7}'| sort
15、统计http status
cat access.log|awk'{counts[$(9)]+=1}; END{for(code in counts) print code, counts[code]}'
cat access.log|awk'{print$9}'|sort|uniq-c|sort-rn
16、查看是哪些爬虫在抓取内容
tcpdump-i eth0-l-s 0-w- dst port 80| strings| grep-i user-agent| grep-i-E'bot|crawler|slurp|spider'
17、查看数据库执行的sql语句
tcpdump-i eth0-s 0-l-w- dst port 3306| strings| egrep-i'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'
18、按域统计流量
zcat squid_access.log.tar.gz| awk'{print$10,$7}'|awk'BEGIN{FS="[/]"}{trfc[$4]+=$1}END{for(domain in trfc){printf"%s%d",domain,trfc[domain]}}'
19、调试命令
strace-p pid
20、磁盘性能
iostat-x 1 10
linux 下面怎么用gdb调试多个.c文件
Linux下调试汇编代码既可以用 GDB、DDD这类通用的调试器,也可以使用专门用来调试汇编代码的 ALD(Assembly Language Debugger)。
从调试的角度来看,使用 GAS的好处是可以在生成的目标代码中包含符号表(symbol table),这样就可以使用 GDB和 DDD来进行源码级的调试了。要在生成的可执行程序中包含符号表,可以采用下面的方式进行编译和链接:
[xiaowp@gary code]$ as--gstabs-o hello.o hello.s
[xiaowp@gary code]$ ld-o hello hello.o
执行 as命令时带上参数--gstabs可以告诉汇编器在生成的目标代码中加上符号表,同时需要注意的是,在用 ld命令进行链接时不要加上-s参数,否则目标代码中的符号表在链接时将被删去。
汇编程序员通常面对的都是一些比较苛刻的软硬件环境,短小精悍的ALD可能更能符合实际的需要,因此下面主要介绍一下如何用ALD来调试汇编程序。首先在命令行方式下执行ald命令来启动调试器,该命令的参数是将要被调试的可执行程序:
[xiaowp@gary doc]$ ald hello
Assembly Language Debugger 0.1.3Copyright(C) 2000-2002 Patrick Alken
hell ELF Intel 80386(32 bit), LSB, Executable, Version 1(current)
Loading debugging symbols...(15 symbols loaded)
ald>
当 ALD的提示符出现之后,用 disassemble命令对代码段进行反汇编:
ald> disassemble-s.text
Disassembling section.text(0x08048074- 0x08048096)
08048074 BA0F000000 mov edx, 0xf
08048079 B998900408 mov ecx, 0x8049098
0804807E BB01000000 mov ebx, 0x1
08048083 B804000000 mov eax, 0x4
08048088 CD80 int 0x80
0804808A BB00000000 mov ebx, 0x0
0804808F B801000000 mov eax, 0x1
08048094 CD80 int 0x80
上述输出信息的第一列是指令对应的地址码,利用它可以设置在程序执行时的断点:
ald> break 0x08048088
Breakpoint 1 set for 0x08048088
断点设置好后,使用 run命令开始执行程序。ALD在遇到断点时将自动暂停程序的运行,同时会显示所有寄存器的当前值:
ald> run
Starting program: hello
Breakpoint 1 encountered at 0x08048088
eax= 0x00000004 ebx= 0x00000001 ecx= 0x08049098 edx= 0x0000000Fesp= 0xBFFFF6C0 ebp= 0x00000000 esi= 0x00000000 edi= 0x00000000
ds= 0x0000002B es= 0x0000002B fs= 0x00000000 gs= 0x00000000
ss= 0x0000002B cs= 0x00000023 eip= 0x08048088 eflags= 0x00000246
Flags: PF ZF IF
08048088 CD80 int 0x80
如果需要对汇编代码进行单步调试,可以使用 next命令:
ald> next
Hello, world!
eax= 0x0000000F ebx= 0x00000000 ecx= 0x08049098 edx= 0x0000000Fesp= 0xBFFFF6C0 ebp= 0x00000000 esi= 0x00000000 edi= 0x00000000
ds= 0x0000002B es= 0x0000002B fs= 0x00000000 gs= 0x00000000
ss= 0x0000002B cs= 0x00000023 eip= 0x0804808F eflags= 0x00000346
Flags: PF ZF TF IF
0804808F B801000000 mov eax, 0x1
若想获得 ALD支持的所有调试命令的详细列表,可以使用 help命令:
ald> help
Commands may be abbreviated.
If a blank command is entered, the last command is repeated.
Type `help<command>'' for more specific information on<command>.
General commands
attach clear continue detach disassemble
enter examine file help load
next quit register run set
step unload window write
Breakpoint related commands
break delete disable enable ignore
lbreak tbreak