开发常用Linux命令

Linux是开发必备的操作系统,无论是服务器部署、代码调试,还是日常文件管理,都离不开常用命令。本文聚焦开发高频场景,筛选最实用的命令,每个命令搭配清晰说明和示例,适合日常查阅、复习。

一、基础操作

核心:掌握「终端切换、目录操作、系统信息查看」,覆盖开发中最基础的终端使用场景,命令简洁,无需复杂参数。

1.1 终端基础与系统信息

1. 切换终端(远程连接常用)

远程连接服务器后,快速切换终端或退出连接,避免误操作。

bash 复制代码
# 退出当前终端/远程连接(常用,避免直接关闭窗口)
exit

# 切换到root用户(获取最高权限,执行敏感操作时使用)
su root
# 或使用sudo临时获取root权限(推荐,更安全)
sudo 具体命令(如:sudo rm -rf 文件名)

2. 查看系统信息(排查环境问题必备)

快速查看系统版本、CPU、内存、磁盘信息,适配环境部署、问题排查场景。

bash 复制代码
# 查看Linux系统版本(centos/ubuntu通用)
cat /etc/os-release

# 查看CPU信息(核心数、型号,部署服务时参考)
lscpu

# 查看内存使用情况(重点看used、free,避免内存不足)
free -h  # -h:以人类易读的格式显示(如GB、MB)

# 查看磁盘使用情况(查看分区、剩余空间,避免磁盘满)
df -h

# 查看当前系统时间(同步日志、定时任务时使用)
date

1.2 目录操作

开发中频繁切换目录、查看目录内容,命令简洁,牢记即可快速上手。

1. 切换目录(cd)

bash 复制代码
# 切换到指定目录(绝对路径,从根目录开始)
cd /home/xxx/project  # 示例:切换到项目目录

# 切换到当前用户的家目录(常用,快速回到默认目录)
cd ~

# 切换到上一级目录(常用,返回上一层)
cd ..

# 切换到上一次所在的目录(快速回退)
cd -

2. 查看目录内容(ls)

bash 复制代码
# 查看当前目录下的所有文件/目录(不显示隐藏文件)
ls

# 查看当前目录下的所有文件/目录(包括隐藏文件,常用)
ls -a

# 查看详细信息(权限、大小、修改时间,排查文件问题时使用)
ls -l  # 可简写为 ll(大部分Linux系统支持)

# 按文件大小排序查看(从大到小,排查大文件)
ls -lhS  # -h:易读格式,S:按大小排序

3. 创建/删除目录(mkdir/rmdir)

bash 复制代码
# 创建单个目录(如:创建项目目录)
mkdir project

# 递归创建多级目录(常用,避免逐个创建)
mkdir -p /home/xxx/project/src  # -p:递归创建父目录

# 删除空目录(仅能删除空目录,实用性较低)
rmdir 目录名

# 强制删除非空目录(常用,谨慎使用,删除后无法恢复)
rm -rf 目录名  # -r:递归删除,-f:强制删除,不提示

二、文件管理(开发核心场景)

开发中频繁操作文件:创建、编辑、查看、复制、移动、删除,这部分是重点,必须熟练掌握,避免误删文件。

2.1 文件创建与编辑

1. 创建文件(touch/vim)

bash 复制代码
# 创建空文件(常用,快速创建配置文件、日志文件)
touch 文件名(如:touch config.js、touch app.log)

# 使用vim编辑文件(创建并编辑,开发中最常用)
vim 文件名(如:vim index.js)
# vim操作补充(新手必看):
# 1. 进入vim后,按 i 进入编辑模式(可输入内容)
# 2. 编辑完成后,按 Esc 退出编辑模式
# 3. 输入 :wq 保存并退出(w:保存,q:退出)
# 4. 输入 :q! 强制退出(不保存,误操作时使用)

2.2 文件查看(cat/less/more)

查看文件内容,适配不同场景:小文件直接查看,大文件(如日志)分页查看。

bash 复制代码
# 查看小文件内容(一次性显示所有内容,常用)
cat 文件名(如:cat config.js)

# 查看大文件内容(分页查看,支持上下滚动,常用)
less 文件名(如:less app.log)
# less操作补充:
# 1. 上下箭头:滚动查看内容
# 2. /关键词:搜索文件中的关键词(如:/error 搜索错误日志)
# 3. q:退出查看

# 分页查看文件(逐页显示,按空格翻页)
more 文件名

2.3 文件复制与移动(cp/mv)

bash 复制代码
# 复制文件(常用,备份配置文件、复制代码文件)
cp 源文件路径 目标路径(如:cp config.js /home/xxx/backup)

# 复制目录(递归复制,备份项目目录时使用)
cp -r 源目录路径 目标路径(如:cp -r project /home/xxx/backup)

# 移动文件/目录(相当于"剪切",常用)
mv 源路径 目标路径(如:mv index.js src/、mv project /home/xxx/newdir)

# 重命名文件/目录(本质是移动操作,常用)
mv 旧文件名 新文件名(如:mv app.log app_old.log)

2.4 文件删除(rm)

