基本实用的linux命令

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 替换文本字符串命令:

         :s /vivian/sky/ 替换当前行第一个 vivian 为 sky  
        :s/vivian/sky/g 替换当前行所有 vivian 为 sky
  :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
   :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
  n 为数字,若 n 为 .,表示从当前行开始到最后一行

34,定位内存泄露,top + htop ;  mtrace 定位内存泄露;原理,hook  __malloc_hook 替换原生的 malloc和free函数。

35,查看进程虚拟内存 vm_area_struct 区域信息, pmap -p PID  或者  cat  /proc/PID/maps
后一个命令的各列含义依次为: 
开始-结束   访问权限   偏移   主设备号:次设备号   inode节点号   映射的文件名称  

36,添加用户 useradd jsf  及密码 passwd jsf ;   添加samba用户 samba -a jsf
37,误删除了 /lib/x86_64-linux-gnu/libc.so.6 解决办法:
首先不要退出远程链接,因为一旦退出了在启动就需要libc库了
LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.15.so
ln -s /lib/x86_64-linux-gnu/libc-2.15.so /lib/x86_64-linux-gnu/libc.so.6
原理,《CS.APP》里面有解释;库打桩 机制:编译打桩,链接打桩,运行打桩;这里是运行打桩

 开发过程中常用的目前这些,后续随着工作内容的丰富继续补充...

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代理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux 命令常用大全 PDF 是一个包含了各种 Linux 操作系统命令的指南。这个 PDF 文件提供了一个集中的资源,方便用户学习和熟悉 Linux命令行操作。 在 Linux 中,命令行是一种非常强大和灵活的工具,通过命令行我们可以执行各种系统管理任务、文件操作、网络配置、软件安装等等。学习和掌握这些命令对于 Linux 系统管理者、开发者和常规用户都是非常必要的。 这个 PDF 包含了丰富的内容,介绍了常见的 Linux 命令及其用法。它不仅仅列出了命令基本语法和参数,还提供了实例及解释,让用户更好地理解如何使用这些命令。 这个 PDF 可以帮助用户熟悉和理解诸如文件和目录管理、文本编辑、进程管理、软件包管理、网络配置、权限管理等方面的命令。它涵盖了常见的命令,如cd、ls、cp、mv、rm、nano、vi、ps、kill、yum、apt等等。 除了这些基本命令,该 PDF 还介绍了一些高级和更复杂的命令,如grep、sed、awk、find等。 这些命令可以帮助用户在操作系统中进行更高级的任务和数据处理。 总的来说,Linux 命令常用大全 PDF 是一个非常有用的资源,可以帮助用户学习和掌握 Linux 命令行操作。无论是初学者还是有经验的用户,都可以从中受益,并提高他们在 Linux 环境下的工作效率。 ### 回答2: Linux命令常用大全PDF是一份收录了Linux操作系统中常用命令的参考手册,旨在帮助用户快速查询和学习Linux命令的使用。 该PDF文件中包含了许多常用的Linux命令,如文件管理命令(如ls、cd、cp、mv、rm等),目录操作命令(如mkdir、rmdir、pwd等),文本操作命令(如cat、grep、sed、awk等),权限管理命令(如chmod、chown、chgrp等),进程管理命令(如ps、kill、top等),网络管理命令(如ifconfig、ping、ssh等)等等。 对于Linux初学者来说,这份PDF文件非常实用,可以作为学习和掌握Linux命令的参考资料。它可以帮助用户了解每个命令基本用法和常见选项,以及实际应用场景。 对于有一定Linux使用经验的用户,这份PDF文件也是一份不错的备忘录和速查手册,可以帮助他们快速回顾和查找某个命令的用法,提高工作效率。 总而言之,Linux命令常用大全PDF是一份非常有用的资料,无论是初学者还是有经验的用户,都可以从中受益。它为用户提供了方便快捷的查询和学习Linux命令的手段,帮助他们更好地理解和应用Linux操作系统。 ### 回答3: "Linux命令常用大全"是一本涵盖了Linux系统中常用命令的PDF文档。在这本书中,你可以找到关于Linux命令的详细说明,以及如何使用这些命令来完成各种任务。 该PDF文档包含了众多常用的Linux命令,包括文件管理、目录导航、进程管理、软件安装与卸载、网络管理等方面的命令。每个命令都有对应的语法、选项和示例,方便用户学习和参考。 在这本PDF文档中,你可以学习到如何使用基本的文件和目录操作命令,比如创建、复制、删除文件和目录。你还可以学习到如何使用grep命令进行文本搜索,如何使用awk和sed命令进行文本处理,如何使用ps和top命令查看系统进程状态等等。 此外,该PDF文档还提供了一些高级命令的使用方法,比如使用rsync命令进行文件同步,使用scp命令进行远程文件传输,使用iptables命令进行网络配置等等。 总之,"Linux命令常用大全"这本PDF文档是一本非常有用的参考资料,对于学习和使用Linux系统的人来说是必不可少的工具。通过学习和掌握其中的命令,你可以更加高效地管理和操作Linux系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值