Linux常用命令

Linux 与 Java 生产排障常用命令速查

Posted by Ekko on January 9, 2021

这篇笔记主要整理 Linux 日常使用和 Java 生产排障里最常见的一批命令,重点放在“先定位进程、再看端口、再看日志、最后看线程和堆栈”这条高频排查路径上。

它更偏向速查和结构化梳理,不展开内核原理,也不替代完整的 man 手册;适合作为上线后排查 Java 服务问题时的第一份命令清单。

参考资料:

GNU Coreutils Manual

GNU Grep Manual

ps(1) - Linux manual page

OpenJDK Troubleshooting Guide

[TOC]


Linux 常用命令

Java 生产排障高频命令

这一组命令更适合放在靠前位置,因为生产环境排查 Java 服务时,通常不是从 lscp 开始,而是先确认“进程在不在、端口有没有监听、日志有没有报错、线程是否异常”。

1. 先找进程

最常用的是:

1
ps -ef | grep java

如果机器上不止一个 Java 服务,更实用的写法是按应用名过滤:

1
2
ps -ef | grep order-service
ps -ef | grep jar包名

如果不想把 grep 自己也匹配出来,可以写成:

1
ps -ef | grep [o]rder-service

这一步主要看:

  • 进程是否还活着
  • 启动命令是不是预期的那个 JAR
  • JVM 参数是否正确

如果机器安装了 JDK,还可以直接用:

1
jps -l

它会更直接地列出 Java 进程和主类 / JAR 名。

2. 再看端口是否监听

服务启动了,不代表端口一定正常监听。

常见命令:

1
netstat -tunlp | grep 8080

如果系统更推荐 ss,可以用:

1
ss -lntp | grep 8080

如果想看某个端口到底被谁占用,也可以用:

1
lsof -i :8080

这一步主要确认:

  • 应用是否真的把端口监听起来了
  • 监听地址是 0.0.0.0 还是 127.0.0.1
  • 端口是否被别的进程抢占

3. 结合日志快速判断故障方向

生产环境里最常用的日志查看方式通常是:

1
tail -n 200 -f logs/app.log

如果要先做关键词过滤,再看上下文:

1
2
3
grep -n "ERROR" logs/app.log
grep -n "OutOfMemoryError" logs/app.log
grep -n "Full GC" logs/app.log

这一步一般是为了快速判断:

  • 启动失败
  • 连接数据库失败
  • 配置加载失败
  • OOM
  • 频繁 GC

4. CPU 飙高时看线程

如果 Java 进程还活着,但机器 CPU 很高,常见排查思路是先找到占用高的线程。

先看进程:

1
top

再看某个 Java 进程下的线程:

1
top -Hp pid

这里的 pid 替换成 Java 进程号。

接着拿到高 CPU 线程的十进制线程 ID 后,转换成十六进制:

1
printf "%x\n" 12345

最后去线程栈里搜索:

1
jstack pid | grep 3039 -A 20

如果 12345 转成十六进制是 3039,就可以用这个值去对应线程栈。

这是一条非常典型的 Java 线上 CPU 问题排查路径。

5. 卡顿、死锁、线程阻塞时看线程栈

常见命令:

1
jstack pid

更常见的做法是导出到文件再分析:

1
jstack pid > jstack.txt

这一步重点看:

  • 是否出现死锁
  • 大量线程是否都阻塞在同一把锁
  • 线程是否都卡在数据库、Redis、RPC 调用上
  • 是否出现线程池打满

6. 内存异常时看堆和 GC

如果怀疑是内存问题,常见命令有:

1
jstat -gc pid 1000 10

表示每秒看一次 GC 情况,一共看 10 次。

如果要导出堆:

1
jmap -dump:live,format=b,file=heap.hprof pid

这一步主要用于分析:

  • 老年代是否持续上涨
  • Full GC 是否频繁
  • 是否存在内存泄漏

7. 一个常见的排查顺序

