面试时,后端程序员经常会被问到常用的Linux命令,有些人可能会不解,我是后端程序员,为什么要掌握Linux命令,我只在Windows和Mac上开发不好吗。所以我们要先明确一点:后端程序员为什么要会用Linux?
0、为什么要会用Linux
Linux是什么
Linux 是世界上最流行的服务器操作系统,许多大型网站和移动应用都使用 Linux 来提供后端服务。
Linux的特点
- 完全免费。任何人都可以从网络上下载Linux的源代码,并可以根据自己的需求进行定制化的开发,而且没有版权限制。
- 多用户、多任务。多用户是指不同用户所具有的权限不同。不同的用户在这台服务器上进行的工作不一样。多任务指的是计算机能同时运行多个程序,且程序之间彼此独立,Linux内核负责调度每个进程。
- 安全可靠,性能稳定。果拿Windows和Linux作对比,我并不认为Linux相对于Windows有更好的稳定性,事实上,Linux因为它的运维人员的专业性,会显得系统的稳定性更好。当然对于专业性人员来说,Linux这个使开发人员能完全掌控的操作系统更加稳定可靠。
- 模块化。Linux的内核设计采用模块化思想。模块机制使得用户可以根据实际需要,在内核中插入或移走模块,这使得内核可以被高度的剪裁定制,以方便在不同的场景下使用。
在我个人看来,Linux对于开发人员最大的优势是:**开源、自有、定制化。**开发人员可以完全的掌控Linux,通过Linux严格的权限控制,也保持了系统的安全性。
后端程序员需要掌握什么?
- 了解Linux的一些基本概念。
- 熟悉Linux基本命令,文件操作命令,目录操作命令,压缩解压,进程管理。
- 了解shell编程,能编写简单的shell脚本。
- 熟悉vim的各种简单操作。
1、Linux常用命令
1. ls 命令
用于显示目录下的内容
# 常用
ls -l # 显示文件的详细信息
ls -a # 显示当前目录中的所有文件和目录,包括隐藏文件
ls -lh # 以人类可读的方式显示当前目录中的文件和目录大小
ls -l /etc/passwd # 显示/etc/passwd文件的详细信息
重点参数说明:
- -a 显示所有文件及目录(包括隐藏文件)
- -l 显示文件的详细信息,包括权限、所有者、大小、创建时间等。
- -t 将按照修改时间排序,最新的文件在最前面。
2. pwd 命令
用于显示工作目录
pwd
/usr/local/nacos
3. 对目录的操作
mkdir [-p] dirName # 新建目录
rmdir [-p] dirName # 删除目录
# 创建多级目录,举例 mkdir -p ./test/java
mkdir -p 多级目录
4. cd 命令
用于切换路径
cd 目录名 # 切换目录
cd .. # 切换到上一级目录
cd / # 切换至根目录
cd ~ # 切换至用户目录
5. touch命令
新建文件
touch file #创建一个名为“file”的新的空白文件
6. rm命令
删除文件和目录
rm test.txt # 删除文件test.txt
rm -r test # 删除目录test
rm -rf test/ # 不管该目录下是否有子目录或文件,都直接删除
rm -rf * # 强制删除目录下的所有内容
重点参数说明:
- -i 删除前逐一确认。
- -f 强制删除,无需逐一确认。
- -r 从当前目录递归删除。
7. cp 命令
用于复制文件
cp file.txt /usr/local/ # 将文件 file.txt 复制到目录/usr/local/中
cp –r test/ /usr/local/test # 将当前目录test/下的所有文件复制到新目录est 下
8. man命令
用于查看各种命令的手册。
man cat # 查看cat命令手册
b # 后一页
f # 前一页
q # 退出
/word # 搜索 word 字符串
9. mv命令
用于为文件或目录改名,或者移动文件或目录。
mv test newTest # 将test改名为newTest
mv test/ local/ # 将test目录移到local中,若不存在local目录,则为test改名
mv /usr/local/* . # 将/usr/local下的所有文件和目录移到当前目录下
10. grep命令
用于查找文件里符合条件的字符串或正则表达式。
grep hello test.txt # 从test.txt中查找hello字符串,并打印匹配的行
grep -r hello dir/ # 从目录里查找
重点参数说明:
- -r 当指定要查找的是目录而非文件时,必须使用这项参数。
- -n 标示出行号。
- -i 忽略大小写。
11. find 命令
用于在指定目录下查找文件和目录。
find [path] [expression]
# path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
# expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
实例
find . -name file.txt # 查找当前目录下名为 file.txt 的文件
find . -name "*.txt" # 将当前目录及其子目录下所有文件后缀为.txt的文件列出来
12. 压缩解压
tar命令:Linux 中最常用的备份工具,只负责打包文件,不负责压缩。tar 可将一系列文件打包成一个大文件,也可以将一个已打包的大文件恢复成一系列文件。
tar -cvf test.tar a b c # 将a,b,c三个文件打包为test.tar
tar -xcv test.tar # 解包 test.tar
以上是打包解包命令,并没有压缩解压
-z 选项即可实现压缩解压功能
tar -zcvf test.tar.gz a b c # 打包压缩文件至当前目录
tar -zxvf test.tar.gz # 解包解压文件至当前目录
tar -zxvf test.tar.gz -C usr/local/ # 解包解压文件至指定目录
重点参数说明:
- -c 建立新的备份文件。
- -v 显示指令执行过程。
- -C 切换到指定的目录。
- -f 指定文件。
- -x 从备份文件中还原文件。
- -z 通过gzip指令处理备份文件。
13. 安装软件
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令
sudo apt update # 查看可更新的包
sudo apt upgrade # 升级安装包
sudo apt install # 安装软件
sudo apt remove # 卸载软件
apt search # 查找包
14. 进程相关
ps命令用于显示当前进程的状态,类似于 windows 的任务管理器。
ps -ef | grep java # 查找指定进程
重点参数:
- -e 显示所有进程,等同于-A参数。
- -f 显示进程的详细信息,包括进程的 PID、PPID、CPU 使用率、内存使用量等。
top 是一个在 Linux 上的实时系统监控工具。
kill 命令用于删除执行中的程序或工作。
最常用的信号是:
- 1 :重新加载进程。
- 9 :杀死一个进程。
- 15:正常停止一个进程。
kill -9 PID # 杀死PID进程
15. 网络相关
ifconfig命令用于显示机器上所有网卡的详细网络信息,包括ip地址,掩码,网卡接口名称,网关等。
ifconfig # 可用于查看ip地址
ip 命令比ifconfig命令更加强大
ip addr show # 用来显示IP地址和网卡
netstat 命令用于显示网络状态。
netstat -a # 显示详细的网络状况
常用参数:
- -p 程序名称
- -n 直接使用ip地址
- -l 显示监听中的socket
- -t 采用tcp协议
- -u 采用udp协议
2、小结
Linux命令还有很多,不过作为后端开发工程师,掌握这么多常用命令已经足够了。同时,对vim的常用操作也应该有所了解,便于操作文件。还有对shell语法和编写应该有一定的涉猎,可以让我们读懂脚本以及自己编写脚本。