您的位置:首页 > 运维架构 > Shell

第4章 更多的bash shell命令

2018-02-05 17:19 806 查看
本章内容

管理进程
获取磁盘统计信息
挂载新磁盘
排序数据
归档数据

4.1监测程序

4.1.1探查进程默认情况下,ps命令并不会提供那么多的信息:
[jingpan@localhost~]$ps
PIDTTYTIMECMD
24493pts/000:00:00bash
24524pts/000:00:00ps
[jingpan@localhost~]$

没什么特别的吧? 默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户的进程。在此例中,我们只运行了bashshell(注意,shell也只是运行在系统上的另一个程序而已),以及ps命令自己。上便中的基本输出显示了程序的进程号(PID,ProcessID)、它们运行在哪个终端(TTY)以及进程已用CPU时间。
1.Unix风格的参数-e  显示所有进程-f  显示完整格式输出使用ps命令的关键不在于记住所有可用的参数,而在于记住对你最有用的那些参数。大多数Linux系统管理员有自己的一组参数,他们会牢牢记住这些用来提取有用的进程信息的参数。举个例子,如果你想查看系统上运行的所有进程,可用-ef参数组合:
[root@localhost~]#ps-ef
UIDPIDPPIDCSTIMETTYTIMECMD
root10012月01?00:00:26/usr/lib/systemd/systemd--switched-root--system--deserialize21
root20012月01?00:00:00[kthreadd]
root32012月01?00:00:01[ksoftirqd/0]
root52012月01?00:00:00[kworker/0:0H]
root72012月01?00:00:00[migration/0]
root82012月01?00:00:00[rcu_bh]
root92012月01?00:02:59[rcu_sched]
root102012月01?00:00:07[watchdog/0]
root122012月01?00:00:00[kdevtmpfs]
root132012月01?00:00:00[netns]
root142012月01?00:00:00[khungtaskd]
root152012月01?00:00:00[writeback]
root162012月01?00:00:00[kintegrityd]
root172012月01?00:00:00[bioset]
root182012月01?00:00:00[kblockd]
root192012月01?00:00:00[md]
root222012月01?00:00:00[kswapd0]
root232012月01?00:00:00[ksmd]
root242012月01?00:00:02[khugepaged]
root252012月01?00:00:00[crypto]
root332012月01?00:00:00[kthrotld]
root352012月01?00:00:00[kmpath_rdacd]
root362012月01?00:00:00[kpsmoused]
root372012月01?00:00:00[ipv6_addrconf]
root562012月01?00:00:00[deferwq]
root902012月01?00:00:00[kauditd]
root2682012月01?00:00:00[ata_sff]
root2732012月01?00:00:00[scsi_eh_0]
root2742012月01?00:00:00[scsi_tmf_0]
root2752012月01?00:00:00[scsi_eh_1]
root2762012月01?00:00:00[scsi_tmf_1]
root2852012月01?00:00:00[ttm_swap]
root2902012月01?00:00:16[kworker/0:1H]
root3552012月01?00:00:00[kdmflush]
root3562012月01?00:00:00[bioset]
root3672012月01?00:00:00[kdmflush]
root3682012月01?00:00:00[bioset]
上例中,我们略去了输出中的不少行,以节约空间。但如你所看到的,Linux系统上运行着很多的进程。这个例子用了两个参数:-e参数指定显示所有运行在系统上的进程;-f参数则扩展了输出,这些扩展的列包含了有用的信息.UID:启动这些进程的用户PID:进程的进程号(PID)PPID:父进程的进程号(如果该进程是由另一个进程启动的)。C:进程生命周期中的CPU利用率。STIME:进程启动时的系统时间。TTY:进程启动时的终端设备TIME:运行进程需要的累计CPU时间CMD:启动的程序名称上例中输出了合理数量的信息,这也正是大多数系统管理员希望看到的。如果想要获得更多的信息,可采用-l参数,它会产生一个长格式输出:
[root@localhostlog]#ps-l
FSUIDPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD
4S028585244930800-41518do_waipts/000:00:00su
4S028594285850800-27121do_waipts/000:00:00bash
4R030101285940800-27036-pts/000:00:00ps

