Linux那点事儿——运维工程师常用命令-持更


前言

总结平时常用的一些命令 ,并不是命令详解 , 持续更新

1.nc命令

nc是netcat的简写

yum -y insatll nc

功能
  (1)网络端口连通性
    nc -vz -w 1 192.168.1.129 3306                  Centos6
    nc -w 1 192.168.1.129 3306 </dev/null           Centos7
  (2)文件传输
    nc -l 10000 >a.txt        A机器开启一个端口(任意)
    nc A机器ip 10000 <a.txt     B机器通过10000端口向A传输文件
  (3)网速测试
    yum -y install dstat
    nc -l 10000 >/dev/null      A机器开启一个端口
    nc A机器ip 10000 < dev/zero B机器像A机器无限传输数据
    dstat查看网卡在B发送的数据和在A接收的数据
  (4) nc -4u 192.168.1.129 162    发送udp数据
  (5) nc -vuz 192.168.1.129 162   测试udp端口连通性

2. dstat命令

yum -y install dstat

  dstat命令有默认选项,执行dstat命令不加任何参数,它默认会收集-cpu-、-disk-、-net-、-paging-、-system-的数据,
  一秒钟收集一次。 默认输入 dstat 等于输入了dstat -cdngy 1或dstat -a 1。
  
  常用选项:
    -c,--cpu   统计CPU状态,包括 user, system, idle(空闲等待时间百分比), wait(等待磁盘IO)等;
      -d, --disk 统计磁盘读写状态
      -D  total,sda 统计指定磁盘或汇总信息
      -l, --load 统计系统负载情况,包括1分钟、5分钟、15分钟平均值
      -m, --mem 统计系统物理内存使用情况,包括used, buffers, cache, free
      -s, --swap 统计swap已使用和剩余量
      -n, --net 统计网络使用情况,包括接收和发送数据
      -N  eth1,total  统计eth1接口汇总流量
      -r, --io 统计I/O请求,包括读写请求
      -p, --proc 统计进程信息,包括runnable、uninterruptible、new
      -y, --sys 统计系统信息,包括中断、上下文切换
      -t  显示统计时时间,对分析历史数据非常有用
          --fs 统计文件打开数和inodes数
          
  常用命令:
    dstat -cmsdnl

3.url拨测

域名返回码
curl -I -m 10 -o /dev/null -s -w %{http_code} 域名(port)

4.dd命令生成文件

dd if=/dev/zero of=/testblock bs=1M count=3

if:inputfile 
of:outputfile
bs:blocksize

5.命令行临时配置ip地址

ifconfig eth0 192.168.1.10/24     # 更改ip

ip a a 1.1.1.1/24 dev eth0        # 添加ip

6.命令行临时添加路由

route add -net 192.168.2.0/24 gw 192.168.2.254 

route add –net 180.200.0.0 netmask 255.255.0.0 gw 10.200.6.201 dev eth0 metric 1

命令格式:
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]] 

