Linux下常用命令汇总(持续更新)

1. 前言

好记心不如烂笔头,一段时间不用,有些命令就忘掉了,鉴于此,开一个博客持续更新,记录一下那些容易忘记的常用命令。

2. Linux常用查询类命令

  1. find搜索命令:find命令功能十分强大,具体参考网站,本文仅列出常用几种。
    在指定路径下搜索文件,模糊匹配:find /home -name "cache*" ,搜索/home目录及其子目录下所有文件和文件夹,模糊匹配“cache"关键词,加一个-i参数可以忽略大小写,find /home -iname "cache*" 
    当前目录及子目录下查找所有以.txt和.pdf结尾的文件:
    find . \( -name "*.txt" -o -name "*.pdf" \) 或者 find . -name "*.txt" -o -name "*.pdf"
    找出/home下不是以.txt结尾的文件:find /home ! -name "*.txt"
    删除当前目录下所有.txt文件:find . -type f -name "*.txt" -delete
    当前目录下搜索出权限为777的文件:find . -type f -perm 777
  2. zgrep和grep命令搜索文件:
    zgrep:标准用法: zgrep "xxxx" path ,path后面可以 指定多个目录,同时根据关键词grep其中的压缩文件,速度非常快速。
    实例:zgrep “CACHE” ./* ,以关键词CACHE,搜索当前路径下所有压缩文件。
    grep:标准用法: zgrep "xxxx" path,除了不能搜索压缩文件,其余与zgrep基本一致。例子:grep "CACHE" ./*
  3. zcat和cat命令搜索文件:
    zcat:可以直接查看压缩文件里面内容,一般结合管道符(如grep过滤关键词)使用,当然,还有很多丰富的用法。
    cat:可以直接查看非压缩文件里面内容,其余与zcat一致,例子: cat redis.log | grep "CACHE",打开redis.log,过滤出指定内容
  4. 查看操作系统版本:
    cat /proc/version  或者 uname -a
  5. 带ip和端口查看节点是否联通:
    telnet IP Port
  6. 查看Linux端口是否开放:
    netstat -nupl  (UDP类型的端口)
    netstat -ntpl  (TCP类型的端口)
  7. 查看进程环境变量等信息:进入/proc/pid(进程号)文件目录,查看 environ 文件。

  8. 查看进程启动的时间和存活的时间: 

    首先,用ps命令查看目标进程的进程号;
    然后,命令:ps -eo pid,lstart,etime | grep 目标进程pid
    其中,pid表示进程pid,lstart为启动时间,etime为运行时间
  9. 查看磁盘容量及占用率:
    sudo df -hl
  10. dmesg :‘dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。
    dmesg 
    更多应用见:https://www.cnblogs.com/zhaoxuguang/p/7810651.html

3. Linux常用调试类命令

  1. 带源地址ping命令:如下例子,其中,-I 参数指定网卡接口、或指定的本机地址送出数据包,-c 参数表示ping的次数,172.168.251.1表示被ping的目标机地址。
    ping -I 172.168.251.2 -c 10 172.168.251.1
  2. 查看系统GLIBC版本:
    普通Linux系统:strings /lib/libc.so.6 | grep GLIBC
    Ubuntu:strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC
  3. 查看系统中某个具体函数的版本,如,查询memcpy的版本:
    普通Linux系统:objdump -T /lib/libc.so.6 | fgrep memcpy
    Ubuntu:objdump -T /lib/x86_64-linux-gnu/libc.so.6 | fgrep memcpy
  4. 查询C/C++可执行文件或者进程所涉及函数的GLIBC库:如,查询redis-server进程涉及的函数使用的GLIBC库
    不指定具体版本:objdump -T redis-server| fgrep GLIBC
    指定具体版本:objdump -T redis-server| fgrep GLIBC_2.14
  5. 指定网卡注入丢包率:如下:
    sudo tc qdisc add dev eth1 root netem loss 20%
    sudo tc qdisc del dev eth0 root netem loss 70%
  6. 关闭、启动网卡:如,分别关闭启动eth0网卡:
    ifconfig eth0 down,ifconfig eth0 up

4. Linux常用功能类命令

  1. 远程复制命令:如,将远程机器100.120.xxx.xxx的/usr/local/cache路径下的文件复制到本机/usr1下,命令如下:
    scp -r [email protected]:/usr/local/cache  /usr1
  2. sed命令批量替换字符串:Linux下,用sed命令可以批量替换多个文件中的字符串。
    替换指定文件中的字符串:sed -i "s/原字符串/新字符串/g"  文件路径/文件名
    实例1:sed -i "s/charset=gb2312/charset=UTF-8/g" /opt/file/node.conf
    如果需要替换的内容比较长,可用 “.*” 替代
    实例2:
    TRUST_PASS=dnsjkndvksjcvndjkvndfkjvfk
    CONFIG_PATH=/opt/config
    sed -i "s/trustStore_password=.*/trustStore_password=$TRUST_PASS/" $CONFIG_PATH/server.properties
    【解释】:
    g:如果没有g标记,则每行只有第一个匹配项会被替换;
    替换指定路径下所有文件中的目标字符串:
    sed -i "s/charset=gb2312/charset=UTF-8/g" `grep charset=gb2312 -rl  /opt/config`
    【解释】:
    -i 表示inplace edit,就地修改文件
    -r 表示搜索子目录
    -l 表示输出匹配的文件名
    这个命令组合很强大,要注意备份文件。
    打印发生替换的行:(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行发生了替换,就打印它。
    sed -n 's/test/mytest/p' example
    更多内容请查看博客:http://www.frostsky.com/2014/01/linux-sed-command/
  3. Linux下杀死僵尸进程,如果Linux上出现僵尸进程(即状态为z(zombie)),此时,普通的kill -s 9命令是无法杀死该进程的,需要通过重启或者杀死其父进程的方式来解决问题。重启服务器显然是不可取的,因此,一般通过杀死父进程的方式解决:
    使用命令:ps aux | grep 进程名  查看进程是否僵尸,状态为z则为僵尸

    使用命令:cat /proc/44505/status  (44505为僵尸进程号)查看其父进程:

    使用命令:kill -s 9 父进程PID 杀死父进程,问题解决。

猜你喜欢

转载自blog.csdn.net/Jin_Kwok/article/details/80334499