Linux作为一个高度成熟和强大的操作系统,拥有非常丰富的命令行工具,对于Java开发者来说,掌握一些常用的Linux命令可以大大提高工作效率,尤其是在服务器端开发时。
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.1 mkdir
mkdir [目录名]: 创建新的目录
2.2 touch
touch [文件名]: 创建一个空文件
2.3 rm
rm [文件]: 删除指定的文件
rm -r [目录]: 递归删除指定的目录及其内容
2.4 cp
cp [源文件] [目标文件]: 复制文件
cp -r [源目录] [目标目录]: 递归复制目录
2.5 mv
mv [源文件] [目标文件]: 移动/重命名文件
3.3 cat 查看文件内容
cat [文件]: 从第一行开始显示文件内容
3.4 less 分页查看文件内容
less [文件]: 分页方式查看文件内容
并可以通过以下方式浏览内容:
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
grep [选项] '字符串' filename
grep 'error' /var/log/syslog // 在syslog日志文件中查找包含'error'的匹配行。
grep的常用选项包括:
- i:不区分大小写
-n:显示匹配行及行号
-C n:显示匹配行前后n行上下文
-v:显示不包含匹配文本的所有行
-w:整词匹配
-A n:显示匹配行后n行
-B n:显示匹配行前n行
-r:递归搜索目录中的文件
find [搜索路径] [选项]
find /home -name "*.txt" #在/home目录下查找所有.txt文件
find有很多实用的选项,常用的包括:-
-name:按文件名查找
-size:按文件大小查找
-type:按文件类型查找(如f表示普通文件)
-atime/-mtime:按文件访问/修改时间查找
-user/-group:按文件属主/属组查找
-exec:对找到的文件执行指定命令
-delete:删除匹配到的文件
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.1 vim
vim 文件名
vim有三种工作模式:
vim的一些基本使用技巧:
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.1 ps
ps: 显示出当前终端中运行的进程
ps aux: 查看所有进程,可以使用aux参数
ps命令常用的参数包括:
-a:显示所有进程
-u:显示指定用户的进程
-x:显示所有进程,不以终端为区分
-e:显示所有进程信息-f:显示完整信息
-C:根据命令名显示进程
ps -C java # 查看java进程
ps输出中常见的字段含义:
8.2 kill
kill PID: 这里的PID是要终止的进程的进程ID。这将向该进程发送SIGTERM信号,请求终止进程。
kill -9 PID: 使用-9参数强制终止
kill命令支持发送多种信号,常用的信号包括:
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.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.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]: 从网络下载文件
sudo [命令]: 在命令前加上sudo以管理员权限执行
crontab的常见用法:
crontab -e
这会打开 crontab 文件进行编辑,允许用户设置要定期执行的命令。
crontab -l
这将列出当前用户设置的所有 crontab 任务。
crontab -r
这将删除当前用户所有的 crontab 任务。
# 分时日月周命令
* * * * * command
每个星号代表一个时间单位。从左到右分别是:分钟、小时、日期、月份、周(0-6,0表示周日)例如:
# 每天8点执行backup脚本
0 8 * * * /path/to/backup.sh
chkconfig的常用用法如下:
chkconfig --list [服务名]
chkconfig --level [运行级别] [服务名] on
chkconfig --level [运行级别] [服务名] off
chkconfig [服务名] on
chkconfig [服务名] off
Linux的运行级别包括0至6等,通常3或5为默认级别。
iptables的一些常用用法如下:
iptables -L
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
此规则允许80端口 TCP数据包。
iptables -A INPUT -s 192.168.0.1 -j DROP
此规则禁止来自192.168.0.1的数据包。
iptables-save > /etc/iptables.rules
保存iptables规则,重启后仍有效。
iptables -F
16.1 scp
scp [选项] [源文件] [目标路径]
其中,选项 可以是以下常用的选项之一:
-r:复制目录及其内容。-p:保留原文件的修改时间、访问时间和权限。-v:显示详细的传输信息。源文件 为需要传输的文件或目录的路径,可以是本地路径,也可以是远程主机上的路径。远程路径的格式为 [user@]host:file。
目标路径 为传输的目标路径,可以是本地路径,也可以是远程主机上的路径。
以下是一些示例用法:
scp file.txt user@remote:/path/to/destinationscp user@remote:/path/to/file.txt /path/to/destinationscp -r directory user@remote:/path/to/destination16.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/chmod [选项] 模式 文件
其中,选项 可以是以下常用的选项之一:
-R:递归地修改目录及其内容的权限。-v:显示修改后的权限。-c:仅在发生更改时显示提示信息。以下是一些示例用法:
chmod 444 file.txtchmod u+rw file.txtchmod -R 750 directory/