赞
踩
1,在dir目录中查找file文件: find dir -name file
find ./ -mtime +7
-time 以day为单位
-min 以分钟为单位
m表示modify,+7表示超过7天未更新,-7表示7天之内更新过
2,在dir目录中搜索含有str字符串的文件: grep -nr str dir
3,其他常用的工具:过滤 grep,用指定分隔符取某个字段值 awk,删除替换字符串 sed
4,cat xxx | while read f;do echo $f;done 的替换用法:xargs,
echo '11@22@33@44@55@66@77@88@99@00' | xargs -d '@' -n 3 echo
-i选项的用法: -i mv {} {}.bak
5.1,远程获取文件/文件夹(-r):scp -P 22345 admin@192.168.5.79:/dir1/file /dir2
5.2,远程上传文件/文件夹(-r):scp -P 22345 ./file admin@192.168.5.89:/dir1 (注:-P 指定端口)
5.3,传输文件,接收端:nc -l port > xxx.txt 发送端:cat xxx.txt | nc remote_ip port
6,查看appname的进程ID情况:ps auxf | grep "appname" 然后杀死该进程:kill -9 PID (注:若涉硬件层调用,可能卡死);查看所有信号值:kill -l
7,查看系统cpu实时占用情况:mpstat -P ALL 1 cpu详细信息 cat /proc/cpuinfo
8,查看系统内存使用情况:free -[m|h] 详细点的: cat /proc/meminfo
9,获取系统识别的磁盘:fdisk -l 查看各分区的挂在目录及剩余容量:df -h
10,挂载某个分区到某个目录节点:mount /dev/sdb1 ./sf-u 验证 df -h 卸载 umount /dev/sdb1或者 umount ./sf-u
11,测试ip联通性: ping ip ,(icmp)提示"主机不可达",去的路上挂了! ;提示"超时",来的路上挂了!(找不到回去的路由)
11.1,判断端口是否对外开放(能否完成三次握手):telnet [ip] [port] 或者 nc -zv [ip] [port]
12,查看ip经过的路由节点:win7,tracert ip linux,traceroute ip
13,查看ip对应的mac地址:arp -a 设置静态的 ip-mac 对:arp -s ip_addr mac_addr(解决arp攻击的方法之一)
14,抓指定网口的ping(icmp)包: tcpdump -i eth0 -nnv icmp
14.1,抓本机发本机的包:tcpdump -iany dst host [本机ip地址] and dst port [本机端口]
15,抓指定ip的arp广播包:tcpdump -i eth0 arp | grep "200\.200\.155\.154"
16,抓指定ip/port的数据包:tcpdump -i eth0 host 200.200.155.154 and port not 47191 -n -c 1000
17,抓包到文件,方便wareshark分析:tcpdump -i eth0 host 200.200.155.154 and port not 47191 -n -c 1000 -nnv -s0 -w ./sf.cap
17.1,抓本机某个ip发出去的所有udp报文:tcpdump -iany -nnv udp and src host [local ip]
18,为指定网口添加ip地址:ip addr add 192.168.5.19/24 dev eth0 ,查看所有ip(含临时): ip a
19,查看路由:ip route 然后添加静态路由:ip route add 200.200.0.0/16 via 200.200.91.254 (若是默认路由,网段改成 default 即可)
20,网口的一些操作及信息查看:ethtool -i/p/d/S eth0,ethtool eth0,ifconfig eth0,ifconfig down/up eth0
21,可靠shell脚本:调试脚本 bash -x ./test.sh
set -x -e -u -o pipefail 解释:
-x : 在执行每一个命令之前把经过变量展开之后的命令打印出来(常用于调试)
-e : 遇到一个命令失败(返回码非零)时,立即退出;如果某个命令允许失败,则使用 some_cmd || true 做特殊处理
-u : 试图使用未定义的变量时,立即退出;如某个变量允许为空,可以使用 ${MAP_EMPTY_VAR:-} 做特殊处理
-o pipefail :只要管道中的一个子命令失败,整个管道命令就失败并立即退出
22,查看tcp/udp所有端口对应的服务情况:netstat -tunp ; 查看监听端口 -anptu
22.1,查看具体的socket信息:ss -anp,显示含(ESTAB "sshd",pid=79085,fd=3)信息;
22.2,查看具体的fd信息:lsof -np PID ; (lsof 是 lists openfiles的缩写,linux一切皆文件,很强大的一个命令,
展示内容:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
23,查看当前目录下的文件占用空间:du -h -d 1 或者 某个目录下总的使用空间 du -sh
24,解压tar包,tar -zxvf xxx.tar.gz ; 新建压缩包 tar -zcvf target.tar.gz src_dir
25,查看系统内存占用排行:ps auxf | sort -r -n -k 6 ;其中sort -r 表示由大到小,-n表示按数字,-k 6 表示以第六列数字排序
#以下是《程序员的修养》的实践。背景: 在编译环境编译 hydra,然后拷贝到设备使之运行。在设备上 ./hydra 报找不到符号,./hydra: symbol lookup error: /lib/libldap_r-2.4.so.2: undefined symbol: ber_sockbuf_io_udp 的错误的解决方法。
26,查看 hydra 应用程序所引用的库文件:ldd -r ./hydra
...libldap_r-2.4.so.2 => /lib/libldap_r-2.4.so.2 (0x00007f28df88a000)
undefined symbol: ber_sockbuf_io_udp (/lib/libldap_r-2.4.so.2)
27,验证某个库文件是否包含某个符号:cat /lib/libldap_r-2.4.so.2 | grep "ber_sockbuf_io_udp"
Binary file (standard input) matches
28,验证某个库文件的符号是否是导入符号(符号只是引用并未定义)或者导出符号(符号已定义实现):readelf -s /lib/libldap_r-2.4.so.2 ;从下面的输出 UND 字符串,可以判断 /lib/libldap_r-2.4.so.2 库没有该函数的实现,是导入符号而已。
.......20: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND ber_sockbuf_io_udp
29,查找应用程序引用的库中,某个符号(函数或全局变量)是在哪个库中定义的:(注意在编译环境查找)
ldd -r /usr/bin/hydra | awk '{print $3}' | while read f;do echo $f; readelf -s $f | grep ber_sockbuf_io_udp;done
...
/lib64/libldap_r-2.4.so.2
xx: 0000000000000000 0 OBJECT GLOBAL DEFAULT UND ber_sockbuf_io_udp
...
/lib64/liblber-2.4.so.2
xx: 000000000020e460 48 OBJECT GLOBAL DEFAULT 23 ber_sockbuf_io_udp
...
可以确定,ber_sockbuf_io_udp 符号是在 liblber-2.4.so.2 库中定义的。所以把 liblber-2.4.so.2 库从编译环境拷贝到设备上,删除设备原来的 liblber-2.4.so.2 库,ln -s 一下新库。设备 ./hydra 运行找不到符号的问题得以解决
30,查看linux进程系统调用:strace -p 进程ID号,可以看看nginx的惊群问题epoll系统调用情况
暂时能想到的就这么多,后续的常用linux命令有待补充...
31,对某个文件或者目录加锁,使root用户都无法使用chmod修改其属性:加锁,chattr +i 文件/目录。解锁,chattr -i 文件/目录。查看某文件底层属性:lsattr 文件/目录。注意 attr 应该是 attribute 属性的缩写。
32,查宕机能手,objdump -SDtx some.ko some.S 执行后,some.S 是对应 ko 文件的汇编文件
33,vim 替换文本字符串命令:
开发过程中常用的目前这些,后续随着工作内容的丰富继续补充...
38,每秒执行一次命令:watch , 比如查看 udp 的收发包统计情况: watch netstat -su
39,指定命令执行时间:timeout,抓5s钟的http包: timeout 5 tcpdump -iany -nnv -s0 -w http.pcap
40,查看某个进程的线程详情:top -b -d 1 -n 1 -Hp PID ,该命令结果可以重定向到问题件
41,查看总的磁盘 io 命令:iostat 查看进程磁盘 io 命令:pidstat -d 1
42,删除隐藏的文件:针对 df -h 没空间,du -h -d 1 又没占用多少的问题,lsof | grep deleted
找到对应的进程 pid 已经占用的隐性的大文件,尝试重启 pid 。
43,date 命令,时间戳转成可阅读时间 date -d @ts ; 或者加上 '+%Y-%m-%d %H:%M:%S'
查看当前时间戳 date +%s
查看当前可阅读时间 date +"%Y-%m-%d %H:%M:%S";
将可阅读时间转成时间戳 date -d "2024-03-05 15:00:04" +%s
plus,测试网络被我搞环路了好几天,今天测试同事终于查明原因,通知我说,是我的设备搞得鬼。刚开始我还死不承认,后来用网线直连打开ESXI,看到其中一个系统的两个网口,分明配置了"透明口",这是谁配置的? 我想一定是某个新同事搞得,为了证实这点,特地看了下操作日志,无奈环路的这段时间就是我的ip在登入。。。有时候自己不经意做的事,等注意到这是自己做的,往往会大吃一惊。呵呵,50 rmb 作为惩罚。。。
网瘫祸首:交换机网口短接,虚拟机网口配置透明,arp代理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。