Linux 常用命令速查手册(Java开发版)
1.文件与目录操作
| 命令 | 说明 | 常用示例 |
|---|---|---|
| ls | 列出目录内容 | ls -la (显示所有文件,包括隐藏文件,详细信息) |
| cd | 切换目录 | cd /path/to/dir, cd ... (返回上一级), cd ~ (回到家目录) |
| pwd | 显示当前工作目录 | pwd |
mkdir |
创建目录 | mkdir new_dir, mkdir -p dir1/dir2/dir3 (递归创建) |
| touch | 创建空文件或更新文件时间戳 | touch filename.txt |
| cp | 复制文件或目录 | cp file1.txt file2.txt, cp -r dir1 dir2 (递归复制目录) |
| mv | 移动或重命名文件/目录 | mv old.txt new.txt, mv file.txt /path/to/dest/ |
| rm | 删除文件或目录 | rm file.txt, rm -r dir (递归删除目录), rm -rf dir (慎用!) |
| cat | 查看文件内容 | cat filename.txt |
| more / less | 分页查看文件内容 | less filename.log (推荐,可上下翻页) |
| head | 查看文件开头部分内容 | head -20 filename.log (查看前20行) |
| tail | 查看文件末尾部分内容 | tail -100 filename.log (查看最后100行), tail -f filename.log (实时追踪日志!) |
2.文本处理
| 命令 | 说明 | 常用示例 |
|---|---|---|
| grep | 文本搜索 | grep "ERROR" application.log (搜索包含"ERROR"的行), grep -n "Exception" *.java (显示行号), grep -r "pattern" /path/to/search (递归搜索) |
| sed | 流编辑器,用于文本替换、删除等 | sed 's/old/new/g' file.txt (将文件中所有"old"替换为"new") |
| awk | 强大的文本分析和处理工具 | awk '{print $1}' file.txt (打印每行第一个字段) |
| sort | 对文本行进行排序 | sort filename.txt |
| uniq | 报告或移除重复的行 | sort file.txt | uniq (先排序再去重) |
| wc | 统计文件的行数、单词数、字符数 | wc -l filename.log (统计行数), wc -c filename.jar (统计字节数) |
3.系统信息与资源监控
| 命令 | 说明 | 常用示例 |
|---|---|---|
| top | 实时显示系统进程和资源使用情况 | top (按q退出) |
| htop | top的增强版,更友好 | htop (如果已安装) |
| free | 显示内存使用情况 | free -h (以人类可读的单位显示) |
| df | 显示磁盘空间使用情况 | df -h (以人类可读的单位显示) |
| du | 显示目录或文件的磁盘使用情况 | du -sh /path/to/dir (显示目录总大小), du -h --max-depth=1 /opt (查看/opt下各目录大小) |
| uname | 显示系统信息 | uname -a (显示所有信息) |
| ps | 显示当前进程状态 | ps aux (显示所有进程), ps -ef | grep java (查找Java进程) |
| netstat | 显示网络连接、路由表、接口统计等 | netstat -tuln (查看监听的端口), netstat -anp | grep :8080 (查看8080端口的连接) |
| ss | netstat的现代替代品,更快 | ss -tuln |
4.网络操作
| 命令 | 说明 | 常用示例 |
|---|---|---|
| ping | 测试网络连通性 | ping google.com |
| curl | 传输数据,常用于测试HTTP接口 | curl http://localhost:8080/health, curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com |
| wget | 从网络下载文件 | wget http://example.com/file.zip |
| scp | 安全地在本地和远程主机间复制文件 | scp localfile.txt user@remote:/path/to/dest/, scp user@remote:/path/to/file.txt ./ |
| ssh | 安全登录远程主机 | ssh username@hostname, ssh -p 2222 user@host (指定端口) |
5.进程管理
| 命令 | 说明 | 常用示例 |
|---|---|---|
| ps | 查看进程 | ps aux | grep java |
| kill | 终止进程 | kill PID, kill -9 PID (强制终止,慎用) |
| killall | 按进程名终止所有同名进程 | killall java |
| nohup | 使进程在退出终端后继续运行 | nohup java -jar myapp.jar & (后台运行,输出到nohup.out) |
| & | 将命令放到后台运行 | java -jar app.jar & |
| jobs | 查看当前终端的后台任务 | jobs |
| fg | 将后台任务调到前台 | fg %1 (恢复第一个后台任务) |
6.权限管理
| 命令 | 说明 | 常用示例 |
|---|---|---|
| chmod | 修改文件或目录的权限 | chmod 755 script.sh (rwxr-xr-x), chmod +x script.sh (添加执行权限) |
| chown | 修改文件或目录的所有者 | chown user:group filename |
| chgrp | 修改文件或目录的所属组 | chgrp group filename |
7.压缩与解压
| 命令 | 说明 | 常用示例 |
|---|---|---|
| tar | 打包和解包 | tar -cvf archive.tar dir/ (打包), tar -xvf archive.tar (解包), tar -czvf archive.tar.gz dir/ (打包并gzip压缩), tar -xzvf archive.tar.gz (解压gzip包) |
| gzip / gunzip | 压缩/解压文件 | gzip file.txt (生成file.txt.gz), gunzip file.txt.gz |
| zip / unzip | 压缩/解压zip文件 | zip -r archive.zip dir/, unzip archive.zip |
8.查找文件与内容
| 命令 | 说明 | 常用示例 |
|---|---|---|
| find | 在目录层次结构中搜索文件 | find /path -name "*.log" (按文件名查找), find . -type f -size +100M (查找大于100M的文件), find /opt -user appuser (查找属于appuser的文件) |
| locate | 快速查找文件(基于数据库) | locate filename (需先运行updatedb) |
| grep (再次强调) | 在文件中搜索文本 | grep -r "NullPointerException" /var/log/myapp/ |
9.用户与环境
| 命令 | 说明 | 常用示例 |
|---|---|---|
| whoami | 显示当前用户名 | whoami |
| who | 显示当前登录的用户 | who |
| env | 显示环境变量 | env | grep JAVA |
| echo $VAR | 显示特定环境变量的值 | echo JAVA_HOME, echo PATH |
| export | 设置环境变量(临时) | export MY_VAR=value |
10.实用技巧与组合命令
- 管道 |:将前一个命令的输出作为后一个命令的输入。
- 示例:ps aux | grep java | grep -v grep (查找Java进程,排除grep命令本身)
- 重定向 > 和 >>:
- 覆盖写入文件。java -jar app.jar > output.log
- 追加写入文件。echo "Error occurred" >> error.log
- 后台运行 &:java -jar myapp.jar > app.log 2>&1 &
- 命令替换:echo "Today is $(date)"
- 检查Java进程和端口:
- ps aux | grep java
- netstat -tuln | grep 8080
- lsof -i :8080
- 快速查看日志并过滤:
- tail -f application.log | grep "ERROR"
- 批量操作:
- for file in *.txt; do echo "Processing $file"; done