注意使用了-l参数之后出现的那些额外的列。F:内核分配给进程的系统标记。S:进程的状态(0代表下在运行;S代表正在休眠;R代表可运行,正等待运行;Z代表僵化,进程 已结束但父进程已不存在;T代表停止)。PRI:进程的优先级(越大的数字代表越低的优先级)。NI:谦让度(nice)值用来参与决定优先级。ADDR:进程的内存地址。SZ:假如进程被换出,所需交换空间的大致大小。 WCHAN:进程休眠的内核函数的地址。

-H参数能把输出的进程组织成一个层级的格式,简单地说就是树状。你可以很轻松地看懂哪些进程启动了哪些进程。以下是从加参数-efH的输出中截取下来的片段:
root244881972016:11?00:00:00sshd:jingpan[priv]
jingpan2449224488016:11?00:00:00sshd:jingpan@pts/0
jingpan2449324492016:11pts/000:00:00-bash
jingpan3076424493017:11pts/000:00:00ps-efH

注意CMD这列输出内容的平移,它表明运行中程序的层级:首先是root用户启动的sshd进程,然后,由于这个会话是从远程的终端连接到系统上的,SSH主进程启动了一个终端进程(pts/0),之后终端又启动了bashshell。那之后,ps命令作为bash进程的子进程开始运行了。在多用户系统上,在定位失控的进程或跟踪这些进程属于哪个userid或终端时,这个工具非常有用。2.BSD风格的参数 参数     描述  a    显示跟任意终端关联的所有进程  g   显示所有的进程,包括控制进程 x    显示所有的进程,甚至包括未分配任何终端的进程 l     采用长模式在使用BSD参数时,ps命令会自动改变输出以模仿BSD格式。下例是使用l参数的输出:
[jingpan@localhost~]$psl
FUIDPIDPPIDPRINIVSZRSSWCHANSTATTTYTIMECOMMAND
0500309830972001084801880do_waiSspts/10:00-bash
0500356235612001084801912do_waiSspts/40:00-bash
050036033562200100952604inotifS+pts/40:00tail-f/home/jingpan/collector/log/agent.log
0500467346722001084801880do_waiSspts/30:00-bash
050046994673200108140996-R+pts/30:00psl
其中大部分的输出跟我们使用Unix风格参数时的输出是一样的,只有一小部分不同。VSZ:进程在内存中的大小,以午字节(kB)为单位。RSS:进程在未换出时占用的物理内存。STAT:代表当前进程状态的双字符状态码。第一个字符采用了和Unix风格S列的输出相同的值,说明进程是在休眠、运行还是等待。第二个参数进一步说明进程的状态。<:该进程运行在高优先级上。
N:该进程运行在低优先级上。
L:该进程有页面锁定在内存中。
s:该进程是个控制进程。
l:该进程是多线程的。

+:该进程运行在前端。从前面的例子可以看出,bash命令处于休眠状态,但同时它也是一个控制进程(在我会话中,这是主要的进程)。而ps命令则运行在系统的前端.3.GNU全字参数 参数     描述--forest    用层级结构显示出进程和父进程之间的关系--headers  在每页输出中都显示列的头
--forest参数。它会显示进程的层级信息,并用ACSII字符绘出可爱的图表:
root19721010:27?00:00:00/usr/sbin/sshd
root30951972010:31?00:00:00\_sshd:jingpan[priv]
jingpan30973095010:31?00:00:00|\_sshd:jingpan@pts/1
jingpan30983097010:31pts/100:00:00|\_-bash
root32693098010:41pts/100:00:00|\_suroot
root32723269010:41pts/100:00:00|\_bash
root46701972011:53?00:00:00\_sshd:jingpan[priv]
jingpan46724670011:53?00:00:00\_sshd:jingpan@pts/3
jingpan46734672011:53pts/300:00:00\_-bash
jingpan57734673013:02pts/300:00:00\_ps-ef--forest
这种格式便得跟踪子进程和父进程变得十分容易。

4.1.2实时监测进程

top命令图4-1是top命令运行时输出的截图。输出的第一部分显示的是系统的概况:第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。最近1分钟的负载值很高也很常见,因为有时会有进程突然开始活动;但如果15分钟平均负载都很高,说明系统可能有问题了。