谨慎使用,删除后无法恢复,尤其是root用户下的删除操作。

bash 复制代码
# 删除单个文件(常用,删除无用文件)
rm 文件名(如:rm temp.txt)

# 强制删除文件(不提示,避免删除时反复确认)
rm -f 文件名(如:rm -f temp.txt)

# 强制删除目录及目录下所有内容(谨慎使用!)
rm -rf 目录名(如:rm -rf tempdir)

2.5 搜索文件/内容(find/grep)

开发中频繁搜索文件位置、搜索文件中的关键词(如日志中的错误信息)。

bash 复制代码
# 搜索文件(按文件名搜索,常用)
find 搜索路径 -name "文件名"(如:find /home -name "config.js")
# 模糊搜索(如:搜索所有.js后缀的文件)
find /home -name "*.js"

# 搜索文件中的关键词(常用,排查日志、配置文件)
grep "关键词" 文件名(如:grep "error" app.log)
# 忽略大小写搜索
grep -i "关键词" 文件名(如:grep -i "error" app.log)
# 显示关键词所在的行号(便于定位)
grep -n "关键词" 文件名(如:grep -n "error" app.log)
# 递归搜索目录下所有文件中的关键词(如:搜索项目中所有包含"user"的文件)
grep -r "关键词" 目录名(如:grep -r "user" project/)

三、进程管理(部署服务必备)

开发中部署服务(如Java、Node.js服务)后,需查看进程、杀死进程、查看端口占用,避免服务冲突。

3.1 查看进程(ps/top)

bash 复制代码
# 查看当前所有进程(详细信息,常用)
ps -ef

# 查看指定进程(按进程名搜索,如:查看node进程)
ps -ef | grep "node"  # | 管道符,将前一个命令的输出作为后一个命令的输入

# 实时查看进程占用(CPU、内存占用,排查服务卡顿)
top  # 实时刷新,按q退出
# top操作补充:按P(大写)按CPU占用排序,按M按内存占用排序

3.2 杀死进程(kill)

服务异常、端口占用时,需杀死对应进程,重新启动服务。

bash 复制代码
# 先查看进程ID(PID),再杀死进程(常用,精准杀死)
ps -ef | grep "node"  # 找到进程的PID(第二列)
kill 进程ID(如:kill 12345)

# 强制杀死进程(进程无法正常退出时使用,谨慎)
kill -9 进程ID(如:kill -9 12345)

# 批量杀死指定进程(如:杀死所有node进程)
ps -ef | grep "node" | grep -v grep | awk '{print $2}' | xargs kill -9

3.3 查看端口占用(netstat/ss)

部署服务时,常遇到端口被占用的问题,需查看端口占用进程并杀死。

bash 复制代码
# 查看所有端口占用情况(常用)
netstat -tulnp  # -t:TCP,-u:UDP,-l:监听中,-n:显示端口号,-p:显示进程名

# 查看指定端口占用情况(如:查看8080端口是否被占用)
netstat -tulnp | grep 8080

# 简化查看指定端口占用(部分系统支持,更简洁)
ss -tulnp | grep 8080

四、权限控制

Linux文件/目录有严格的权限控制,开发中需设置文件权限(如可执行、可读可写),避免权限不足导致服务无法启动。

bash 复制代码
# 查看文件/目录权限(常用,了解当前权限)
ls -l 文件名/目录名(如:ls -l config.js)
# 权限说明(如:rwxr-xr--):
# 第一个rwx:文件所有者权限(r:读,w:写,x:执行)
# 第二个r-x:同组用户权限
# 第三个r--:其他用户权限

# 修改文件/目录权限(常用,chmod + 权限组合)
chmod 755 文件名(如:chmod 755 app.sh)  # 所有者可读可写可执行,其他用户可读可执行
chmod 644 文件名(如:chmod 644 config.js)# 所有者可读可写,其他用户只读

# 简化修改权限(常用)
chmod +x 文件名(如:chmod +x app.sh)  # 给文件添加可执行权限(部署脚本时常用)
chmod -x 文件名(如:chmod -x app.sh)  # 取消文件可执行权限
chmod +w 文件名(如:chmod +w config.js)# 给文件添加写权限

# 修改文件/目录所有者(常用,解决权限不足问题)
chown 用户名:用户组 文件名/目录名(如:chown root:root project/)

五、远程操作

开发中常远程连接服务器,上传/下载文件、远程执行命令,核心掌握SSH连接、SCP上传下载。

5.1 远程连接服务器(SSH)

bash 复制代码
# 远程连接服务器(常用,默认端口22)
ssh 用户名@服务器IP(如:ssh root@192.168.1.100)

# 连接指定端口的服务器(端口非22时使用)
ssh -p 端口号 用户名@服务器IP(如:ssh -p 2222 root@192.168.1.100)

# 免密登录(可选,提升效率,避免每次输入密码)
# 1. 本地生成密钥对(仅首次执行)
ssh-keygen -t rsa  # 一路回车,生成密钥对(默认在 ~/.ssh 目录下)
# 2. 将公钥上传到服务器
ssh-copy-id 用户名@服务器IP(如:ssh-copy-id root@192.168.1.100)
# 后续连接无需输入密码

