• Linux下的FIFO、pipe、unix domain socket漫谈

    在做Linux开发时,经常会接触 管道AF_UNIX 等相关词汇,为了弄清他们之间的关系,查阅了一些资料,将结果整理并记录下来。

  • Linux下使用gdb的调试技巧(2)

    本文重点介绍在gdb模式下的常用命令。

  • 使用命令行修改Linux系统的时区

    系统时区目录 系统支持时区的配置文件存放在 /usr/share/zoneinfo/ 目录下,可以进入到该目录下查看和搜索目标时区的相关配置文件。

    时区配置文件 Linux系统的当前时区配置文件存放在 /etc/localtime , 可以将时区配置文件拷贝到该位置下,也可以建立一个软连接指向系统时区目录中的配置文件。

    操作示例 以将系统的时区改为中国时间为例,以下操作先将旧的时区配置文件删掉,然后建立新的时区配置文件的符号链接。

    rm /etc/localtime
    ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    

    完成以上操作后,可以执行 date 命令查看修改效果。

  • Linux常用命令行指令 - netstat

    常见的选项有:
    -a (all)显示所有选项,netstat默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
    -l 仅列出有在 Listen (监听) 的服务状态
    -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计 (重要)
    -c 每隔一个固定时间,执行该netstat命令。

  • Linux常用命令行指令 - tcpdump

    tcpdump常用于网络抓包,能够将抓取的包保存下来,这样就能进一步深入分析。抓包保存的文件可以使用tcpdump进行查看,也可以借助第三方软件(如wireshark)进行辅助分析。

    1. 抓取指定网络设备上的包

    抓取网卡eth0上的包

    tcpdump -i eth0
    

    2. 限制抓包的数量

    只抓取5个包

    tcpdump -c 5 -i eth0
    

    3. 将抓取的包以ASCII的方式打印出来

    tcpdump -A -i eth0
    

    4. 将抓取的包以十六进制的方式打印出来

    tcpdump -XX -i eth0
    

    5. 对抓取到的包上打出更方便阅读的时间戳

    增加 -t 参数能够将抓取到的包中的时间以方便阅读的形式打印出来,使用 -tttt 参数能够将包中的时间戳以更详细的方式打印出来。

    tcpdump -t -i eth0
    tcpdump -tttt -i eth0
    

    6. 将抓取的包写入到文件中

    tcpdump -w netdump.pcap -i eth0
    

    7. 读取抓到的包

    tcpdump -r netdump.pcap
    

    8. 在抓到的包中显示ip地址

    增加 -n 参数不会解析主机名,增加 -nn 参数不会解析主机名和端口名

    tcpdump -n -i eth0
    tcpdump -nn -i eth0
    

    9. 以绝对值显示包的ISN号

    tcpdump -S -i eth0
    

    10. 对抓取到的包显示更详细的信息

    参数 -v 是verbose的缩写,以下命令表示对抓取到的包显示更详细的信息。

    tcpdump -v -i eth0
    tcpdump -vv -i eth0
    tcpdump -vvv -i eth0
    

    11. 对抓到的包进行协议类型过滤

    支持的协议类型有:fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp
    以下命令只会抓取网卡eth0上的arp包

    tcpdump -i eth0 arp
    

    12. 在抓包时对包进行大小过滤

    下面的命令会分别抓取大于1024字节和小于1024字节的包

    tcpdump -i eth0 greater 1024
    tcpdump -i eth0 less 1024
    

    13. 抓取指定端口上的包

    tcpdump -i eth0 port 22
    

    14. 抓取发往指定目的和端口上包

    可以使用 andor 对过滤条件进行组合以实现精确的抓包。

    tcpdump -w net_dump.pcap -i eth0 dst 10.181.140.216 and port 22
    

    常用tcpdump命令示例

    tcpdump –i any 'port 8888'
    tcpdump –i any 'tcp port 8888'
    tcpdump –i any 'tcp src port 8888'
    tcpdump –i any 'tcp src port 8888 and udp dst port 9999'
    tcpdump -i any 'src host 127.0.0.1 and tcp src port 12345' -XX -nn -vv
    
  • Linux常用命令行指令 - nc

    nc 命令是 netcat 的缩写,能够使用TCP或UDP协议读写网络连接中的数据,是一个方便可靠的调试工具。