_____________________________________________________________________________________________________________说明Linux系统管理的要点在于如何定义系统的高负载。这个值取决于系统的硬件配置以及系统上通常运行的程序,对某个系统来说是高负载的值可能对另一个系统来说就是个正常值。通常,如果系统的负载值超过了2,就说明系统比较繁忙了。——————————————————————————————————————————————第二行显示了概要的进程信息-----top命令的输出中进程叫做任务(task):多少进程处在运行、休眠、停止或是僵化状态。下一行显示了CPU信息。top根据进程的属主(用户还是系统)和进程的状态(运行‘空闲还是等待)将CPU利用率分成几类输出。紧跟其后的两行说明了系统内存的状态。前行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息。不过是针对系统交换空间(如果分配了的话)的状态来说的。     默认情况下,top命令在启动时会按照%CPU值来排序。
%CPU=CPUusage
%MEM=Memoryusae(RES) 
VIRT =VirtualImage(kb)进程占用虚拟内存总量
RES =Residentsize(kb) 进程占用的物理内存总量
SHR=SharedMemsize(kb)
命令                          描述
f                          添加/移除输出中不同信息列
o                      更改信息行的显示顺序
F或O                  选择一列来将进程排序(默认为%CPU)
R                      切换正常排序还是倒序排序

4.1.3结束进程

Linux沿用了Unix进行进程间通信的方法。在Linux上,进程之间通过信息来通信。进程的信息
就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应。
信号                      名称                      描述
1                              HUP                      挂起
2                                 INt                      中断
9                                 KILL                  无条件终止
15                              TERM              尽可能终止
要发送进程信号,你必须是进程的属主或登录为root用户。
1.kill命令
[jingpan@localhost~]$kill2582
-bash:kill:(2582)-不允许的操作
TERM信号告诉进程可能的话停止运行。不过,如果有跑飞的进程,它通常会忽略这个请求。如果要强制终止,-s参数支持指定其他信号(用信号名或信号值)。通常可接受的处理方式是先试试TERM信号。如果进程忽略它,可用INT或HUP信号。程序收到了这些信号,
会在关掉进程前有序地停止它正在做的事。KILL信号的强制性最强。当进程接收到这个信号时,它会立即停止运行。
这可能会导致文件损坏。
2.killall命令killall命令非常强大,它支持通过进程名而不是进程号来结束进程。killall命令也支持通配符,这在系统因
负载过大而变得很慢很慢时很有用。

[jingpan@localhost~]$killallhttpd*

上便的命令结束了所有以http开头的进程,比如ApacheWeb服务器的httpd服务。

4-2监测磁盘空间

4.2.1挂载存储媒体
1.mount命令默认情况下,mount命令会输出当前系统上挂载的设备列表:[root@localhostjingpan]#mount
/dev/sda1on/typeext4(rw)
procon/proctypeproc(rw)
sysfson/systypesysfs(rw)
devptson/dev/ptstypedevpts(rw,gid=5,mode=620)
tmpfson/dev/shmtypetmpfs(rw)
noneon/proc/sys/fs/binfmt_misctypebinfmt_misc(rw)
gvfs-fuse-daemonon/root/.gvfstypefuse.gvfs-fuse-daemon(rw,nosuid,nodev)
/home/kvm/centos72.isoon/mnttypeiso9660(rw,loop=/dev/loop0)
[jingpan@localhost~]#mount-tiso9660-oloopcentos72.iso/mnt
mount命令会将镜像centos72.iso文件当做真实cd来挂载,用户就能访问它的文件系统了。
2.umount命令
umount命令支持通过设备文件或者是挂载点来指定卸载的设备。如果有任何程序正在使用
设备上的文件,系统就不会允许你来卸载它。
[root@localhostjingpan]#umount/home/kvm/centos72.iso
umount:/mnt:deviceisbusy.
(Insomecasesusefulinfoaboutprocessesthatuse
thedeviceisfoundbylsof(8)orfuser(1))


如果在卸载设备时,系统提示设备繁忙,无法卸载设备,通常是有进程还在访问该设备或使用该设备上的文件。这时可用lsof命令获得使用它的进程信息,然后在应用中停止使用该设备或停止该进程。

