Linux 基础命令备忘(二)

本文介绍了多种Linux命令行下的实用操作,包括使用sed进行文本编辑、文件内容替换、批量行尾追加、多行合并、网络包捕获、网络流量控制、进程管理、文件权限修改、内存使用查看、日志监控、文件搜索、别名设置、网络黑名单配置、程序版本查询、系统日志路径等。同时,还涵盖了网络带宽检查、进程堆栈信息获取、curl使用、gdb调试coredump以及文件删除和查找等高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sed 文本编辑

  • sed 字符串中匹配某个子串
    echo $string | sed 's/^.*--port=\([^ ]*\).*$/\1/'
  • 替换文件中的内容
    sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
    sed -i '' "s/oldstring/newstring/g" `grep oldstring -rl yourdir`  #mac 专用
  • 批量行尾追加行
sed -i '$a aaabbb\ncccddd' test.txt
  • 多行合并
    cat test | sed “s/[.*]//g” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' | while read …str" == “” ] ; then echo para;para="";fi;para="para ; para="" ; fi ; para="para;para="";fi;para="para $str" ; done
  • sed 替换换行为空格
    sed -e ":a;N;$ s/\n/ /g;ba"
  • sed 在每行的头添加字符,比如"HEAD",命令如下:
    sed 's/^/HEAD&/g' test.file
  • sed 在每行的行尾添加字符,比如“TAIL”,命令如下:
    sed 's/$/&TAIL/g' test.file

网络相关

  • 抓网络包 tcpdump
sudo /usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3332|strings|grep delete 
sudo /usr/sbin/tcpdump -i eth0 -s 0 -l -w - src 111.111.111.111 and dst  port 3332 |strings | grep delete
  • 限速拷贝

    • cp: rsync --bwlimit=1024 {src} {dest}
    • mv: rsync --bwlimit=1024 --remove-source-files {src} {dest}
  • tcpdump + tcprstat 配合计算 rt (丢包还是挺严重的,不过 avg 值符合预期)

        tcpdump -c 100000 -s 0  -i any -w mycap.pcap 'tcp port 3307 and ! host 111.111.111.111 and ! host 222.111.111.111 and ! host 127.0.0.1'
        tcprstat -r  mycap.pcap -l 111.111.111.111
  • 网卡限流
    添加限流规则 sudo tc qdisc add dev eth0 root tbf rate 40Mbit latency 100s burst 1000000
        rate 速度控制, latency 队列中数据保存时间,burst 队列长度 
    删除限流规则 sudo tc qdisc del dev eth0 root
    查看限流规则 tc -s qdisc show dev eth0
  • 端口限流
    sudo tc qdisc add dev eth0 root handle 1: htb default 30
    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 8kbit burst 15k
    sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 3307 0xffff flowid 1:1
  • 网络黑名单配置
添加IP 黑名单 
    /sbin/iptables -I  INPUT -s XXX.XXX.XXX.XXX -j DROP 
    /sbin/iptables -I INPUT -p tcp --dport 3307 -j DROP
删除IP 黑名单 
    iptables -D  INPUT -s XXX.XXX.XXX.XXX -j DROP 
  • 网卡带宽
    cat /proc/net/bonding/bond0 

其他

  • yum 安装目录

    • 查看是否安装:rpm -qa | grep postgresql
    • 查看安装目录:rpm -ql postgresql;
  • 运行 Jar 包

	java -jar -Xmx1024m D:\xxx.jar 
  • 让命令在后台执行

    • nohup … &
    • screen
  • 查看内存使用情况

    free -k/m/g      #参数是单位
    cat /proc/meminfo
  • 看日志
    watch -d -n 1 cat 
    tail -f 
  • 搜索文件(包括子目录)
find . -name "my*" -ls -type f
  • 设置假名

    • 添加 alias name=new name
    • 删除 unalias name
      date -R
  • 超级用户获得root权限

    sudo bash -c "sudo su"
  • 查看文件夹大小
    du -sh *
  • 查看进程树
pstree -Hpid -p
  • 更改文件 owner

    • chown -R mysql:dba /u01/zk/ 含义为: /u01/zk/ 目录下的文件的用户为 mysql 用户组为 dba
    • chgrp -R 变更用户组
  • 查看程序版本

    rpm -qa | grep java 
  • 系统日志目录

    • /var/log/messages
  • 设置终端字符集

    export LANG=zh_CN.utf-8
    export LANG=en_US.UTF-8
    export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
  • 查看删除但是占用空间的文件
    lsof | grep deleted
  • 批量删除文件
    find $path -name '.svn' -type f | xargs rm -rf 
  • 查看进程的运行堆栈信息

    • c/c++ 使用 gstack pid
    • java 使用 jstack -l pid
  • 利用 curl 使用 post 发送 json 参数

     curl http://xxxx?opt=add -d "insstr=[{\"instance_name\":\"111.111.111.111:8888\",\"username\":\"zhendong.wang\"}]"
  • 使用gdb 调试 core dump
    gdb runbin --core=core.30927
  • 程序调用堆栈(pocona 工具集)
    pt-pmp -p  PID
  • 批量搜索指定文件的内容
find ./ -type f -name "*.php" -exec grep -l "function xxxxfunction"  {} \;
  • 启用 coredump
    ulimit -c unlimited
    gdb -c core.pid program_name
  • 求和
    cat /tmp/1.log |awk '{sum+=$1} END {print sum}'
  • curl 后输出的字符集转换
    curl -s "http://xxxxxxx" | iconv -f gbk -t utf8 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值