线上 Java 服务异常时,通常可以按下面顺序快速走一遍:

1
2
3
4
5
6
1. ps -ef | grep 应用名
2. ss -lntp | grep 端口
3. tail -f 日志文件
4. top / top -Hp pid
5. jstack pid
6. jstat / jmap

这一套路径的核心在于:

  • 先确认服务是否存活
  • 再确认网络入口是否正常
  • 再结合日志定位报错方向
  • 最后进入线程和内存层面

pwd显示当前目录路径

pwd [–help] [–version]

  • –help 在线帮助
  • –version 显示版本信息

ls显示目录下文件

ls [-alrtAFR] [name…]

-alrtAFR 含义
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l(缩写ll常用) 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
-R 若目录下有文件,则以下之文件亦皆依序列出

file文件内容的简单描述

file “fileName”


cp复制文件和目录

cp [options] source destination

options 含义
-a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
-d 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式
-f 覆盖已经存在的目标文件而不给出提示
-i 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时目标文件将被覆盖
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
-l 不复制文件,只是生成链接文件

cp /data/logs /data/log

cp –r test/ newtest :当前目录 test/ 下的所有文件复制到新目录 newtest 下

用户使用该指令复制目录时,必须使用参数 -r 或者 -R


mv移动/重命名文件和目录

mv [options] source destination

options 含义
-b 当目标文件或目录存在时,在执行覆盖钱,会为其创建一个备份
-i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作
-f 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件
-n 不要覆盖任何已存在的文件或目录
-u 当源文件比目标文件新或者目标文件不存在时,才执行移动操作

mv test.txt new.txt:文件 test 改名 new

mv info/ logs :info 目录放入 logs 目录中,logs 目录不存在,则将 info 改名为 logs

