tar解压/压缩
常用参数:
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rfall.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar -cvfjpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar -czfjpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjfjpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZfjpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar ajpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zipjpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar -xvffile.tar //解压 tar包
tar -xzvffile.tar.gz //解压tar.gz
tar -xjvffile.tar.bz2 //解压 tar.bz2
tar -xZvffile.tar.Z //解压tar.Z
unrar efile.rar //解压rar
unzipfile.zip //解压zip
总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
du命令
命令功能说明:统计目录(或文件)所占磁盘空间的大小。
常用参数:
-a或-all 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或–dereference-args 显示指定符号连接的源文件大小。
-h或–human-readable以K,M,G为单位,提高信息的可读性。
-H或–si 与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
-k或–kilobytes以1024bytes为单位。
-l或–count-links重复计算硬件连接的文件。
-L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或–megabytes以1MB为单位。
-s或–summarize 仅显示总计,即当前目录的大小。
-S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。
-x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
–exclude=<目录或文件> 略过指定的目录或文件。
–max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
–help 显示帮助。
–version 显示版本信息。
实例:
1> 要显示一个目录树及其每个子树的磁盘使用情况
du /home/linux
这在/home/linux目录及其每个子目录中显示了磁盘块数。
2> 要通过以1024字节为单位显示一个目录树及其每个子树的磁盘使用情况
du -k /home/linux
这在/home/linux目录及其每个子目录中显示了 1024 字节磁盘块数。
3> 以MB为单位显示一个目录树及其每个子树的磁盘使用情况
du -m /home/linux
这在/home/linux目录及其每个子目录中显示了 MB 磁盘块数。
4> 以GB为单位显示一个目录树及其每个子树的磁盘使用情况
du -g /home/linux
这在/home/linux目录及其每个子目录中显示了 GB 磁盘块数。
5>查看当前目录下所有目录以及子目录的大小:
du -h .
“.”代表当前目录下。也可以换成一个明确的路径
-h表示用K、M、G的人性化形式显示
6>查看当前目录下user目录的大小,并不想看其他目录以及其子目录:
du -sh user
-s表示总结的意思,即只列出一个总结的值
du -h –max-depth=0 user
–max-depth=n表示只深入到第n层目录,此处设置为0,即表示不深入到子目录。
7>列出user目录及其子目录下所有目录和文件的大小:
du -ah user
-a表示包括目录和文件
8>列出当前目录中的目录名不包括xyz字符串的目录的大小:
du -h –exclude=’*xyz*’
9>想在一个屏幕下列出更多的关于user目录及子目录大小的信息:
du -0h user
-0(杠零)表示每列出一个目录的信息,不换行,而是直接输出下一个目录的信息。
10>只显示一个目录树的全部磁盘使用情况
du -s /home/linux
在查看目录的使用情形时,我们可以将输出结果导到 sort 指令进行排序,以了解哪个档案用了最多的空间:
du /etc | sort -nr | more
df命令
用于显示磁盘分区上的可使用的磁盘空间,默认显示单位为KB
常用参数:
a:显示全部的档案系统和各分割区的磁盘使用情形
i:显示i -nodes的使用量
k:大小用k来表示 (默认值)
t:显示某一个档案系统的所有分割区磁盘使用量
x:显示不是某一个档案系统的所有分割区磁盘使用量
T:显示每个分割区所属的档案系统名称
实例:
1、查看系统磁盘设备,默认是KB为单位:
[root@localhost wht]# df
Filesystem 1K-blocks Used Available Use%Mounted on
/dev/sda2 18175756 9643208 7602604 56% /
tmpfs 515208 228 514980 1% /dev/shm
/dev/sda1 289293 34622 239311 13% /boot
.host:/ 12583714428773848 97063296 23% /mnt/hgfs
2、使用-h选项以KB以上的单位来显示,可读性高:
[root@localhost wht]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 9.2G 7.3G 56% /
tmpfs 504M 228K 503M 1% /dev/shm
/dev/sda1 283M 34M 234M 13% /boot
.host:/ 121G 28G 93G 23% /mnt/hgfs
3、查看全部文件系统:
[root@localhost wht]# df -a
Filesystem 1K-blocks Used Available Use%Mounted on
/dev/sda2 18175756 9643208 7602604 56% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
tmpfs 515208 228 514980 1% /dev/shm
/dev/sda1 289293 34622 239311 13% /boot
none 0 0 0 - /proc/sys/fs/binfmt_misc
.host:/ 12583714428773848 97063296 23% /mnt/hgfs
vmware-vmblock 0 0 0 - /var/run/vmblock-fuse
sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs
nfsd 0 0 0 - /proc/fs/nfsd
gvfs-fuse-daemon 0 0 0 - /root/.gvfs
4、查看inode
[root@localhost wht]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 1163264 277017 886247 24% /
tmpfs 128802 6 128796 1% /dev/shm
/dev/sda1 76912 38 76874 1% /boot
.host:/ 0 0 0 - /mnt/hgfs
find命令
查找
使用格式 : find [指定查找目录] [查找规则] [查找完后执行的action]
[指定查找目录]
例如:
这里要注意的是目录之间要用空格分开
[查找规则]
(1)根据文件名查找
# -name //根据文件名查找(精确查找)
# -iname //根据文件名查找,但是不区分大小写
这里另外介绍下文件名通配的知识
*表示 通配任意的字符
?表示 通配任意的单个字符
[ ] 表示 通配括号里面的任意一个字符
(2)根据文件所属用户和组来查找文件
# -user //根据属主来查找文件
# -group //根据属组来查找文件
(3)根据uid 和 gid来查找用户
#find /tmp -uid 500 //查找uid是500 的文件
#find /tmp -gid 1000// 查找gid是1000的文件
(4)-a and -o and –not的使用
# -a 连接两个不同的条件(两个条件必须同时满足)
#-o 连接两个不同的条件(两个条件满足其一即可)
#-not 对条件取反的
(5)根据文件时间戳的相关属性来查找文件
我们可以使用stat命令来查看一个文件的时间信息 如下:
#-atime
#-mtime
#-ctime
#-amin
#-mmin
#-cmin
所以这里atime,mtime,ctime就是分别对应的“最近一次访问时间”“最近一次内容修改时间”“最近一次属性修改时间”,这里的atime的单位指的是“天”,amin的单位是分钟
#find /tmp –atime +5 //表示查找在五天内没有访问过的文件
#find /tmp -atime -5 //表示查找在五天内访问过的文件
(6)根据文件类型来查找文件
-type
f // 普通文件
d //目录文件
l //链接文件
b //块设备文件
c //字符设备文件
p //管道文件
s //socket文件
(7)根据大小来查找文件
-size
#find /tmp -size 2M //查找在/tmp 目录下等于2M的文件
#find /tmp -size +2M //查找在/tmp 目录下大于2M的文件
#find /tmp -size -2M //查找在/tmp 目录下小于2M的文件
(8)根据文件权限查找文件
-perm
#find /tmp -perm 755 //查找在/tmp目录下权限是755的文件
#find /tmp -perm +222 //表示只要有一类用户(属主,属组,其他)的匹配写权限就行
#find /tmp -perm -222 //表示必须所有类别用户都满足有写权限
(9)-nouser and -nogroup
#find / -nogroup –a–nouser //在整个系统中查找既没有属主又没有属组的文件(这样的文件通常是很危险的,作为系统工程师的我们应该及时清除掉)
[查找完执行的action]
#-print //默认情况下的动作
#-ls //查找到后用ls 显示出来
#-ok [commend] //查找后执行命令的时候询问用户是否要执行
# -exec[commend] //查找后执行命令的时候不询问用户,直接执行
这里要注意{}的使用:替代查找到的文件
#find /tmp -atime +30 –execrm –rf {} \; #删除查找到的超过30天没有访问过文件
我们也可以使用xargs来对查找到的文件进一步操作
alias命令
功能说明:设置指令的别名。
语 法:alias[别名]=[指令名称]
参 数 :若不加任何参数,则列出目前所有的别名设置。
如果你想给每一位用户都生效的别名,请把alias la='ls -al' 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件/etc/bashrc和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用.
ps命令
功能说明:查看当前进程状态。
参数:
-A :所有的进程均显示出来,与 -e 具有同样的效用;
-a :显示现行终端机下的所有进程,包括其他用户的进程;
-u :以用户为主的进程状态;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
特别说明:
由于 ps 能够支持的系统类型相当的多,所以他的参数多的离谱!
而且有没有加上 - 差很多!详细的用法应该要参考 man ps 喔!
1、不加参数执行ps命令
[root@localhostwht]# ps
PID TTY TIME CMD
13424pts/3 00:00:00 ps
31391pts/3 00:00:00 bash
[root@localhostwht]#
PID: 运行着的命令(CMD)的进程编号
TTY: 命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD: 该进程所运行的命令
2、显示所有当前进程
使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程。
[root@localhost wht]# ps –ax
这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。
3、根据用户过滤进程
在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令:
[root@localhost wht]# ps -u pungki
4、通过cpu和内存使用来过滤进程
也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:
[root@localhost wht]# ps -aux | less
当结果很长时,我们可以使用管道和less命令来筛选。
默认的结果集是未排好序的。可以通过 --sort命令来排序。
根据 CPU 使用来升序排序
[root@localhost wht]# ps -aux --sort -pcpu| less
根据内存使用来升序排序
[root@localhost wht]# ps -aux --sort -pmem| less
我们也可以将它们合并到一个命令,并通过管道显示前10个结果:
[root@localhost wht]# ps -aux --sort-pcpu,+pmem | head -n 10
5、通过进程名和PID过滤
使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:
[root@localhost wht]# ps -C getty
如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表:
[root@localhost wht]# ps -f -C getty
6、根据线程来过滤进程
如果我们想知道特定进程的线程,可以使用-L 参数,后面加上特定的PID。
[root@localhost wht]# ps -L 1213
7、树形显示进程
有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。
[root@localhost wht]# ps -axjf
或者可以使用另一个命令。
[root@localhost wht]# pstree
8、显示安全信息
如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数:
[root@localhost wht]# ps -eo pid,user,args
参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User 和 Args参数显示PID,运行应用的用户和该应用。
能够与-e 参数一起使用的关键字是args, cmd, comm, command, fname, ucmd, ucomm, lstart,bsdstart 和 start。
9. 格式化输出root用户(真实的或有效的UID)创建的进程
系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令:
[root@localhost wht]# ps -U root -u root u
-U 参数按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或 ID。真实用户即实际创建该进程的用户。
-u 参数用来筛选有效用户ID(EUID)。
最后的u参数用来决定以针对用户的格式输出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND这几列组成。
10. 使用PS实时监控进程状态
ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。
当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以将ps命令和watch命令结合起来。
[root@localhost wht]# watch -n 1 ‘ps -aux--sort -pmem, -pcpu’
如果输出太长,我们也可以限制它,比如前20条,我们可以使用head命令来做到。
[root@localhost wht]# watch -n 1 ‘ps -aux--sort -pmem, -pcpu | head 20’
这里的动态查看并不像top或者htop命令一样。但是使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。
举个例子,如果你只需要看名为'pungki'用户的信息,你可以使用下面的命令:
[root@localhost wht]# watch -n 1 ‘ps -aux-U pungki u --sort -pmem, -pcpu | head 20’
mount命令
功能说明:挂载
格式:mount [-参数] [设备名称] [挂载点]
参数:
-a 安装在/etc/fstab文件中类出的所有文件系统。
-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n 不把安装记录在/etc/mtab 文件中。
-r 讲文件系统安装为只读。
-v 详细显示安装信息。
-w 将文件系统安装为可写,为命令默认情况。
-t 指定设备的文件系统类型,常见的有:
ext2 linux目前常用的文件系统
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT/2000/XP的文件系统
auto 自动检测文件系统
-o 指定挂载文件系统时的选项,有些也可写到在/etc/fstab中。常用的有:
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user /nouser 允许/不允许一般用户挂载
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
remount 重新安装已经安装了的文件系统
loop 挂载回旋设备
需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。使用多个-o参数的时候,-o 只用一次,参数之间用半角逗号隔开:
CODE:
# mount –o remount,rw /
例如要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,这里就以hda5来举例说明:
CODE:
# mkdir /mnt/hda5 //创建hda5的目录作为挂载点,位置和目录名可自定义//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。
CODE:
# mount /dev/hda5 /mnt/hda5
这样就可以进入/mnt/hda5目录去访问分区中的资源了。
3. 为什么mount上分区后显示不了中文文件为问号/乱码?
显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。
CODE:
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般来说 mount –o iocharset=cp936/dev/hda5 /mnt/hda5 就可以解决问题了。
如果这样做了以后还有问题,请尝试UTF-8编码:
CODE:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
4. 为什么mount上去以后分区普通用户不可写?
mount时加上 –o umask=000 即可:
CODE:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
5. 为什么mount上去后的分区中的文件都变成短文件名了?
这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。
CODE:
# mount –t vat /dev/hda5 /mnt/hda5
6. 为什么不能mount ntfs分区?
这是内核不支持NTFS文件系统的原因,请重新编译内核或者安装内核的NTFS文件系统支持包,以使得内核有NTFS文件系统的支持。
7. 如何挂载U盘和mp3?
如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:
CODE:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
挂载即可。
8. 可以直接使用iso文件吗?
可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:
CODE:
# mkdir /mnt/iso
# mount –o loop linux.iso /mnt/iso
当然,挂载以后挂载点/mnt/iso也是只读的。
9. 我怎么不可以mount iso文件?
一般而言,大多数的发行版使用的内核均已将loop设备的支持编译进去了,但是也有没有的情况,所以请确保系统所使用的内核支持loop设备。
第二种情况是iso文件被放置到了NTFS或其它只读文件系统中了。挂载loop 设备必须要求挂载到一个可写的分区中,目前Linux内核对NTFS文件系统的写支持非常有限,请将iso文件复制到其它可写文件系统中后再挂载。
10. 如何挂载光驱和软驱
一般来说CDROM的设备文件是/dev/hdc,软驱的设备名是/dev/fd0
CODE:
# mkdir /mnt/cdrom
# mount /dev/hdc /mnt/cdrom //挂载光驱 //
# mkdir /mnt/floppy
# mount /dev/fd0 /mnt/floppy //挂载软驱 //
11. 为何挂载的CD-ROM不能显示中文文件?
使用 –o iocharset=cp936 选项一般能解决问题,否则使用utf-8编码。
CODE:
# mount –o iocharset=cp936 /dev/hdc /mnt/cdrom
12. 如何开机自动挂载分区?
每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到/etc/fstab文件中即可实现系统启动的自动挂载,例如对于/dev/hda5的自动挂载添加如下的行即可:
CODE:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
13. 如何挂载samba 分区?
CODE:
# mkdir /mnt/share
# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312//192.168.1.100/share/mnt/share
如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。
14. mount --bind是什么意思?
mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是
CODE:
# mount --bind olddir newdir
这个命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:
CODE:
# mount --move olddir newdir 即可。
如果mount --bind 也想写入fstab中的话格式如下:
CODE:
olddir newdir none bind 0 0
15. umount基本用法是?
譬如 /dev/hda5 已经挂载在/mnt/hda5上,用一下三条命令均可卸载挂载的文件系统
CODE:
# umount /dev/hda5
# umount /mnt/hda5
# umount /dev/hda5 /mnt/hda5
16. 为什么umount的时候老显示 device busy?
这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再umount。可能有时候用户搞不清除究竟是什么程序在访问设备,如果用户不急着umount,则可以用:
CODE:
# umount -l /mnt/hda5
来卸载设备。选项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。
方法一:
fuser -m -v /nfs_old/
用户 进程号 权限 命令
/nfs_old/: root 2699 ..c.. bash
root 2999 ..c.. su
如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。
kill -9 2699 2999
umount /nfs_old/
方法二:
umount -l /nfs_old/
方法三:
fuser -km /nfs_old/
stat命令
功能说明:Linux stat命令用于显示inode内容。stat以文字的格式来显示inode的内容。
[root@localhost wht]# stat appweb
File: `appweb'
Size: 4096 Blocks:8 IO Block: 4096 directory
Device: 802h/2050d Inode:284454 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-21 08:45:12.912696059 +0800
Modify: 2016-11-25 10:48:37.266999615 +0800
Change: 2016-11-25 10:48:40.456063999 +0800
说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat*查看这个目录所有文件的状态。
1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用more、cat等命令。ls、stat命令都不会修改文件的访问时间。
2、修改时间,修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。
3、状态改动时间。是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。
另个除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
ls -lc filename 列出文件的ctime (最后更改时间)
ls -lu filename 列出文件的atime(最后存取时间)
ls -l filename 列出文件的 mtime(最后修改时间)
在linux中stat函数中,用st_atime表示文件数据最近的存取时间(last accessedtime);用st_mtime表示文件数据最近的修改时间(last modifiedtime);使用st_ctime表示文件i节点数据最近的修改时间(last i-node's status changedtime)。
字段说明例子 ls(-l)
st_atime 文件数据的最后存取时间 read -u
st_mtime 文件数据的最后修改时间 write 缺省
st_ctime 文件数据的最后更改时间 chown,chmod -c
在linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。