[root@localhostjingpan]#lsof/mnt
COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME
bash8461jingpancwdDIR7,0204821312/mnt/images
4.2.2    使用df命令
有时你需要知道在某个设备上还有多少磁盘空间。df命令就是用来轻松查看所有已挂载磁盘的使用情况
[root@localhostjingpan]#df
Filesystem1K-blocksUsedAvailableUse%Mountedon
/dev/sda1453034512180621164119528765%/
tmpfs20269047620268281%/dev/shm
df命令有一些命令行参数可用,但基本上你不会用到。一个常用的参数是-h.它会把输出中的
磁盘空间按人类可读的形式显示,通常用M来替代兆字节,用G替代吉字节:[root@localhostjingpan]#df-h
FilesystemSizeUsedAvailUse%Mountedon
/dev/sda1433G18G393G5%/
tmpfs2.0G76K2.0G1%/dev/shm


4.2.3使用du命令

 通过df命令,你很容易发现哪个磁盘就快要没存储空间了。系统管理员面临的下一个总量是发生这种情况时怎么办。
另一个有用的命令是du命令。du命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。这是
用来判断你系统上某个目录下是不是有超大文件的快速方法。
默认情况下,du命令会显示当前目录下的有的文件、目录和子目录的磁盘使用情况,它会以磁盘的块为单位来显示每个
文件或目录占用了多大存储。在标准的主目录中,这个输出会是一个比较长的列表。下面是du命令的部分输出:[root@localhostetc]#du
20./redhat-lsb
4./gnupg
4./sssd
20./PackageKit
12./sysconfig/modules
12./sysconfig/cbq
8./sysconfig/networking/profiles/default
12./sysconfig/networking/profiles
4./sysconfig/networking/devices
20./sysconfig/networking
4./sysconfig/console
232./sysconfig/network-scripts
520./sysconfig
3960./selinux/targeted/modules/active/modules
13100./selinux/targeted/modules/active
13104./selinux/targeted/modules
8284./selinux/targeted/policy
4./selinux/targeted/logins
28./selinux/targeted/contexts/users
592./selinux/targeted/contexts/files
676./selinux/targeted/contexts
22080./selinux/targeted
22100./selinux
56./xinetd.d
4./dbus-1/session.d
156./dbus-1/system.d
172./dbus-1
8./dhcp/dhclient-exit-hooks.d
12./dhcp/dhclient.d
24./dhcp
8./cron.monthly
8./audit/rules.d
20./audit
4./alternatives
4./terminfo
4./maven/fragments
12./maven
4./cgconfig.d
28./yum.repos.d
84./init
24./ld.so.conf.d
8./rsyslog.d
16./latrace.d/sysdeps/x86_64
20./latrace.d/sysdeps
168./latrace.d
4./lsb-release.d
16./httpd/conf.d
56./httpd/conf
76./httpd
8./kde/env
12./kde
12./oddjobd.conf.d
40./bash_completion.d
4./hal/fdi/preprobe
4./hal/fdi/policy
4./hal/fdi/information
16./hal/fdi
20./hal
4./cron.weekly
4./ssl
8./prelink.conf.d
12./alsa
8./portreserve
8./bluetooth
8./avahi
8./purple
144./postfix
4./skel/.gnome2
4./skel/.mozilla/plugins
4./skel/.mozilla/extensions
12./skel/.mozilla每行输出开始地方的数值,是每个文件或目录占用的磁盘块数。注意这个列表昌从一个目录层级的最底部开始的,
然后按文件、子目录、目录逐级向上。
du命令(不加参数,用默认参数)作用并不大。
-c:显示所有已列出文件总的大小。
-h:按人类可读的格式输出大小,
-s:显示每个输出参数的总计。

4.3处理数据文件

当你有大量数据时,通常很难处理这些信息及提取有用信息。Linux系统提供了一些命令行工具秋处理大量数据。本节将会介绍每个系统管理员以及每个
日常Linux用户都应该知道的、能叫生活轻松的基本命令。

4.3.1排序数据
处理大量数据时的一个常用命令是sort命令。从
默认情况下,sort命令按你为这个会话指定的默认语言的排序规则来对对文本文件中的数据进行排序。
[root@localhostch4]#catfile1
one
two
three
four
five
[root@localhostch4]#sortfile1
five
four
one
three
two