mv /usr/runoob/* /home :将 /usr/runoob 下的所有文件和目录移到 home 目录下


mkdir创建目录

mkdir [-p] dirName

  • -p 确保目录名称存在,不存在的就建一个

mkdir runoob : 建立一个名为 runoob 的子目录

mkdir dir1 dir2 dir3 : 创建三个目录,名为 dir1, dir2, dir3


rm删除文件或目录

rm [options] name…

options 含义
-i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除

删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”

rm test.txt : 删除文件,会有提示

rm homework : 无法删除目录”homework”: 是一个目录

rm -r homework : 是否删除 目录 “homework”? y


ln创建硬链接和符号链接

ln [参数] [源文件或目录] [目标文件或目录]

当需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间

硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统


grep查找打印匹配行

grep [-abcEFGhHilLnqrsvVwxy] [-A<显示列数>] [-B<显示列数>] [-C<显示行数>] [-d<进行动作>] [-e<范本样式>] [-f<范本文件>] [--help] [范本样式] [文件或目录...]

grep “被查找的字符串” 文件名

参数 含义
-a 或 –text 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 –byte-offset 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 –count 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> 指定字符串做为查找文件内容的样式。
-E 或 –extended-regexp 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 –fixed-regexp 将样式视为固定字符串的列表。
-G 或 –basic-regexp 将样式视为普通的表示法来使用。
-h 或 –no-filename 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 –with-filename 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 –ignore-case 忽略字符大小写的差别。
-l 或 –file-with-matches 列出文件内容符合指定的样式的文件名称。
-L 或 –files-without-match 列出文件内容不符合指定的样式的文件名称。
-n 或 –line-number 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 –only-matching 只显示匹配PATTERN 部分。
-q 或 –quiet或–silent 不显示任何信息。
-r 或 –recursive 此参数的效果和指定”-d recurse”参数相同。
-s 或 –no-messages 不显示错误信息。
-v 或 –invert-match 显示不包含匹配文本的所有行。
-V 或 –version 显示版本信息。
-w 或 –word-regexp 只显示全字符合的列。
-x –line-regexp 只显示全列符合的列。
-y 此参数的效果和指定”-i”参数相同。

grep test *file : 找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行

grep -r update /etc/acpi : 递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串”update”的文件,并打印出该字符串所在行的内容


head/tail打印文件开头部分/结尾部分

这一组命令在看配置文件、查日志、看脚本开头和结尾时非常常用。

head 默认输出文件前 10 行,tail 默认输出文件后 10 行,都可以通过 -n 调整行数。

常见示例:

1
2
3
4
head -n 20 app.log
tail -n 200 app.log
tail -f app.log
tail -n 200 -f app.log

如果想看包含某个关键字的前后文,通常不是 tail -C,而是配合 grep -C

1
grep -C 5 "ERROR" app.log

生产环境里最常见的用法仍然是:

1
tail -f app.log

它会持续输出文件末尾新增内容,适合实时追踪日志。

tail 参数 含义
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用 表示在进程ID,PID死掉之后结束
-q, –quiet, –silent 从不输出给出文件名的首部
-s, –sleep-interval=S 与-f合用 表示在每次反复的间隔休眠S秒

head [参数] [文件]

head 参数 含义
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数
-n<行数> 显示的行数

键盘操作

移动光标

按键 含义
Ctrl-a 移动光标到行首。
Ctrl-e 移动光标到行尾。
Ctrl-f 光标前移一个字符;和右箭头作用一样。
Ctrl-b 光标后移一个字符;和左箭头作用一样。
Alt-f 光标前移一个字。
Alt-b 光标后移一个字。
Ctrl-l 清空屏幕,移动光标到左上角。clear 命令完成同样的工作

文本编辑命令

按键 含义
Ctrl-d 删除光标位置的字符。
Ctrl-t 光标位置的字符和光标前面的字符互换位置。
Alt-t 光标位置的字和其前面的字互换位置。
Alt-l 把从光标位置到字尾的字符转换成小写字母。
Alt-u 把从光标位置到字尾的字符转换成大写字母。

剪切和粘贴命令

按键 含义
Ctrl-k 剪切从光标位置到行尾的文本。
Ctrl-u 剪切从光标位置到行首的文本。
Alt-d 剪切从光标位置到词尾的文本。
Alt-Backspace 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词。
Ctrl-y 把剪切环中的文本粘贴到光标位置。

id显示用户信息

id [-gGnru] [–help] [–version] [用户名称]

按键 含义
-g或–group  显示用户所属群组的ID。
-G或–groups  显示用户所属附加群组的ID。
-n或–name  显示用户,所属群组或附加群组的名称。
-r或–real  显示实际ID。
-u或–user  显示用户ID。
-help  显示帮助。
-version  显示版本信息

id 表示显示当前用户ID

输出 : uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t


chmod控制文件权限

chmod [-cfvR] [–help] [–version] mode file…

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

前十个字符是文件的属性。这十个字符的第一个字符表明文件类型

例如输入 ll 查看文件列表

-rw-rw-r–

  • 1 位字符: File Type 文件类型
  • 2、3、4 位字符: Owner 文件所有者
  • 5、6、7 位字符: Group 用户组
  • 8、9、10 位字符: Other Users 其它用户

八进制语法:

chmod文件权限.png

765 将这样解释:

所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

第一个字符属性 含义  
- 一个普通文件  
d 一个目录  
l 一个符号链接。注意对于符号链接文件,剩余的文件属性总是”rwxrwxrwx”,而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。  
c 一个字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。 比如说终端机, 或者调制解调器
b 一个块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。  

例如: chmod 777 filename


ps进程

ps 用于查看当前机器上的进程快照,是线上定位服务进程最常见的命令之一。

最常见写法:

1
2
3
ps -ef | grep java
ps -ef | grep 应用名
ps -ef | grep [n]ginx

其中:

  • -e:显示所有进程
  • -f:使用完整格式输出

如果只想看某个用户启动的进程,也可以配合:

1
ps -u root

这一组命令主要用来确认:

  • 进程是否还在
  • 进程号是多少
  • 启动命令和参数是否正确

kill杀死程序

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数说明:

  • -l <信息编号>:若不加<信息编号>选项,则 -l 参数会列出全部的信息名称
  • -s <信息名称或编号>:指定要送出的信息
  • [程序]:[程序]可以是程序的PID或是PGID,也可以是工作编号

使用 kill -l 命令列出所有可用信号

最常用的信号是:

  • 1 (HUP):重新加载进程
  • 9 (KILL):杀死一个进程
  • 15 (TERM):正常停止一个进程

更推荐的顺序是:

1
2
kill -15 pid
kill -9 pid

kill -15 会给进程一个相对优雅的退出机会,只有进程无法正常结束时,才使用 kill -9 强制终止。

查看端口号命令:

1
2
ss -lntp | grep 端口号
netstat -tunlp | grep 端口号

找到进程号后,再结合:

1
ps -ef | grep 进程名

netstat网络状态

netstat 用于查看网络连接、监听端口和路由信息。虽然很多现代 Linux 发行版更推荐 ss,但 netstat 仍然很常见。

生产里更常用的是下面几种组合:

1
2
3
netstat -tunlp | grep 8080
netstat -an | grep ESTABLISHED
netstat -s

其中:

  • -t:显示 TCP
  • -u:显示 UDP
  • -n:直接显示 IP 和端口,不做域名解析
  • -l:只看监听状态
  • -p:显示对应进程
  • -a:显示所有连接和监听套接字
  • -s:显示协议统计信息

如果系统支持,很多场景下更推荐 ss

1
2
ss -lntp
ss -ant | grep 8080

最常见的使用场景是:

  • 看某个端口是否监听成功
  • 看某个服务是否建立了大量连接
  • 观察 TCP 连接状态是否异常

top查看系统负载

top 用于实时查看系统负载、CPU、内存以及进程资源占用情况。

常见用法:

1
2
top
top -Hp pid

其中:

  • top:查看整机资源占用
  • top -Hp pid:查看指定进程下每个线程的 CPU 使用情况

这一节对 Java 排障尤其重要,因为高 CPU 问题通常要先用 top -Hp pid 找到热点线程,再配合 jstack 分析线程栈。


lsof查看文件和端口占用

lsof 的意思是 list open files,可以用来查看“哪些文件或端口正在被谁使用”。

最常见示例:

1
2
lsof -i :8080
lsof -p pid

其中:

  • lsof -i :8080:查看 8080 端口被哪个进程占用
  • lsof -p pid:查看某个进程打开了哪些文件

在端口排障时,lsof -i 往往比单纯看 netstat 更直接。


df/du查看磁盘空间

dfdu 都和磁盘空间有关,但关注点不同:

  • df 看文件系统整体剩余空间
  • du 看目录或文件实际占了多少空间

常见用法:

1
2
3
df -h
du -sh logs
du -sh *

其中:

  • df -h:按易读格式显示磁盘使用情况
  • du -sh logs:看 logs 目录总大小
  • du -sh *:快速查看当前目录下各子目录大小

这组命令很适合排查:

  • 服务器磁盘满了
  • 哪个日志目录暴涨
  • 哪个目录吃掉了最多空间

free查看内存使用

free 用于快速查看机器内存和 swap 使用情况。

最常用:

1
free -h

其中 -h 表示用更易读的单位显示,例如 MiBGiB

它适合用来快速判断:

  • 机器内存是否吃紧
  • 是否开始大量使用 swap

curl发起HTTP请求

curl 是服务联调、接口排查、健康检查时非常高频的命令。

常见示例:

1
2
3
curl http://127.0.0.1:8080/actuator/health
curl -I https://example.com
curl -X POST http://127.0.0.1:8080/api/test -H "Content-Type: application/json" -d '{"id":1}'

其中:

  • curl -I:只看响应头
  • -X:指定请求方法
  • -H:设置请求头
  • -d:设置请求体

对于 Java 服务来说,curl 往往是验证“服务到底有没有真的对外提供接口”的最快方式。


find查找命令

find path -option [ -print ] [ -exec -ok command ] {} ;

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

  • -amin n : 在过去 n 分钟内被读取过
  • -anewer file : 比文件 file 更晚被读取过的文件
  • -atime n : 在过去n天内被读取过的文件
  • -cmin n : 在过去 n 分钟内被修改过
  • -cnewer file :比文件 file 更新的文件
  • -ctime n : 在过去n天内被修改过的文件
  • -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
  • -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
  • -name name:文件名称符合 name 的文件
  • -iname name: iname 会忽略大小写
  • -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
  • -type c : 文件类型是 c 的文件。
    • d: 目录
    • c: 字型装置文件
    • b: 区块装置文件
    • p: 具名贮列
    • f: 一般文件
    • l: 符号连结
    • s: socket
  • -pid n : process id 是 n 的文件

当前目录及其子目录下所有文件后缀为 .c 的文件: find . -name “*.c”

目前目录其其下子目录中所有一般文件列出: find . -type f

当前目录及其子目录下所有最近 20 天内更新过的文件列出:: find . -ctime -20

查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:: find /var/log -type f -mtime +7 -ok rm {} \;

当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件: find . -type f -perm 644 -exec ls -l {} \;

系统中所有文件长度为 0 的普通文件,并列出它们的完整路径: find / -type f -size 0 -exec ls -l {} \;

在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 ‘pathname’参数,波浪号~代表了你的$HOME目录 find ~ -name “*.txt” -print

当前目录及子目录中查找文件名以一个大写字母开头的文件 find . -name “[A-Z]*” -print

在/etc目录中查找文件名以host开头的文件 find /etc -name “host*” -print


vim/vi 文本编辑器

linux下vim.png

Vim是从 vi 发展出来的一个文本编辑器

vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式

输入模式:

在命令模式下按下i就进入了输入模式

在输入模式中,可以使用以下按键:

字符按键以及Shift组合,输入字符

  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式:

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

rz/sz上传下载命令

rz 命令(Receive ZMODEM): rz [OPTIONS]

常用 rz -y

使用 ZMODEM 协议,将本地文件批量上传到远程 Linux/Unix 服务器

注意不能上传文件夹

使用虚拟终端软件如 XShell、SecureCRT 或 PuTTY 来连接远程服务器后,使用 rz 命令可以上传本地文件到远程服务器。输入 rz 回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行 rz 命令的目录

OPTIONS参数:

  • -+, –append 将文件内容追加到已存在的同名文件
  • -a, –ascii 以文本方式传输
  • -b, –binary 以二进制方式传输,推荐使用
  • –delay-startup N 等待 N 秒
  • -e, –escape 对所有控制字符转义,建议使用
  • -E, –rename 已存在同名文件则重命名新上传的文件,以点和数字作为后缀
  • -p, –protect 对 ZMODEM 协议有效,如果目标文件已存在则跳过
  • -q, –quiet 安静执行,不输出提示信息
  • -v, –verbose 输出传输过程中的提示信息
  • -y, –overwrite 存在同名文件则替换
  • -X, –xmodem 使用 XMODEM 协议
  • –ymodem 使用 YMODEM 协议
  • -Z, –zmodem 使用 ZMODEM 协议
  • –version 显示版本信息
  • –h, –help 显示帮助信息

sz 命令(Send ZMODEM): sz [OPTIONS] FILES

通过 ZMODEM 协议,可将多个文件从远程服务器下载到本地

注意不能下载文件夹,如果下载文件夹,请先打包再下载

OPTIONS 与 rz 基本相似,或者 sz -h 查看命令

下载多个文件: sz file1 file2 file3


tar打包/解压命令

最常用的两种写法:

1
2
tar -zxvf abc.tgz
tar -zcvf abc.tgz 目录名或文件名

其中:

  • -z:通过 gzip 处理
  • -x:解压
  • -c:创建压缩包
  • -v:显示过程
  • -f:指定压缩包文件名