5.2 上传/下载文件(SCP)

本地与服务器之间传输文件(如:上传项目代码、下载日志文件)。

bash 复制代码
# 本地文件上传到服务器(常用)
scp 本地文件路径 用户名@服务器IP:服务器目标路径(如:scp project.zip root@192.168.1.100:/home/xxx/)

# 本地目录上传到服务器(递归上传)
scp -r 本地目录路径 用户名@服务器IP:服务器目标路径(如:scp -r project root@192.168.1.100:/home/xxx/)

# 服务器文件下载到本地(常用)
scp 用户名@服务器IP:服务器文件路径 本地目标路径(如:scp root@192.168.1.100:/home/xxx/app.log ~/backup/)

# 服务器目录下载到本地(递归下载)
scp -r 用户名@服务器IP:服务器目录路径 本地目标路径(如:scp -r root@192.168.1.100:/home/xxx/project ~/backup/)

六、进阶技巧(提升开发效率)

这些技巧能节省日常操作时间,避免重复输入,适合熟练基础命令后使用。

bash 复制代码
# 1. 命令历史(查看之前执行过的命令,避免重复输入)
history  # 查看所有历史命令
!命令序号  # 执行历史中的指定命令(如:!100 执行第100条命令)
!关键词  # 执行最近一次包含该关键词的命令(如:!ssh 执行最近一次ssh命令)

# 2. 命令别名(给常用命令设置别名,简化输入)
alias ll='ls -l'  # 给ls -l设置别名ll,后续输入ll即可执行ls -l
alias rm='rm -i'  # 给rm设置别名,删除时提示(避免误删)
# 注意:临时别名仅当前终端有效,永久生效需编辑 ~/.bashrc 文件,添加别名后执行 source ~/.bashrc

# 3. 管道符(|):将前一个命令的输出作为后一个命令的输入(常用)
ps -ef | grep "node"  # 查看node进程
ls -l | grep ".js"    # 查看当前目录下所有.js文件

# 4. 重定向(> / >>):将命令输出写入文件
echo "test" > test.txt  # 覆盖写入文件(原有内容会被删除)
echo "test2" >> test.txt # 追加写入文件(原有内容保留)
cat app.log > app_bak.log # 将日志文件备份

七、常见问题与避坑指南

问题1:权限不足(Permission denied)

解决:使用sudo获取root权限(如:sudo rm -rf 文件名),或修改文件/目录权限(chmod/chown)。

问题2:端口被占用,服务启动失败

解决:先查看端口占用进程(netstat -tulnp | grep 端口号),再杀死对应进程(kill -9 进程ID),重新启动服务。

问题3:误删文件/目录,如何恢复?

解决:Linux默认没有回收站,删除后无法直接恢复,需借助第三方工具(如extundelete),但成功率有限。建议删除前备份,或使用rm -i 命令(删除时提示)。

问题4:远程连接失败(Connection refused)

解决:检查服务器IP是否正确、端口是否开放(如22端口)、服务器是否正常运行,或重新配置SSH服务。

避坑重点

  • root用户下慎用rm -rf 命令,尤其是 rm -rf /(会删除系统所有文件,导致系统崩溃);

  • 修改文件/目录权限时,避免设置过高权限(如777,所有用户均可读写执行,存在安全风险);

  • 远程上传/下载文件时,注意路径是否正确,避免上传到错误目录;

  • 执行批量操作(如批量杀死进程)时,先确认命令无误,避免误杀重要进程。

八、总结

开发日常使用Linux,核心掌握「基础操作+文件管理+进程管理+远程操作」,80%的场景都能覆盖。本文所有命令均为实操高频款,可直接复制使用,无需记忆复杂参数,重点是理解场景、规范操作,避免误操作导致的损失。

相关推荐
jfqqqqq1 小时前
记一次ubuntu 22.04安装旧版 MongoDB 4.2
linux·mongodb·ubuntu
kyle~1 小时前
Linux时间系统1 --- 正确使用时间
java·linux·服务器
Java编程爱好者1 小时前
ThreadLocal 用了 WeakReference,为什么还会内存泄漏
后端
KK溜了溜了1 小时前
Prometheus配置监控项和告警规则
linux·grafana·prometheus
SoveTingღ1 小时前
【问题解析】Socket已经关闭了,但是端口还处于listening状态?
linux·服务器·c++·qt·socket
无限进步_1 小时前
【Linux】进程基础:task_struct、fork 与查看进程
linux·运维·服务器
Cosolar1 小时前
大模型应用开发面试 • 每日三题|Day 002|记忆(Memory)、工具使用(Tool Use)和微调(Fine-tuning)
后端·python·llm
神奇小汤圆1 小时前
深入源码:Hermes Agent 如何实现 "Self-Improving"
后端
小夏子_riotous1 小时前
Kubernetes学习路径——3. Kubernetes 1.25 高可用集群部署实战:从 Docker 到 Calico 全链路详解
linux·运维·学习·docker·容器·kubernetes·centos