相当简单。但事情并非总是像看起那么简单。看下面的例子:
[root@localhostch4]#catfile2
1
2
100
45
3
10
145
75
[root@localhostch4]#sortfile2
1
10
100
145
2
3
45
75
你期望这些数字能按值排序,但叫你失望了。默认情况下,sort命令会把数字当做字符而执行标准的字符排序,产生的输出可以能根本不是你要的。解决这个问题可用-n参数,它会告诉sort命令把数字识别成数字而不是字符,并且将它们按值排序:
[root@localhostch4]#sort-nfile2
1
2
3
10
45
75
100
145
现在的结果是不是好多了?另一个常用的参数是-M,按月排序。Linux的日志文件经常会在每行的起始位置有一个时间戳,用来表明事件是什么时候发生的:

Nov0613:52:10Installed:tigervnc-server-1.1.0-24.el6.x86_64
如果将含有时间戳日期的文件按默认的排序方法来排序,会得到类似于下面的结果:
[root@localhostch4]#sortfile3
Apr
Aug
Dec
Feb
Jan
Jul
Jun
Mar
May
Nov
Oct
Sep


-n参数在排序数值时非常有用,比如du命令的输出:
[root@localhostjingpan]#du-s*|sort-rn
104424net-snmp-5.7.2
69784boot
18192nginx-1.12.2
6136net-snmp.tar.gz
1492collector
664c
376awk
80linux_c
68c_v
60c_example
32linux
32collector-linux.zip
12test
8snmp_install.sh
4桌面
4音乐
4下载
4文档
4图片
4视频
4模板
4公共的
4rpm_check.txt
4LICENCE.KEY
4ch5
4centos7.xml
4centos74.xml
注意,-r参数让结果按降序输出,这样就更容易看到目录下的哪些文件占用空间最多。
4.3.2搜索数据你会经常需要大文件中找一行数据,而这行数据埋藏在文件的中间。这时,你并不需要人工看完整个文件,你只需要grep命令
来帮查找。
grep命令会到输入中或你指定的文件中查找包含匹配指定模式的字符行。grep的输出就是包含了匹配模式的行。[jingpan@localhostch4]$grepthreefile1
three
[jingpan@localhostch4]$greptfile1
two
three
[jingpan@localhostch4]$第一个例子在文件file1中搜索能匹配模式three的文本,grep命令输出了匹配了该模式的行。
第二个例子在文件file1中搜索能匹配模式t的文本。这个例子里,file1中有两行匹配了指定的模式,两行都输出了。
如果要进行反向搜索(输出不匹配该模式的行),可加-v参数:[jingpan@localhostch4]$grep-vtfile1
one
four
five
[jingpan@localhostch4]$v如果要显示匹配模式的行所在的行号,可加-n参数:[jingpan@localhostch4]$grep-ntfile1
2:two
3:three如果只要知道多少行包含有匹配的模式,可以-c参数:[jingpan@localhostch4]$grep-ctfile1
2如果要指定多于一个匹配模式,得到满足两个模式中任意一个的所有结果,用-e参数来指定每个模式:[jingpan@localhostch4]$grep-et-effile1
two
three
four
five这个例子输出了含有字符t或f的所有行。
默认情况下,grep命令用基本的Unix风格正则表达式来匹配模式。Unix风格正则表达式采用特殊字符来定义怎样查找匹配的
模式。
这里有个简单在grep搜索中使用正则表达式的例子。[jingpan@localhostch4]$grep[tf]file1
two
three
four
five正则表达式中的方括号个表明grep应该搜索包含t或者f字符的匹配。如果不用正则表达式,grep就会搜索匹配字符串tf的文本。
4.3.3压缩数据
1.bzip2工具
默认情况下,bzip2命令尝试压缩原始文件,并用压缩后的文件(同样的文件名后加.bz2扩展)替换它:[root@localhostch4]#ls-l
总用量248
-rw-r--r--1rootroot242月2617:17file1
-rw-r--r--1rootroot232月2617:19file2
-rw-r--r--1rootroot482月2710:42file3
-rwxr-xr-x1rootroot2390002月2810:02myprog
[root@localhostch4]#bzip2myprog
[root@localhostch4]#ls-l
总用量124
-rw-r--r--1rootroot242月2617:17file1
-rw-r--r--1rootroot232月2617:19file2
-rw-r--r--1rootroot482月2710:42file3
-rwxr-xr-x1rootroot1118802月2810:02myprog.bz2
bzip2命令自动用压缩后的bzip2文件替换了原文件,.bz2扩展名说明我们采用什么技术进行压缩的。
解压文件用bunzip2命令:[root@localhostch4]#bunzip2myprog.bz2
[root@localhostch4]#ls-l
总用量248
-rw-r--r--1rootroot242月2617:17file1
-rw-r--r--1rootroot232月2617:19file2
-rw-r--r--1rootroot482月2710:42file3
-rwxr-xr-x1rootroot2390002月2810:02myprog如你所见,解压后的文件又回到了原文件大小。如果压缩了文本文件,你无法再用cat、more或less
命令来查看文件的内容。这时,你可以用bzcat命令:[root@localhostch4]#bzip2file1
[root@localhostch4]#ls
file1.bz2file2file3myprog
[root@localhostch4]#bzcatfile1.bz2
one
two
three
four
fivebzcat命令显示了压缩文件里的文本内容,而并不需要解压文件。
2.gzip工具
到目前为止,Linux上最流行的文件压缩工具就是gzi工具了。gzip包是GNU项目发起的试图替代原来Unix
的compress工具的压缩工具。
这些工具基本上跟bzip2工具的用法一样:[root@localhostch4]#gzipmyprog
[root@localhostch4]#ls-lmy*
-rwxr-xr-x1rootroot1148112月2810:02myprog.gz
[root@localhostch4]#gzip命令会压缩命令行指定的文件。你也可以在命令行指定几个文件名甚至用通配符来一次压缩几个文件:
[root@localhostch4]#gzipmy*
[root@localhostch4]#ls-lmy*
-rwxr-xr-x1rootroot1148132月2811:24myprog.c.gz
-rwxr-xr-x1rootroot1148112月2810:02myprog.gz
-rw-r--r--1rootroot312月2811:25myscript__.gz
-rw-r--r--1rootroot292月2811:25myscript.gz
gzip命令会压缩该目录中匹配通配符的每个文件。
3zip工具
zip工具的强大之处在于,它能将整个目录下的文件都压缩进单个文件。这让它成为归档整个目录结构的理想工具。[root@localhostlinux]#zip-rch4.zipch4
adding:ch4/(stored0%)
adding:ch4/myprog.gz(deflated0%)
adding:ch4/myscript.gz(deflated17%)
adding:ch4/file2(deflated4%)
adding:ch4/file3(deflated2%)
adding:ch4/myprog.c.gz(deflated0%)
adding:ch4/myscript__.gz(deflated16%)
adding:ch4/file1.bz2(stored0%)
[root@localhostlinux]#ls这个例子创建了一个叫ch4.zip的zip文件,并递归目录ch4把找到的每个文件和目录都加进
该zip文件。从输出可以看出。不是所有存进该zip文件的文件都能够被压缩。zip工具自动决定
针对每个单独文件的压缩类型。
4.3.4归档数据
目前,Unix和Linux上最广泛使用的归档工具是tar命令[jingpan@localhostlinux]$tar-cvfch4.tarch4/
ch4/
ch4/myprog.gz
ch4/myscript.gz
ch4/file2
ch4/file3
ch4/myprog.c.gz
ch4/myscript__.gz
ch4/file1.bz2上面命令创建了一个含有ch4目录内容的ch4.tar的归档文件。[jingpan@localhostlinux]$tar-tfch4.tar
ch4/
ch4/myprog.gz
ch4/myscript.gz
ch4/file2
ch4/file3
ch4/myprog.c.gz
ch4/myscript__.gz
ch4/file1.bz2列出tar文件ch4.tar的内容,但并不解压谁的。[root@localhostlinux]#tar-xvfch4.tar
ch4/
ch4/myprog.gz
ch4/myscript.gz
ch4/file2
ch4/file3
ch4/myprog.c.gz
ch4/myscript__.gz
ch4/file1.bz2如果tar文件是从一个目录结构创建的,那整个目录结构都会在当前目录下重新创建。
下载了开源软件之后,你会经常看到文件名以.tgz结尾。这些是gzip压缩过的tar文件,可以用命令
tar-zxvffilename.tgz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: