🔔前言
Linux作为一个高度成熟和强大的操作系统,拥有非常丰富的命令行工具,对于Java开发者来说,掌握一些常用的Linux命令可以大大提高工作效率,尤其是在服务器端开发时。
🔔Linux中一些常用的命令
🌵1.ls/cd/pwd 目录操作命令,用于查看和切换目录
1.1 ls
ls 列出当前目录的所有文件
ls -l: 列出文件的详细信息
ls -a: 列出当前目录的所有文件,包括隐藏文件
1.2 cd
cd /data/logs 切换到data/logs目录
cd ..: 切换到上一级目录
cd ~: 切换到用户主目录
1.3 pwd
pwd 显示当前目录的绝对路径
pwd -L: 显示逻辑路径,即符号链接所指向的实际路径(默认选项)
pwd -P: 显示物理路径,即目录树的实际路径,不追随任何符号链接
🌵2.mkdir/touch/rm/cp/mv 文件操作命令,用于创建、删除、复制和移动文件
2.1 mkdir
mkdir [目录名]: 创建新的目录
2.2 touch
touch [文件名]: 创建一个空文件
2.3 rm
rm [文件]: 删除指定的文件
rm -r [目录]: 递归删除指定的目录及其内容
2.4 cp
cp [源文件] [目标文件]: 复制文件 cp -r [源目录] [目标目录]: 递归复制目录
2.5 mv
mv [源文件] [目标文件]: 移动/重命名文件
🌵3.cat/less/head/tail - 查看文件内容的命令。less可以分页查看。
3.3 cat 查看文件内容
cat [文件]: 从第一行开始显示文件内容
3.4 less 分页查看文件内容
less [文件]: 分页方式查看文件内容
并可以通过以下方式浏览内容:
- 空格键 - 向下翻一页
- B键 - 向上翻一页
- G键 - 跳到文件末尾
- g键 - 跳到文件开头
- /字符串 - 在文档中向下搜索字符串
- n键 - 重复前一个搜索(与/或?)相关
- q键 - 退出
- u - 向前滚动半屏
- d - 向后滚动半屏
- y - 向前滚动一行
- b - 返回上一屏
3.5 head
head 文件名: 显示该文件中的前10行内容
head -n 20 文件名:显示该文件中的前20行内容
head主要参数:
-n 行数:指定查看前面多少行,默认为10 -c 字节数:按字节数查看文件开头 -q:隐藏文件名 -v:显示文件名
3.6 tail
tail 文件名: 显示该文件中的最后10行内容
tail -n 20 文件名:显示该文件中的最后20行内容
tail主要参数:
-n 行数:指定查看倒数多少行,默认为10
🌵4.grep 在文件内搜索匹配指定正则表达式或字符串的内容
grep [选项] '字符串' filename
grep 'error' /var/log/syslog // 在syslog日志文件中查找包含'error'的匹配行。
grep的常用选项包括:
- i:不区分大小写 -n:显示匹配行及行号 -C n:显示匹配行前后n行上下文 -v:显示不包含匹配文本的所有行 -w:整词匹配 -A n:显示匹配行后n行 -B n:显示匹配行前n行 -r:递归搜索目录中的文件
🌵5.find 强大的文件搜索命令
find [搜索路径] [选项]
find /home -name "*.txt" #在/home目录下查找所有.txt文件
find有很多实用的选项,常用的包括:-
-name:按文件名查找 -size:按文件大小查找 -type:按文件类型查找(如f表示普通文件) -atime/-mtime:按文件访问/修改时间查找 -user/-group:按文件属主/属组查找 -exec:对找到的文件执行指定命令 -delete:删除匹配到的文件
🌵6.tar 打包和压缩文件的命令
6.1将文件打包
tar -cvf test.tar file1 file2 #打包文件
tar -tvf test.tar #查看打包文件的内容
6.2将文件压缩
tar -zcvf test.tar.gz file1 file2 #压缩打包
tar -zxvf test.tar.gz #解压缩
6.3其他常用参数
-c:创建打包文件 -v:显示运行过程 -f:指定打包文件名 -z:gzip压缩/解压缩 -j:bzip2压缩/解压缩 -x:解包或解压缩 -t:查看打包文件内容
🌵7.vim/nano - Linux下的文本编辑器,用于修改配置文件
7.1 vim
vim 文件名
vim有三种工作模式:
- 普通模式:用于导航和命令输入,按Esc进入
- 编辑模式:用于文本编辑,按i进入
- 命令行模式:用于保存、退出等操作,按:进入
vim的一些基本使用技巧:
- i - 在光标处进入编辑(插入)模式
- h/j/k/l - 左下上右移动光标
- :w - 保存文件但不退出vim
- :wq - 保存文件并退出vim
- :q! - 不保存文件强制退出
- dd - 删除整行
- u - 撤销上一操作
- /文本 - 搜索文本
vim支持大量快捷键组合,可以大大提高文本编辑效率,常用的包括:
- ciw - 更改单词
- d2w - 删除2个单词
- y3j - 复制3行文字
-
缩进
7.2 nano
打开文件:nano 文件名 搜索:Ctrl+W,输入要搜索的词 定位行数:Ctrl+C显示光标位置 剪切文本:Ctrl+K 复制文本:Ctrl+6 粘贴文本:Ctrl+U 撤销上步操作:Alt+U 保存文件:Ctrl+O 退出nano:Ctrl+X
🌵8.ps/kill 查看和杀掉进程的命令
8.1 ps
ps: 显示出当前终端中运行的进程
ps aux: 查看所有进程,可以使用aux参数
ps命令常用的参数包括:
-a:显示所有进程 -u:显示指定用户的进程 -x:显示所有进程,不以终端为区分 -e:显示所有进程信息
-f:显示完整信息 -C:根据命令名显示进程
ps -C java # 查看java进程
ps输出中常见的字段含义:
- PID:进程ID
- TTY:终端号
- STAT:进程状态
- TIME:占用CPU时间
- COMMAND:进程名称
8.2 kill
kill PID: 这里的PID是要终止的进程的进程ID。这将向该进程发送SIGTERM信号,请求终止进程。
kill -9 PID: 使用-9参数强制终止
kill命令支持发送多种信号,常用的信号包括:
- SIGTERM (15):请求终止进程
- SIGKILL (9):强制终止进程
- SIGSTOP (17):暂停进程
- SIGCONT (18):继续运行停止的进程
🌵9.top/htop 查看系统资源占用情况的命令
9.1 top
top [选项]
top命令在Linux系统中用于实时显示进程的资源占用情况,相当于Windows的任务管理器。直接在终端运行top命令将进入提示界面,实时显示所有进程的CPU、内存、交换分区等资源占用情况。
top命令选项:
-b 以批处理模式操作
-c 显示完整的治命令
-d 屏幕刷新间隔时间
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i 设置刷新间隔时间
-u 指定用户名
-p 指定进程
-n 循环显示的次数
在top状态下常用的快捷键:
h 显示快捷键帮助
k 终止一个进程
i 开/关忽略闲置和僵死进程
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 更改刷新间隔时间,单位秒
f,F 从当前显示中添加或者删除项目
o,O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据内存使用大小排序
P 根据CPU使用率进行排序 (默认排序)
T 根据时间/累计时间进行排序
w 将当前设置写入~/.toprc文件中
1 展开多核cpu显示
top命令显示的信息字段含义:
top - 系统当前时间
up 系统已开机多长时间
user 当前用户数
load average cpu平均负载,三个数值分别为,1分钟,5分钟,15分钟
Tasks 系统当前进程数,total:总进程数,running:正在运行的进程数,sleeping:睡眠的进程数,stopped:停止的进程数,zombie:僵尸进程数
%Cpu(s) cpu使用率,us:用户使用cpu百分百,sy:系统内核使用cpu百分百,id:剩余的cpu百分百
Mem 内存使用信息,total:总内存大小,free:空闲的内存,used:已使用的内存,buff/cache:缓存的内存大小
Swap 虚拟内存信息
PID 进程id
USER 进程所有者
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量
RES 进程使用的物理内存大小
SHR 共享内存大小
S 进程状态,D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程
%CPU 进程使用的CPU占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计
COMMAND 命令名
9.2 htop 与top类似
htop相对top有一些提升:
界面更加人性化,使用色彩区分进程状态,可视化更强
支持鼠标操作
支持树形进程结构,可以展开/折叠进程和子进程
支持排序时高亮正在排序的列
支持横向滚动终端浏览进程信息
支持搜索和过滤进程
htop的一些主要交互键:
F1 - 帮助
F2 - 显示/隐藏进程树
F3/F4 - 搜索进程
F5/F6 - 排序列
F7/F8 - 增加/减少列
F9 - 终止进程
F10 - 退出htop
🌵10.du/df 查看磁盘空间使用情况的命令
10.1 du
du - 显示当前目录下的所有文件和子目录大小
du -h - 以人类可读的形式显示大小(GB,MB,KB)
du -sh - 显示当前目录总大小
du -ah - 显示指定目录下的所有文件和目录大小
du -lh - 只显示总大小的目录,不显示文件
du -s * - 显示当前目录下每个子目录的总大小
10.2 df
df - 查看所有文件系统的磁盘空间使用情况
df -h - 以可读格式显示磁盘空间使用情况
df -H - 显示所有文件系统的磁盘使用情况,包括临时挂载的
df -T - 显示文件系统类型
df -i - 显示inode使用信息
df -a - 显示所有的磁盘,包括未挂载的
显示参数说明:
文件系统(Filesystem):显示的文件系统路径
1K-块(1K-blocks):文件系统的总大小,以1KB为单位
已用(Used):文件系统已使用的空间
可用(Available):文件系统剩余可用空间
使用%(Use%):已使用空间的百分比
挂载点(Mounted on):文件系统挂载点
常见的文件系统类型包括:
ext4 - Linux最常见的文件系统
xfs - 高性能文件系统
nfs - 网络文件系统
vfat - Windows系统常见的文件系统
iso9660 - CD/DVD镜像文件系统
tmpfs - 临时的基于内存的文件系统
devtmpfs - 设备 tmpfs 文件系统
🌵11.ping/telnet/curl/wget 网络测试和调用命令
11.1 ping
ping [主机名/IP]: 测试网络是否通畅
11.2 telnet
telnet [服务器] [端口]
telnet www.baidu.com 80 #登录百度的80端口
telnet的一些重要用途包括:
- 测试网络连接性
- 调试客户端-服务器通信
- 手工访问 SMTP、POP3、IMAP 等服务
- 远程登录主机
11.3 curl
curl http://www.example.com #发送GET请求
curl -d "data=test" http://www.example.com #发送POST请求
curl -O http://www.example.com/text.txt #下载文件
curl -v http://www.example.com #显示通信过程
11.4 wget
wget [URL]: 从网络下载文件
🌵12.sudo 取得管理员权限的命令
sudo [命令]: 在命令前加上sudo以管理员权限执行
🌵13.crontab 定时任务管理命令
crontab的常见用法:
- 编辑crontab任务
crontab -e
这会打开 crontab 文件进行编辑,允许用户设置要定期执行的命令。
- 列出crontab任务
crontab -l
这将列出当前用户设置的所有 crontab 任务。
- 删除所有crontab任务
crontab -r
这将删除当前用户所有的 crontab 任务。
- crontab文件格式
# 分时日月周命令
* * * * * command
每个星号代表一个时间单位。从左到右分别是:分钟、小时、日期、月份、周(0-6,0表示周日)例如:
# 每天8点执行backup脚本
0 8 * * * /path/to/backup.sh
🌵14.chkconfig 系统服务管理命令
chkconfig的常用用法如下:
- 查看服务在不同运行级别下的启动状态
chkconfig --list [服务名]
- 在指定的运行级别下设置服务自动启动
chkconfig --level [运行级别] [服务名] on
- 在指定的运行级别下关闭服务自动启动
chkconfig --level [运行级别] [服务名] off
- 在所有运行级别下设置服务自动启动
chkconfig [服务名] on
- 在所有运行级别下关闭服务自动启动
chkconfig [服务名] off
Linux的运行级别包括0至6等,通常3或5为默认级别。
🌵15.iptables 防火墙配置命令
iptables的一些常用用法如下:
- 查看已有iptables规则
iptables -L
- 打开端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
此规则允许80端口 TCP数据包。
- 封禁IP
iptables -A INPUT -s 192.168.0.1 -j DROP
此规则禁止来自192.168.0.1的数据包。
- 保存规则
iptables-save > /etc/iptables.rules
保存iptables规则,重启后仍有效。
- 删除所有规则
iptables -F
🌵16. scp/rsync - 远程拷贝文件命令
16.1 scp
scp [选项] [源文件] [目标路径]
其中,选项
可以是以下常用的选项之一:
-r
:复制目录及其内容。-p
:保留原文件的修改时间、访问时间和权限。-v
:显示详细的传输信息。
源文件
为需要传输的文件或目录的路径,可以是本地路径,也可以是远程主机上的路径。远程路径的格式为 [user@]host:file
。
目标路径
为传输的目标路径,可以是本地路径,也可以是远程主机上的路径。
以下是一些示例用法:
- 从本地复制文件到远程主机:
scp file.txt user@remote:/path/to/destination
- 从远程主机复制文件到本地:
scp user@remote:/path/to/file.txt /path/to/destination
- 复制目录及其内容:
scp -r directory user@remote:/path/to/destination
16.2 rsync
rsync [选项] 源路径 目标路径
其中,选项
可以是以下常用的选项之一:
-r
:递归同步目录及其内容。-a
:归档模式,表示以递归方式传输文件,并保持文件属性(例如权限、所有者等)。-v
:显示详细的传输信息。-z
:使用压缩算法进行传输,可以减少数据传输量。--delete
:删除目标路径上与源路径不一致的文件。
源路径
为需要同步的文件或目录的路径,可以是本地路径,也可以是远程主机上的路径。远程路径的格式为 [user@]host:file
。
目标路径
为同步的目标路径,可以是本地路径,也可以是远程主机上的路径。
以下是一些示例用法:
- 在本地同步文件或目录:
rsync -avz source/ destination/
- 从本地同步到远程主机:
rsync -avz source/ user@remote:/path/to/destination/
- 从远程主机同步到本地:
rsync -avz user@remote:/path/to/source/ destination/
🌵17.chmod 改变文件权限
chmod [选项] 模式 文件
其中,选项
可以是以下常用的选项之一:
-R
:递归地修改目录及其内容的权限。-v
:显示修改后的权限。-c
:仅在发生更改时显示提示信息。
以下是一些示例用法:
- 修改文件的权限为只读:
chmod 444 file.txt
- 修改文件的权限为可读可写:
chmod u+rw file.txt
- 递归地修改目录及其内容的权限为只有所有者有读写执行权限,其他用户只有读执行权限:
chmod -R 750 directory/