### shell常用命令总结
在IT行业的日常开发与运维工作中,熟练掌握shell命令是提升效率、解决问题的关键技能之一。本文将基于提供的文件信息,深入解析一系列常用的shell命令及其应用场景,旨在帮助读者更好地理解和运用这些工具。
#### 1. 文件管理与查询
- **ls -lt | head -30**: 此命令结合了`ls`(列出目录内容)和`head`(显示文件或文本的前N行),用于列出当前目录下最近修改的前30个文件或目录的详细信息,包括权限、所有者、大小、修改时间等。
- **tail -f servletlog.2010-01-21 | grep 'servletlog.2010-01-21'**: `tail -f`用于实时监控文件的末尾变化,而`grep`则用于搜索特定模式或字符串。这里是在实时查看`servletlog.2010-01-21`日志文件中包含`servletlog.2010-01-21`的行。
- **cat MqqValentineDay2010ServiceAccessLog.log.2010-02-01 | wc -l**: `cat`命令用于显示文件内容,而`wc -l`用于统计行数。此命令用于计算`MqqValentineDay2010ServiceAccessLog.log.2010-02-01`文件中的行数,常用于日志分析。
#### 2. 网络状态与服务管理
- **netstat -an | grep 44448**: `netstat`命令用于显示网络连接、路由表等信息,`-an`参数表示显示所有连接和监听端口,`grep`用于筛选出端口号为44448的连接。
- **netstat -nl | grep 44448**: 类似于上一条,但`-nl`参数只显示监听端口,适用于检查特定端口是否正在被占用。
- **/sbin/ifconfig**: 显示或配置网络接口的命令,可用于查看当前机器的IP地址、子网掩码等信息。
#### 3. 数据传输与同步
- **rsync TestHelloWorldClient 172.27.38.94::app/ivanchen/**: `rsync`是一个快速且功能强大的数据同步工具,此命令用于将本地目录`TestHelloWorldClient`同步到远程服务器`172.27.38.94`的`app/ivanchen/`目录下。
- **scp -P36000 172.27.31.32:/usr/local/support/ValentineDay2010/* ./**: `scp`命令用于在两台主机间安全地复制文件,`-P`参数指定非标准SSH端口。此命令用于从远程服务器下载目录下的所有文件到本地。
#### 4. 历史记录与搜索
- **history | grep java**: 查看历史命令中包含“java”的执行记录,这对于追踪已执行的Java相关操作非常有用。
- **awk '{print $4}' MqqValentineDay2010UserAccessLog.log.2010-02-25**: 使用`awk`命令从日志文件中提取第四列数据,常用于数据分析或筛选特定字段。
#### 5. 进程与网络监控
- **sudo /usr/sbin/tcpdump -i eth1 tcp and host 172.24.36.190 and port 19000**: `tcpdump`用于捕获网络包,此命令用于监听并显示通过`eth1`接口,目标为`172.24.36.190`,端口为19000的所有TCP通信。
- **sudo /usr/sbin/tcpdump -i any -X -n -s0 udp port 19000**: 监听所有接口上的UDP通信,并显示详细的数据包信息。
#### 6. 存储与磁盘空间
- **df -h**: 显示磁盘分区的使用情况,`-h`参数表示以更易读的格式(如GB、MB)显示。
- **du -sh kjava_ad/**: 统计并显示`kjava_ad`目录的总大小,`-s`表示汇总,`-h`表示人性化显示。
以上命令仅是shell强大功能的一小部分,它们在系统管理和软件开发中扮演着不可或缺的角色。掌握并灵活运用这些命令,能够显著提高工作效率,解决复杂问题。