1. 前言
好记心不如烂笔头,一段时间不用,有些命令就忘掉了,鉴于此,开一个博客持续更新,记录一下那些容易忘记的常用命令。
2. Linux常用查询类命令
- 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 linux下按时间过滤文件如何设置:find /your_path -type f \( -newermt '2014-12-02 09:11' -a -not -newermt '2015-01-13 12:02' \)
linux下按时间过滤文件如何设置并统计个数:find /your_path -type f \( -newermt '2014-12-02 09:11' -a -not -newermt '2015-01-13 12:02' \) | wc -l 过滤时间点前、后的文件:find /your_path -type f -newermt '2015-02-15 13:51' 和find /your_path -type f -not -newermt '2014-05-03 21:35' - zgrep和grep命令搜索文件:
zgrep:标准用法: zgrep "xxxx" path ,path后面可以 指定多个目录,同时根据关键词grep其中的压缩文件,速度非常快速。
实例:zgrep “CACHE” ./* ,以关键词CACHE,搜索当前路径下所有压缩文件。grep:标准用法: zgrep "xxxx" path,除了不能搜索压缩文件,其余与zgrep基本一致。例子:grep "CACHE" ./* - zcat和cat命令搜索文件:
zcat:可以直接查看压缩文件里面内容,一般结合管道符(如grep过滤关键词)使用,当然,还有很多丰富的用法。 cat:可以直接查看非压缩文件里面内容,其余与zcat一致,例子: cat redis.log | grep "CACHE",打开redis.log,过滤出指定内容 - 查看操作系统版本:
cat /proc/version 或者 uname -a - 带ip和端口查看节点是否联通:
telnet IP Port - 查看Linux端口是否开放:
netstat -nupl (UDP类型的端口) netstat -ntpl (TCP类型的端口) -
查看进程环境变量等信息:进入/proc/pid(进程号)文件目录,查看 environ 文件。
-
查看进程启动的时间和存活的时间:
首先,用ps命令查看目标进程的进程号;
然后,命令:ps -eo pid,lstart,etime | grep 目标进程pid
其中,pid表示进程pid,lstart为启动时间,etime为运行时间 - 查看磁盘容量及占用率:
sudo df -hl - dmesg :‘dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。
dmesg
更多应用见:https://www.cnblogs.com/zhaoxuguang/p/7810651.html - 查询当前目录下各个文件的大小,并匹配一定的模式:
-
匹配模式为,文件大小为100—999M的文件 ls -alh *|grep [0-9][0-9][0-9]M
3. Linux常用调试类命令
- 带源地址ping命令:如下例子,其中,-I 参数指定网卡接口、或指定的本机地址送出数据包,-c 参数表示ping的次数,172.168.251.1表示被ping的目标机地址。
ping -I 172.168.251.2 -c 10 172.168.251.1 - 查看系统GLIBC版本:
普通Linux系统:strings /lib/libc.so.6 | grep GLIBC Ubuntu:strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC - 查看系统中某个具体函数的版本,如,查询memcpy的版本:
普通Linux系统:objdump -T /lib/libc.so.6 | fgrep memcpy Ubuntu:objdump -T /lib/x86_64-linux-gnu/libc.so.6 | fgrep memcpy - 查询C/C++可执行文件或者进程所涉及函数的GLIBC库:如,查询redis-server进程涉及的函数使用的GLIBC库
不指定具体版本:objdump -T redis-server| fgrep GLIBC
指定具体版本:objdump -T redis-server| fgrep GLIBC_2.14 - 指定网卡注入丢包率:如下:
sudo tc qdisc add dev eth1 root netem loss 20% sudo tc qdisc del dev eth0 root netem loss 70% - 关闭、启动网卡:如,分别关闭启动eth0网卡:
ifconfig eth0 down,ifconfig eth0 up
4. Linux常用功能类命令
- 远程复制命令:如,将远程机器100.120.xxx.xxx的/usr/local/cache路径下的文件复制到本机/usr1下,命令如下:
scp -r root@100.120.xxx.xxx:/usr/local/cache /usr1 - 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/ - Linux下杀死僵尸进程,如果Linux上出现僵尸进程(即状态为z(zombie)),此时,普通的kill -s 9命令是无法杀死该进程的,需要通过重启或者杀死其父进程的方式来解决问题。重启服务器显然是不可取的,因此,一般通过杀死父进程的方式解决:
使用命令:ps aux | grep 进程名 查看进程是否僵尸,状态为z则为僵尸
使用命令:cat /proc/44505/status (44505为僵尸进程号)查看其父进程:
使用命令:kill -s 9 父进程PID 杀死父进程,问题解决。