参数:
add:添加一条新路由。
del:删除一条路由。
-net:目标地址是一个网络。
-host:目标地址是一个主机。
netmask:当添加一个网络路由时,需要使用网络掩码。
gw:路由数据包通过网关。注意,你指定的网关必须能够达到。
metric:设置路由跳数。
Command 指定您想运行的命令 (Add/Change/Delete/Print)。 
Destination 指定该路由的网络目标。 
mask Netmask 指定与网络目标相关的网络掩码(也被称作子网掩码)。 
Gateway 指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。 
metric Metric 为路由指定一个整数成本值标(从 19999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。 
if Interface 为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。

7.修改firewalld策略

firewall-cmd --list-all

firewall-cmd --zone=public --add-port=22/tcp --permanent # 新增端口

firewall-cmd --zone= public --remove-port=80/tcp --permanent # 删除端口

firewall-cmd --reload #重载生效

8.cut命令

截取信息

cut -d'分隔字符' -f fields
常用选项:
-d  :后面接分隔字符。与 -f 一起使用;
-f  :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-b 选中第几个字符
-c 选中多少个字符 

echo "a:b:c" |cut -d: -f2

echo "a:b:c" |cut -b 3

echo "a:b:c" |cut -c 1-3

9.diff命令

diff -w a.txt b.txt  

> 111 
< 44 

"<"表示a.txt有,但是b.txt里面不包含;">"表示a.txt没有,但是b.txt包含。

diff -w a.txt b.txt | grep \^\<    只输出a.xt里面有,但是b.txt里面不包含的文件内容

diff -w a.txt b.txt | grep \^\>    只输出b.xt里面有,但是a.txt里面不包含的文件内容

10.wc命令

主要用于统计,如行数、字符数

常用选项:
-c 打印文件字节数,一个英文字母 1 字节,一个汉字占 2-4 字节(根据编码)
-m 打印文件字符数,一个汉字占 2 个字符
-l 打印多少行
-L 打印最长行的长度,也可以统计字符串长度

wc -l  file # 统计文件行数

echo "hello" |wc -L # 获取字符串长度

11.sort命令

主要用于排序

常用选项:
-f 忽略字母大小写
-M 根据月份比较,比如 JAN、DEC
-h 根据易读的单位大小比较,比如 2K、1G
-g 按照常规数值排序
-n 根据字符串数值比较
-r 倒序排序
-k 位置 1,位置 2 根据哪一列排序
-t 指定分隔符
-u 去重重复行

du -sh * |sort -k1 -hr  # 根据文件大小排序

echo -e "1\n1\n2\n3\n3" |sort -u  # 去重

12.uniq命令

主要用于去重,与统计重复次数

常用选项:
-c 打印出现的次数
-d 只打印重复行
-u 只打印不重复行
-D 只打印重复行,并且把所有重复行打印出来
-f N 比较时跳过前 N 列
-i 忽略大小写
-s N 比较时跳过前 N 个字符
-w N 对每行第 N 个字符以后内容不做比较

cat file
abc
cde
cde
xyz
xyz
abd

sort file |uniq # 去重
abc
abd
cde
xyz

sort file |uniq -c # 打印每行出现的次数
1 abc
1 abd
2 cde
2 xyz

sort file |uniq -u # 打印没有重复的数据的行
abc
abd

sort file |uniq -d # 打印有重复数据的行
cde
xyz

sort file |uniq -d -c # 打印有重复数据的行并打印重复次数
2 cde
2 xyz

13.join命令

连接两个文件

常用选项:
-i 忽略大小写
-o 按照指定文件栏位显示

cat file1
1 a
2 b
3 c

cat file2
1 x
2 y
3 z

join file1 file2  # 将两个文件相同字段合并一列
1 a x
2 b y
3 c z


join -o 1.2 2.2 file1 file2 # 打印 file1 第二列和 file2 第二列:
a x
b y
c z

14.wget命令

命令行下用于下载

常用选项:
-b, --background 后台运行
日志记录和输入文件:
-o, --output-file=FILE 日志写到文件
-a, --append-output=FILE 日志追加到文件
-d, --debug 打印 debug 信息,会包含头信息
-q, --quiet 退出,不输出
-i, --input-file=FILE 从文件中读取 URL 下载
下载选项:
-t, --tries=NUMBER 设置链接重试次数
-O, --output-document=FILE 写入内容到文件
-nc, --no-clobber 跳过下载现有的文件
-c, --continue 断点续传
服务器响应头信息
--spider 不下载任何内容
-T, --timeout=SECONDS 设置相应超时时间(还有--dns-timeout、--connect-timeout 和
--read-timeout)
-w, --wait=SECONDS 两次重试间隔等待时间
--limit-rate=RATE 限制下载速度
目录:
-P, --directory-prefix=PREFIX 保存文件目录
FTP 选项:
--ftp-user=USER 设置 ftp 用户名
--ftp-password=PASS 设置 ftp 密码
--no-passive-ftp 禁用被动传输模式

wget http://nginx.org/download/nginx-1.11.7.tar.gz # 下载文件

wget -b http://nginx.org/download/nginx-1.11.7.tar.gz # 后台下载

wget --ftp-user=admin --ftp-password=admin ftp://192.168.x.x/file/downloan.file # ftp下载文件

15.curl命令

类似于HTTP客户端,实现浏览器的功能

常用选项:
-k, --insecure 允许 HTTPS 连接网站
-C, --continue-at 断点续传
-b, --cookie STRING/FILE 从文件中读取 cookie
-c, --cookie-jar 把 cookie 保存到文件
-D, --dump-header 保存头信息到文件
-H, --header 自定义头信息发送给服务器
-I, --head 查看 HTTP 头信息
-o, --output FILE 输出到文件
-x, --proxy [PROTOCOL://]HOST[:PORT] 使用代理
-U, --proxy-user USER[:PASSWORD] 代理用户名和密码
-O, --remote-name 使用远程服务器上名字写到本地
--connect-timeout 连接超时时间,单位秒
--retry NUM 连接重试次数
--retry-delay 两次重试间隔等待时间
-s, --silent 静默模式,不输出任何内容
-Y, --speed-limit 限制下载速率
-u, --user USER[:PASSWORD] 指定 http 和 ftp 用户名和密码

curl -o badu.html http://www.baidu.com # 下载页面

curl -O ftp://user:pass@ip/a.txt # ftp下载
curl ftp://ip/filename -u user:pass -o filename # ftp下载 

16.iconv命令

转换字符集

常用选项:
-l 列出所有已知的字符集
-f 原始文本编码
-t 输出编码
-o 输出到文件

iconv -f gbk -t utf8 old.txt -o new.txt # 转换字符集

echo $(echo "content" | iconv -f utf8 -t gbk) # 防止短信或者邮件乱码

17.ss命令

强大的socket查看工具

选项常用:
-n 不解析名字
-a 显示所有 socket
-l 显示所有监听的 socket
-e 显示 socket 详细信息
-m 显示 socket 内存使用
-p 显示进程使用的 socket
-i 显示内部 TCP 信息
-s 显示 socket 使用汇总
-4 只显示 IPV4 的 socket
-0 显示包 socket
-t 只显示 TCP socket
-u 只显示 UDP socket
-d 只显示 DCCP socket
-w 只显示 RAW socket
-x 只显示 Unix 域 socket
-D 将原始的 TCP socket 转储到文件
过滤:
-o state 显示 TCP 连接状态信息

ss -t -a # 显示所有 TCP 连接

ss -u –a # 显示所有 UDP 连接

ss -s # 显示 socket 使用汇总

ss -o state established # 显示所有建立的连接

ss -o state TIME-WAIT # 显示所有的 TIME-WAIT 状态

18.vmstat命令

获取内存、swap、cpu、io等统计信息

常用选项:
-a 打印活跃和不活跃的内存页
-d 打印硬盘统计信息
-D 打印硬盘表
-p 打印硬盘分区统计信息
-s 打印虚拟内存表
-m 打印内存分配(slab)信息
-t 添加时间戳到输出
-S 显示单位,默认 k、KB、m、M,大写是*1024

vmstat -t 1 5

在这里插入图片描述

详解:
r:CPU 正在运行的进程数
b:在等待 I/O 的进程数
swpd:已经使用的交换内存(kb)
free:空闲的物理内存(kb)
buff:已经使用的缓冲区内存(kb);一般对设备数据缓存,写入到磁盘的数据。
cache:已经使用的缓冲区内存(kb);一般对文件数据缓存,从磁盘读取的数据。
si:从磁盘交换到内存的交换页数量(kb/s)
so:从内存交换到磁盘的交换页数据(kb/s)
bi:块设备接收的块数量(kb/s)
bo:块设备发送的块数量(kb/s)
in:每秒 CPU 中断次数
cs:每秒 CPU 上下文切换次数
us:用户进程使用 CPU 时间(%)
sy:系统进程使用 CPU 时间(%)
id:CPU 空闲时间(%)
wa:等待 I/O 响应所消耗的 CPU 时间(%)
st:从虚拟设备中获得的时间(%)

19.iostat命令

输出cpu负载与磁盘io

常用选项:
-c 显示 CPU 使用率
-d 只显示磁盘使用率
-k 单位 KB/s 代替 Block/s
-m 单位 MB/s 代替 Block/s
-N 显示所有映射设备名字
-t 打印报告时间
-x 显示扩展统计信息

在这里插入图片描述

rrqm/s:   每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s:  每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s:           每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s:         每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s:    每秒读扇区数。即 delta(rsect)/s
wsec/s:  每秒写扇区数。即 delta(wsect)/s
rkB/s:     每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:    每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await:    平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:   平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util:      一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒) 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈

20.tcpdump命令

捕获和分析数据包

tcpdump [ 选项 ] [ -c 数量 ] [ -i 网络接口 ] [ -w 文件名 ] [ 表达式 ]

常用选项:
-l:使标准输出变为缓冲行形式
-c:抓包次数
-nn:直接以 IP 及 Port Number 显示,而非主机名与服务名称
-s :<数据包大小> 设置每个数据包的大小
-i:指定监听的网络接口
-r:从指定的文件中读取包
-w:输出信息保存到指定文件
-a:将网络地址和广播地址转变成名字
-d:将匹配信息包的代码以人们能够理解的汇编格式给出
-e:在输出行打印出数据链路层的头部信息
-f:将外部的Internet地址以数字的形式打印出来
-t:在输出的每一行不打印时间戳
-v :输出稍微详细的报文信息;加一个v更详细

tcpdump -c10 -nn tcp port 22 -i ens33 and source 192.168.1.129 # 抓取来自192.168.1.129到ens33网卡22端口的数据包

tcpdump -i ens33 tcp port 22 and host 192.168.1.129 -w /tmp/tmp.file # 抓取主机192.168.1.129ens33网卡22端口的所有数据包 保存在/tmp/tmp.file

tcpdump port 80 # 抓取80端口的所有数据包

tcpdump src 192.168.1.129 # 抓取来自192.168.1.129的所有数据包

21.nmap命令

探测主机是否在线、扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描

Nmap [ 扫描类型 ] [ 通用选项 ] { 扫描目标说明 }

常用选项:
-sT:TCP connect()扫描,这是最基本的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听,否则认为目标端口没有监听程序。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS:TCP同步扫描(TCP SYN),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口没有监听程序。所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF,-sX,-sN:秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包,通过这种扫描,可间接用于检测防火墙的健壮性。
-sP:ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP  echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU:UDP扫描,如果你想知道在某台主机上提供哪些UDP服务,可以使用此选项。
-sA:ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW:滑动窗口扫描,非常类似于ACK的扫描。
-sR:RPC扫描,和其它不同的端口扫描方法结合使用。
-b:FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。

-n:不做反向DNS解析,以加快扫描速度
-P0:在扫描之前,不ping主机;有些网络防火墙可能禁止ICMP请求包,使用这种扫描类型可以跳过ping测试
-PT:扫描之前,使用TCP ping确定哪些主机正在运行。
-PS:对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。
-PI:设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-PB:这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O:这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型。
-I:打开nmap的反向标志扫描功能。
-f:使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。
-v:强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP>:在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况使用这个选项给出你的IP地址。
-g port:设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。
-oN:把扫描结果重定向到一个可读的文件logfilename中。
-oS:扫描结果输出到标准输出。
-A:打开操作系统探测和版本探测。

-iL filename:从filename文件中读取扫描的目标。
-iR:让nmap自己随机挑选主机进行扫描。
-p:端口,这个选项让你选择要进行扫描的端口号的范围。可使用逗号分隔多个端口,减号连接一个端口范围,在列表前指定T:表示TCP端口,U:表示UDP端口
-exclude:排除指定主机
-exclude file:排除指定文件中的主机

nmap -sT -PO 10.50.133.222 # 探测主机存活及监听端口

nmap -sS -n -p 22 10.50.133.0/24 # 扫描一个网段的主机是否开启22端口

nmap -O -n 10.50.133.222 # 获取操作系统及kernel

nmap –sS 10.50.133.0/24 # 探测一个网段开启的服务

22.windows文本到linux下格式转换

方法1:
:set fileformat=unix

方法2:
:%s/\r*$//  # ^M可用\r代替

23.jvm垃圾回收统计jstat

在这里插入图片描述

jstat -gc <pid> <time> <count>
pid 进程号
time 刷新时间 单位ms 1000就是1s
count 打印次数


S0C:年轻代中第一个survivor(幸存区)的容量 (KB)
S1C:年轻代中第二个survivor(幸存区)的容量 (KB)
S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (KB)
S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (KB)
EC :年轻代中Eden(伊甸园)的容量 (KB)
EU :年轻代中Eden(伊甸园)目前已使用空间 (KB)
OC :Old代的容量 (KB)
OU :Old代目前已使用空间 (KB)
MC:metaspace(元空间)的容量 (KB)
MU:metaspace(元空间)目前已使用空间 (KB)
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

24.查看jvm详细信息jmap

在这里插入图片描述

jmap  -heap  <pid>
Heap Configuration: # 堆栈配置情况,也就是JVM参数配置
   MinHeapFreeRatio = 0 # 最小堆使用比例
   MaxHeapFreeRatio = 100 # 最大堆可用比例
   MaxHeapSize      = 2147483648 (2048.0MB) # 最大堆空间大小
   NewSize          = 1310720 (1.25MB) # 新生代分配大小
   MaxNewSize       = 268435456 (256.0MB) # 新生代可分配最大空间大小
   OldSize          = 5439488 (5.1875MB) # 老年代大小
   NewRatio         = 2 # 新生代比例,新生代与老年代比值1:3
   SurvivorRatio    = 8 # 新生代与suvivor的比例
   PermSize         = 134217728 (128.0MB) # perm区 永久代大小
   MaxPermSize      = 268435456 (256.0MB) # 最大可分配perm区 也就是永久代大小
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage: # 堆使用情况【堆内存实际的使用情况】
PS Young Generation # 新生代
Eden Space: # 伊甸区Eden区
   capacity = 265289728 (253.0MB) # eden区大小
   used     = 66380696 (63.305564880371094MB) # 已使用大小
   free     = 198909032 (189.6944351196289MB) # 剩余大小
   25.021962403308734% used # 使用率
From Space: # 幸存区survior0
   capacity = 1572864 (1.5MB) # survior0区大小
   used     = 589824 (0.5625MB) # 已使用大小
   free     = 983040 (0.9375MB) # 剩余大小
   37.5% used # 使用率
To Space: # 幸存区survior1
   capacity = 1572864 (1.5MB) # survior1区大小
   used     = 0 (0.0MB) # 已使用大小
   free     = 1572864 (1.5MB) # 剩余大小
   0.0% used # 使用率
PS Old Generation # 老年代
   capacity = 805306368 (768.0MB) # 老年代大小
   used     = 361444264 (344.70011138916016MB) # 已使用大小
   free     = 443862104 (423.29988861083984MB) # 剩余大小
   44.8828270037969% used # 使用率
PS Perm Generation # 永久代
   capacity = 134217728 (128.0MB) # 永久代大小
   used     = 130136904 (124.10822296142578MB) # 已使用大小
   free     = 4080824 (3.8917770385742188MB) # 剩余大小
   96.95954918861389% used # 使用率

25.lsof命令

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,一切事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

lsof -p <pid>  # 查看某个程序打开的文件及关联进程
lsof -p 10000

lsof -i:<port> # 查看端口监听情况
lsof -i:22

lsof <filesystem> # 查看文件系统正在被谁使用(在mount、umount时很好用)
lsof /dev

lsof +d <dir> # 查看目录下被进程打开的文件 
lsof /var/log

lsof数据恢复:
当文件正在被程序使用(写入、读取)时,我们rm这个文件,文件并不会直接从磁盘被删除,而是依然存在磁盘中,因为程序并不知道文件已经被删除,所以还会继续该文件的文件描述符写入或读取,我们删除的文件就像文件描述符的一个软连接,连接被删除了,“源文件”还在。我们在进程里可以查看到文件是deleted状态。

rm -f /var/log/messages
lsof  |grep /var/log/messages

在这里插入图片描述

在这里也很好的解析了,当我们文件系统使用比较高的时候为什么rm掉文件之后空间并没有释放,要重启程序之后空间才释放出来。因为我们并没有本质删除文件,删除的只是类似一个软连接。现在我们知道文件内容是存在文件描述符,我们只需要把它存储的数据恢复到某个文件下,就实现了文件的恢复。

在这里插入图片描述

我们使用lsof查看到程序使用的文件描述符,也就是7,我们看下7的内容,也就是message日志

在这里插入图片描述

此时,我们就可以把文件内容重定向到另一个文件实现文件恢复(主机时间不准确,没有对时,忽略时间)

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷学技术的梁胖胖yo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值