一、常用命令详细介绍及使用
1、|管道符
1.介绍
管道符`|`,它的作用是将前一个命令的输出作为后一个命令的输入
2.使用
ps -ef | grep java | grep jar
ps -ef`这个命令是用来查看当前系统中正在运行的进程的。
`ps`是进程状态的缩写,`-e`参数显示所有进程,而`-f`则是全格式输出,会显示更详细的信息,比如UID、PID、PPID等等。
所以`ps -ef`的结果应该是一个包含所有运行中进程的列表,每一行对应一个进程,并带有详细信息。
接下来是管道符`|`,它的作用是将前一个命令的输出作为后一个命令的输入。所以第一个管道把`ps -ef`的结果传给`grep java`。这里`grep java`的作用是从输入中筛选出包含“java”关键词的行。也就是说,这一步会过滤出所有和Java相关的进程。
然后第二个管道将`grep java`的结果传给`grep jar`,这进一步过滤出那些包含“jar”的行。所以最终的结果应该是所有运行中的Java进程,并且这些进程的命令行参数中包含“jar”字符串,通常这意味着这些进程是通过运行一个JAR文件启动的,比如`java -jar myapp.jar`这样的命令。
2、grep文本搜索
1. 介绍
`grep`是一个强大的文本搜索工具,它使用正则表达式来匹配文本,并输出符合条件的行。基本语法是`grep [选项] 模式 [文件]`。如果没有指定文件,它会从标准输入读取数据。
常见的选项有:
- `-i`:忽略大小写。
- `-v`:反向匹配,显示不包含模式的行。
- `-n`:显示匹配行的行号。
- `-c`:统计匹配的行数。
- `-r` 或 `-R`:递归搜索目录中的文件。
- `-l`:仅显示包含匹配模式的文件名。
- `-w`:精确匹配整个单词。
- `-A num`:显示匹配行之后的num行。
- `-B num`:显示匹配行之前的num行。
- `-C num`:显示匹配行前后各num行。
2.使用
1.文件中搜索
grep "error" server.log # 输出 server.log 中所有含 "error" 的行
grep -i "error" server.log # 忽略大小写,一般是ERROR
2.结合管道过滤进程
ps -ef | grep java # 查找所有 Java 进程
3.递归搜索文件内容
grep -r "public class" /src # 搜索 /src 目录下所有含 "public class" 的文件
1. 在文件中搜索特定字符串:`grep "error" logfile.txt`,这会找出logfile.txt中所有包含“error”的行。
2. 忽略大小写:`grep -i "warning" logfile.txt`,这会匹配“Warning”、“WARNING”等。
3. 反向搜索:`grep -v "success" logfile.txt`,显示不包含“success”的行。
4. 统计匹配行数:`grep -c "error" logfile.txt`。
5. 递归搜索目录:`grep -r "main" /src`,在/src目录及其子目录的所有文件中搜索“main”。
6. 精确匹配单词:`grep -w "class" file.java`,避免匹配到“classic”或“subclass”等。
7. 显示行号:`grep -n "Exception" logfile.txt`,输出时会显示行号。
8. 结合管道使用:`ps -ef | grep java`,查找Java进程。
3、ls查看目录
1.介绍
显示目录下全部文件
2.使用
4、cd打开
1.介绍
切换当前终端的工作目录(类似于“打开”目录)。
2.使用
cd [目标目录路径]
常用操作示例
1. 进入 dist 目录
假设当前目录下存在 dist 目录:
cd dist
2. 返回上一级目录
从 dist 目录退回到父目录:
cd ..
3. 进入绝对路径的目录
直接通过绝对路径进入 /var/www/html/dist:
cd /var/www/html/dist
4. 返回用户主目录(HOME)
快速回到用户的主目录(如 /home/username):
cd ~
# 或简写为
cd
5. 返回根目录
cd /
5、zip压缩
1.介绍
将文件或目录压缩为 .zip
格式。
2.使用
常用选项:
-r:递归压缩目录及其子内容。
-q:静默模式(不显示压缩过程)。
-e:加密压缩文件(需设置密码)。
目录:
将当前目录下的 dist 目录压缩为 dist.zip:
zip -r 新的文件 旧的文件
zip -r dist.zip dist/
文件:
将当前目录下的 npp.jar 文件压缩到 npp.zip 中。
zip 新的文件 旧的文件(单文件压缩无需 -r 参数(仅目录需要)。)
zip npp.zip npp.jar
6、unzip解压缩
1.介绍
解压 .zip
文件。
2.使用
常用选项:
-d:指定解压路径。
-o:覆盖已存在的文件(无需确认)。
-l:仅列出压缩包内容,不解压。
操作 dist.zip 的示例:
将 dist.zip 解压到当前目录或指定目录:
# 解压到当前目录
unzip dist.zip
# 解压到指定目录(如 ./output)
unzip dist.zip -d ./output
若省略 -d,默认解压到当前目录。
若目标目录已存在同名文件,使用 -o 强制覆盖:
unzip -o dist.zip
7、mv移动
1.介绍
移动文件/目录或重命名。
2.使用
常用场景:
重命名:mv 旧名 新名
移动:mv 源路径 目标路径
目录:
# 重命名 dist 目录为 dist_backup
mv dist dist_backup
# 将 dist 目录移动到 /var/www/html 下
mv dist /var/www/html/
# 移动并重命名(将 dist 移动到 /backup 并重命名为 dist_old)
mv dist /backup/dist_old
若目标路径是目录且存在,mv 会将源目录移动至目标目录内(如 /var/www/html/dist)。
若目标路径不存在,则视为重命名操作。
文件:
# 将 npp.zip 移动到当前目录下的 test 目录中
mv npp.zip test/
# 将 npp.zip重命名0408.zip
mv npp.zip 0408.zip
8、mkdir创建目录
# mkdir 目录
mkdir my_folder
9、rm删除文件/目录
# rm -rf old_data
rm -rf old_data
10、top实时监控系统进程
top
11、jps列出Java进程信息
# 详细,显示完整包名或 JAR 路径
jps -l
# 列出 Java 进程的 PID 和主类名(简短格式)
jps
12、ps显示进程状态
# 查看所有进程
ps -ef
ps -ef | grep "java"
# 查看指定 PID 的进程信息
ps -p pid
ps -p 8888
13、kill终止进程
kill 8888 # 终止 PID 为 8888 的进程(默认发送 SIGTERM 信号)
kill -9 8888 # 强制终止 PID 为 8888 的进程(发送 SIGKILL 信号)
14、tail查看文件末尾内容
# 实时监控日志文件
tail -f file.log
# 实时监控日志文件 + 筛选关键字
tail -f file.log | grep "error"
# 查看 access.log 的最后 20 行,不实时加载
tail -n 20 file.log
15、pwd显示当前目录
pwd # 输入
/home/user/Documents # 输出
16、tar 命令压缩与解压
tar [选项] [归档文件名] [文件/目录列表]
命令参数说明
-
-c
: 创建新的归档文件(压缩) -
-x
: 从归档文件中提取文件(解压) -
-z
: 使用 gzip 压缩/解压 -
-v
: 显示操作过程(verbose) -
-f
: 指定归档文件名(必须放在最后)
1. 压缩 app 目录
tar -czvf app.tar.gz app/
2. 压缩 dist 文件
tar -czvf npp.tar.gz np.jar
1. 解压 app.tar.gz
tar -xzvf app.tar.gz
2. 解压 npp.tar.gz
tar -xzvf npp.tar.gz
17、
待补充...
二、文件与目录操作
命令 | 语法 | 常用选项 | 示例 | 适用场景 |
ls | ls [选项] [目录] | -l(详细信息)、-a(显示隐藏文件)、-h(易读文件大小) | ls -lah /home | 查看目录内容 |
cd | cd [目录路径] | ~(家目录)、-(返回上一次目录) | cd /var/log | 切换工作目录 |
cp | cp [选项] 源文件 目标路径 | -r(递归复制目录)、-i(覆盖前确认) | cp -r dir1/ dir2/ | 复制文件或目录 |
mv | mv [选项] 源文件 目标路径 | -i(覆盖前确认)、-v(显示移动过程) | mv old.txt new.txt | 移动/重命名文件 |
rm | rm [选项] 文件或目录 | -r(递归删除)、-f(强制删除不提示) | rm -rf tmp/ | 谨慎使用!删除文件/目录 |
mkdir | mkdir [选项] 目录名 | -p(自动创建父目录) | mkdir -p project/src | 创建多级目录 |
find | find [路径] [条件] | -name(按名称搜索)、-type(按类型搜索) | find / -name "*.log" | 全局搜索文件 |
rsync | rsync [选项] 源 目标 | -a(归档模式)、-v(显示进度)、-z(压缩传输) | rsync -avz dir/ user@remote:/backup/ | 高效同步文件(本地或远程) |
三、文本处理
命令 | 语法 | 常用选项 | 示例 | 适用场景 |
cat | cat [文件] | -n(显示行号) | cat -n config.conf | 查看文件内容 |
head | head [选项] 文件 | -n 5(显示前5行) | head -n 10 access.log | 查看文件头部内容 |
tail | tail [选项] 文件 | -n 5(显示末尾5行)、-f(实时追踪日志) | tail -f app.log | 监控日志更新 |
grep | grep [选项] 模式 文件 | -i(忽略大小写)、-v(反向匹配)、-C 3(显示上下文3行) | grep -i "error" system.log | 过滤关键信息 |
sed | sed [选项] '命令' 文件 | -i(直接修改文件)、-e(多命令组合) | sed -i 's/old/new/g' file.txt | 批量替换文本 |
awk | awk '模式 {动作}' 文件 | -F(指定分隔符) | awk -F: '{print $1}' /etc/passwd | 提取特定列数据 |
四、系统管理与监控
命令 | 语法 | 常用选项 | 示例 | 适用场景 |
top | top | -d 2(刷新间隔2秒)、-p PID(监控指定进程) | top -d 1 | 实时监控系统资源占用 |
htop | htop | 交互式操作(支持鼠标点击) | htop | 更友好的进程监控工具(需安装) |
ps | ps [选项] | -ef(显示所有进程)、aux(BSD格式) | ps -ef | grep nginx | 查看进程状态 |
kill | kill [信号] PID | -9(强制终止进程) | kill -9 1234 | 终止无响应的进程 |
df | df [选项] | -h(易读单位) | df -h | 查看磁盘空间使用情况 |
free | free [选项] | -h(易读单位) | free -h | 查看内存使用情况 |
六、网络工具
命令 | 语法 | 常用选项 | 示例 | 适用场景 |
ping | ping [目标] | -c 4(发送4个包后停止) | ping -c 4 google.com | 测试网络连通性 |
curl | curl [选项] URL | -O(下载文件)、-I(仅显示响应头) | curl -O https://example.com/file.zip | 发送HTTP请求或下载文件 |
wget | wget [选项] URL | -c(断点续传)、-r(递归下载) | wget -c http://example.com/large.iso | 下载大文件 |
netstat | netstat [选项] | -tuln(查看监听端口)、-p(显示进程名) | netstat -tuln | grep 80 | 检查端口占用情况 |
ssh | ssh 用户@主机 | -p 2222(指定端口) | ssh -p 2222 user@192.168.1.100 | 远程登录服务器 |
七、压缩与解压
命令 | 语法 | 常用选项 | 示例 | 适用场景 |
tar | tar [选项] 文件 | -c(创建压缩包)、-x(解压)、-z(gzip压缩)、-v(显示过程) | tar -czvf backup.tar.gz dir/ | 打包并压缩目录 |
gzip | gzip [文件] | -d(解压)、-9(最高压缩率) | gzip -9 large.log | 压缩单个文件 |
unzip | unzip [压缩包] | -l(查看内容)、-d(指定解压目录) | unzip data.zip -d target/ | 解压ZIP文件 |
六、权限管理
命令 | 语法 | 常用选项 | 示例 | 适用场景 |
chmod | chmod [权限] 文件 | u+x(给所有者添加执行权限)、755(数字模式) | chmod 755 script.sh | 修改文件权限 |
chown | chown 用户:组 文件 | -R(递归修改目录) | chown -R www:www /var/www/ | 修改文件所有者 |
sudo | sudo 命令 | -i(切换为root环境) | sudo apt update | 以管理员权限执行命令 |
查看mqtt进程[root@localhost ~]# ps -ef |grep "mqtt":root 19308 1398 0 14:45 pts/1 00:00:00 grep --color=auto mqtt
打开MQTT文件路径[root@localhost /]# cd MQTT:[root@localhost MQTT]# ll
查看日志[root@localhost MQTT]# tail -f mqtt27804.log
2024-04-08 05:38:22.153 INFO [nioEventLoopGroup-3-7] com.jinhetech.xiotmqtt.server.handler.NettyMqttHandler : info--MqttMessage[fixedHeader=MqttFixedHeader[messageType=PINGREQ, isDup=false, qosLevel=AT_MOST_ONCE, isRetain=false, remainingLength=0], variableHeader=, payload=]
2024-04-08 05:38:22.154 INFO [nioEventLoopGroup-3-7] com.jinhetech.xiotmqtt.server.handler.NettyMqttHandler : NettyMqttHandler-channelReadComplete
2024-04-08 05:38:50.445 INFO [nioEventLoopGroup-3-3] com.jinhetech.xiotmqtt.server.handler.NettyMqttHandler : info--MqttMessage[fixedHeader=MqttFixedHeader[messageType=PINGREQ, isDup=false, qosLevel=AT_MOST_ONCE, isRetain=false, remainingLength=0], variableHeader=, payload=]
2024-04-08 05:38:50.445 INFO [nioEventLoopGroup-3-3] com.jinhetech.xiotmqtt.server.handler.NettyMqttHandler : NettyMqttHandler-channelReadComplete
查看100行日志[root@localhost MQTT]# tail -100f mqtt27804.log :2024-04-08 05:38:50.445 INFO [nioEventLoopGroup-3-3] com.jinhetech.xiotmqtt.server.handler.NettyMqttHandler : NettyMqttHandler-channelReadComplete
下载服务器文件到本地[root@localhost MQTT]# sz mqtt27804.log :-bash: sz: 未找到命令
安装插件,支持sz命令[root@localhost MQTT]# scp root@10.51.240.31:/MQTT/mqtt27804.log:已安装:lrzsz.x86_64 0:0.12.20-36.el7 完毕!
查看文件下内容[root@localhost MQTT]# ls:D: mqtt27805.log xiotmqtt-test-27804-0.0.1-SNAPSHOT.jar xiotmqtt-test-27806-0.0.1-SNAPSHOT.jar mqtt27804.log mqtt27806.log xiotmqtt-test-27805-0.0.1-SNAPSHOT.jar
删除mqtt日志文件:[root@localhost MQTT]# rm -rf mqtt27804.log
重启mqtt服务:[root@localhost MQTT]# nohup java -jar xiotmqtt-test-27804-0.0.1-SNAPSHOT.jar > mqtt27804.log 2>&1 &:[1] 20919,执行完会有进程号
nohup java -jar xiotmqtt-test-27804-0.0.1-SNAPSHOT.jar > mqtt27804.log 2>&1 &
nohup java -jar xiotmqtt-test-27805-0.0.1-SNAPSHOT.jar > mqtt27805.log 2>&1 &
nohup java -jar xiotmqtt-test-27806-0.0.1-SNAPSHOT.jar > mqtt27806.log 2>&1 &
查看cpu命令:top
内存使用率:free -h
在linux系统中查看jar包进程,可以使用ps命令来查看,具体代码如下:ps -ef | grep java | grep jar
使用jps先得到进程pid:jps -l
使用ps -ef 查询java进程更详细一点运行时参数(只想要进程号可以用jps):ps -ef | grep java
解压缩zip文件:unzip xxx.zip
杀进程 kill -9
以普通用户登录的,可以使用以下命令切换到root用户:sudo su -
如果你已经以root用户身份登录,可以直接在命令行中执行以下命令:su -
[root@localhost MQTT]# sh xiotmqtt-test-27804_stop.sh
[root@localhost MQTT]# sh xiotmqtt-test-27805_stop.sh
[root@localhost MQTT]# sh xiotmqtt-test-27806_stop.sh
[root@localhost MQTT]# sh xiotmqtt-test-27804_start.sh
[root@localhost MQTT]# sh xiotmqtt-test-27805_start.sh
[root@localhost MQTT]# sh xiotmqtt-test-27806_start.sh
[root@localhost MQTT]# ps -ef |grep "mqtt"
cd ..
[root@localhost /]# cd root
[root@localhost ~]# ls
anaconda-ks.cfg emqx-5.6.0-el7-amd64.tar.gz mqtt27804.log mqtt27806.log zabbix-agent-3.4.10-1.el7.x86_64.rpm
emqx logs mqtt27805.log nacos
[root@localhost ~]# cd emqx/bin/
[root@localhost bin]# cd ..
[root@localhost emqx]# ls
bin data dynlibs erts-14.2.1 etc lib log plugins releases
[root@localhost emqx]# cd bin/
[root@localhost bin]# ./emqx start
cd - 命令可用于返回上次访问的目录。这在两个目录之间频繁切换时非常方便
切回根目录cd /
sh脚本启动命令:sh start.sh
查看日志tail -f mqtt27804.log
tail 命令是最常用的查看日志语句。以日志文件 server.log 为例,tail 命令可以用于查看日志文件的最后几行或实时追踪日志文件。
常用的 tail 命令选项:
-n: 指定显示行数。
-f: 以跟随模式运行。
-c: 指定要显示的字符数。
-r: 从文件末尾倒序显示。
查看日志文件的最后几行,显示 server.log 文件的最后 100 行tail -n 100 server.log
显示 server.log 文件100行之后的所有日志tail -n +100 server.log
实时追踪日志文件,跟随模式运行 tail 命令,实时显示新加入的内容。(默认最后10行,相当于增加参数 -n 10):,tail -f server.log
查找日志文件中包含指定字符串的行,显示 server.log 文件中包含关键字的行grep "关键字" server.log
显示 server.log 文件的最后 100 个字符,如果 -c 选项后面没有跟随数字,则会默认显示最后 100 个字符tail -c 100 server.log
查看日志文件中包含 “ERROR” 的行,并从文件末尾倒序显示tail -r -n 100 | grep "ERROR"
退出tail命令Ctrl+c