马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、先说清楚:学 Linux 命令是为了什么
Linux 本身提供了一些 API,供程序调用来完成更复杂的编程任务(比如文件操作、多线程编程、socket 编程等)。但由于 Java 跨平台特性的关系,这部分能力已经被 Java 自身封装好了(流对象、Thread 对象、Socket 对象等),所以走 Java 路线的人不必再去啃系统编程那一层。
真正绕不开的是另一件事:部署 JavaWeb 项目。自己写的 web 程序,要让别的用户能访问,就必须发布到服务器上。这就得会敲命令、会用终端。
终端软件是一类工具软件,可以和远程主机建立网络连接,从而对主机进行操作。下面讲解中用的是 Xshell。
二、高频命令第一组:看与走
1. ls
语法:ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件;对于文件,将列出文件名以及其他信息。
| 选项 | 作用 |
-a | 列出目录下的全部文件,包括以 . 开头的隐含文件 |
-d | 将目录像文件一样显示,而不是显示其下的文件(如 ls -d 指定目录) |
-k | 以 k 字节的形式表示文件大小 |
-l | 列出文件的详细信息 |
-r | 对目录反向排序 |
-t | 以时间排序 |
-R | 列出全部子目录下的文件(递归) |
ls -l # 长格式,日常用得最多
ls -al # 长格式 + 含隐藏文件
ls -lrt # 按时间倒序,看最近被改过的文件
2. pwd
语法:pwd 功能:显示用户当前所在的目录。
[root@host ~]$ pwd
/root
3. cd
Linux 系统中,磁盘上的文件和目录被组织成一棵目录树,每个节点都是目录或文件。语法:cd 目录名,功能是改变工作目录。
cd .. # 返回上级目录
cd ~ # 进入用户家目录(或直接敲 cd)
cd - # 返回最近访问过的目录
cd /etc/nginx # 绝对路径进去
cd - 和 cd ~ 是两个完全不同的键位,新手最常搞混。
4. touch
语法:touch [选项]… 文件… 功能:touch 命令参数可更改文档或目录的日期时间(包括存取时间和更改时间),或者新建一个不存在的文件。
touch test.txt
5. cat
语法:cat [选项] [文件] 功能:查看目标文件的内容。
cat test.txt
cat -n test.txt # 对输出的全部行编号(看配置文件时很实用)
cat a.txt b.txt # 连着输出两个文件
6. mkdir
语法:mkdir [选项] dirname… 功能:在当前目录下创建一个名为 dirname 的目录。
mkdir test # 新建一级目录
mkdir -p test/test1 # 递归建立多个目录(-p、--parents)
-p 是"路径中某些目录尚不存在就自动建好"的意思,一次可以建立多级目录——这是它和裸 mkdir 的唯一区别,但也是最常用的一处。
7. rm
语法:rm [-f -i -r -v] [dirName/dir] 功能:删除文件或目录。
| 选项 | 作用 |
-f | 即使文件属性为只读(写保护),亦直接删除 |
-i | 删除前逐一询问确认 |
-r | 删除目录及其下所有文件 |
rm test.txt
rm -rf test/ # 删目录,无提示(危险组合,务必确认路径)
rm -rf 没有回收站,写错路径就直接没了。生产上建议养成 rm -i 的习惯,或至少对重要目录先 tar 一份。
三、高频命令第二组:搬与看
1. cp
语法:cp [选项] 源文件或目录 目标文件或目录 功能:复制文件或目录。
说明:cp 指令用于复制文件或目录;若同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的全部文件或目录复制到此目录中;若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息——这是 cp 报错最常见的场景。
| 选项 | 作用 |
-f / --force | 强行复制文件或目录,不管目标是否已存在 |
-i / --interactive | 覆盖文件之前先询问用户 |
-r | 递归处理,将指定目录下的文件与子目录一并处理 |
-R / --recursive | 递归处理,同上 |
cp test1.txt test2.txt
cp -r dir1 dir2
2. mv
语法:mv [选项] 源文件或目录 目标文件或目录。功能有两条路径:
- 当第二个参数是文件时:
mv 完成文件重命名,此时源文件只能有一个,它把所给的源文件或目录重命名成给定的目标文件名。
- 当第二个参数是已存在的目录名称时:源文件或目录参数可以有多个,
mv 把各参数指定的源文件均移至目的目录中。
判断"这是重命名还是移动",就看第二个参数是文件还是目录——这一条搞定 90% 的疑问。
mv test1.txt test2.txt # 第二个参数是文件 → 重命名
mv test1.txt /tmp/ # 第二个参数是目录 → 移动
mv dir1 dir2 # 目录已存在 → 移到里面;不存在 → 改名
常用选项:-f 强制覆盖不询问;-i 目标已存在时先问。
3. tail
语法:tail [必要参数] [选择参数] [文件] 功能:显示指定文件的末尾内容,不指定文件时作为输入信息处理。常用于查看日志 文件。
tail -10 test1.txt # 显示末尾 10 行(-n 指定行数)
tail -f access.log # 循环读取,实时跟踪(看日志 神器)
tail -f 是排查线上问题的第一工具,配 grep 更好使:tail -f app.log | grep ERROR。
4. vim
vim 是一个著名的文本编辑器,相当于 Windows 的记事本,只不过功能强大一些。
- 创建/打开文件:
vim 文件名
- 进入插入模式:vim 打开文件后默认是普通模式——普通模式下键盘的按键表示特殊功能的快捷键(比如按下
j 不是输入字母 j,而是表示光标往下移动一行)。要进入插入模式才能做文本编辑,使用 i 键(左下角提示 --INSERT--)。
- 保存:插入模式下不能保存文件,先按
Esc 回到普通模式;在普通模式下输入 :w 回车即可保存。
- 退出:文件未修改,输入
:q 回车即可退出;文件修改并保存了,用 :wq 同时执行保存和退出;文件修改但不希望保存,用 :q! 强制退出。
一句话:Esc 回普通模式,:w 存,:q 退,:wq 存并退,:q! 不保存强退。
四、运维三件套:grep / ps / netstat
1. grep
语法:grep [参数]… [文件]… 功能:查找文件中是否包含指定字符串,并显示对应的行。
| 选项 | 作用 |
-n | 显示行号 |
-w | 全字匹配,要求整个单词完全相同的才能匹配,而不仅仅是一个单词的一部分 |
-r | 递归查找,可以搜索多级目录下的所有文件 |
--color | 高亮查找到的结果 |
--include | 指定查找某些文件 |
--exclude | 指定排除某些文件 |
grep "hello" Hello.java
grep -rn "Timeout" /opt/app --include="*.log"
2. ps
语法:ps [参数]… 功能:查看当前系统上运行的进程。
| 选项 | 作用 |
a | 显示一个终端的全部进程 |
| (无字母选项) | 以用户为主的格式来显示进程状况 |
x | 显示所有进程,不止是会话中的进程 |
e | 显示全部进程,包括系统守护进程 |
f | 显示完整格式输出 |
ps aux # 显示系统上所有的进程(最常用)
ps aux | grep "进程名"
ps aux | grep "进程id"
ps aux | grep java | grep -v grep # 找 java 进程,排除 grep 自身
看到陌生的进程先别急着 kill,用 ps -ef 看父进程(PPID)、用 lsof -p PID 看它开了哪些文件端口,确认是什么服务。
3. netstat
语法:netstat [参数]… 功能:查看系统上的网络状态。
| 选项 | 作用 |
-a | 显示全部正在或不在侦听的套接字 |
-n | 显示数字形式地址,而不是去解析主机、端口或用户名(快,且不因 DNS 卡住) |
-p | 显示套接字所属进程的 PID 和名称 |
netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"
"端口被谁占了"的标准答案就是 netstat -anp | grep 端口号,一眼看到 PID,再 ps -fp PID 看是什么。
五、一条速查卡片
| 分类 | 命令 | 一句话 |
| 浏览 | ls -al / pwd / cd | 看全(含隐藏)、看我在哪、去哪儿 |
| 建删 | touch / mkdir -p / rm -rf | 建文件、建多级目录、删(小心) |
| 读写 | cat -n / vim | 直接看、编辑(i 插入 / :wq 存退) |
| 搬移 | cp -r / mv | 复制、重命名或移动(看第二个参数是文件还是目录) |
日志 | tail -f / grep -n | 实时跟、全文搜 |
| 排查 | ps aux / netstat -anp | 看进程、看端口归属 |
六、上手顺序建议
- 先练熟"看与走":
ls -l、pwd、cd 三件套,能在服务器里自由导航。
- 再练编辑:只用
vim 的 i / Esc / :w / :wq / :q! 五个键,够改 80% 的配置。
- 然后补读写:
cat -n 配 tail -f,看日志、改配置。
- 最后上排查:
grep、ps、netstat 三个一起,能定位"端口谁占的、进程谁起的、日志哪有异常"。
小结
这一组命令的核心规律其实很简单:
- 看:
ls 带 -a(含隐藏)、-l(详情)、-R(递归);cat -n 看内容带行号。
- 走:
pwd 看位置,cd .. / cd ~ / cd - 三种跳转。
- 建删:
mkdir -p 建多级,rm -rf 删目录(无回收站,慎用)。
- 搬移:
cp -r 复制目录,mv 看第二个参数是文件(重命名)还是目录(移动)。
- 排障:
tail -f 跟日志、grep -n 搜文本、ps aux 看进程、netstat -anp 看端口归属。
把这几条练到不用想就能敲出来,日常运维就基本够用了。
(本文由 qidao123.com企服评测-应用市场 编辑提示整理:示例基于 GNU Coreutils 与 procps/net-tools 工具集,适用于 CentOS / Ubuntu / openEuler 等主流 Linux 发行版的运维入门。) |