使用stat命令在shell中读取文件状态(修改时间,大小,权限模式,磁盘占用)

通常我们通过ls 命令显示文件信息,查看目录信息时,再加上参数 -d 。这没有错,看总觉得不方便,尤其是不能显示文件修改时间,访问时间什么的,时间一列显示有时并不方便阅读。这种情况下,你需要的是stat命令,尤其适合查阅单个文件信息。

尤其是,在编写shell脚本时,stat绝对比从ls里面截取方便得多,而且更高的自由度!

stat命令简单示例

列表出文件的一系列摘要信息:

[root@localhost ~]# stat install.log
  File: "install.log"
  Size: 7730            Blocks: 16         IO Block: 4096   普通文件
Device: fd00h/64768d    Inode: 1048578     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-10-20 10:21:05.473712000 +0800
Modify: 2015-10-20 10:23:50.061712001 +0800
Change: 2015-10-20 10:23:56.028712002 +0800
[root@localhost ~]#

很自然,它不包含任何文件内容,事实上该命令读不出文件内容,它也不会去读。

查看指定目录的stat

[root@localhost ~]# stat .
  File: "."
  Size: 4096            Blocks: 8          IO Block: 4096   目录
Device: fd00h/64768d    Inode: 1048577     Links: 5
Access: (0550/dr-xr-x---)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-10-27 13:35:30.473108443 +0800
Modify: 2015-10-21 18:54:30.420109149 +0800
Change: 2015-10-21 18:54:30.420109149 +0800
[root@localhost ~]#

玩点高级一点的

上次访问时间:

[root@localhost ~]# stat -c %x install.log
2015-10-20 10:21:05.473712000 +0800

文件大小

[root@localhost ~]# stat -c %s install.log
7730

同时并格式化输出多个参数

$ stat --printf="%n %X %s" plan.jpg
plan.jpg 1445912536 197196

更多使用方法,参考联机帮助或手册

联机帮助:

[root@localhost ~]# stat --help
用法:stat [选项]... 文件...
Display file or file system status.

-L, --dereference     follow links
-Z, --context         print the SELinux security context
-f, --file-system     display file system status instead of file status
-c --format=格式      使用指定输出格式代替默认值,每用一次指定格式换一新行
--printf=格式     类似 --format,但是会解释反斜杠转义符,不使用换行作
输出结尾。如果您仍希望使用换行,可以在格式中
加入"\n"
-t, --terse           使用简洁格式输出
--help            显示此帮助信息并退出
--version         显示版本信息并退出

有效的文件格式序列(不使用 --file-system):

%a    八进制权限
%A   用可读性较好的方式输出权限
%b   计算已分配块数(参见%B)
%B   以字节为单位输出%b 所报告的每个块的大小
%C   SELinux 安全环境字符串
%d    十进制设备编号
%D    十六进制设备编号
%f    十六进制原始模式
%F    文件类型
%g    文件的属组ID
%G    文件的属组组名
%h    硬链接数量
%i    Inode 编号
%n    文件名
%N    如果对象是一个符号链接,显示引用到的其它文件名
%o    I/O 块大小
%s    总计大小,以字节为单位
%t    十六进制主设备类型
%T    十六进制子设备类型
%u    文件的属主ID
%U    文件的属主用户名
%x    上次访问时间
%X    从UNIX 元年起计的上次访问时间
%y    上次修改时间
%Y    从UNIX 元年起计的上次修改时间
%z    上次更改时间
%Z    从UNIX 元年起计的上次更改时间

有效的文件系统格式序列:

%a    非超级用户可用的剩余块数
%b    文件系统的总数据块数
%c    文件系统中文件节点总数
%d    文件系统中空闲文件节点数
%f    文件系统中空闲块数
%C    SELinux 安全环境字符串
%i    十六进制文件系统ID
%I    允许的文件名最大长度
%n    文件名
%s    块大小(用于快速传输)
%S    基本块大小(用于块计数)
%t    十六进制类型描述
%T    可读性较好的类型描述

注意:您的shell 内含自己的stat 程序版本,它会覆盖这里所提及的相应
版本。请查阅您的shell 文档获知它所支持的选项。

请向bug-coreutils@gnu.org 报告stat 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告stat 的翻译错误
要获取完整文档,请运行:info coreutils 'stat invocation'

电脑硬件配件比较等材料收集(cup,显卡等)

http://itianti.sinaapp.com/index.php/cpu

几个基准参考(个人用)

Intel Core i7-4790K @ 4.00GHz         11238             ¥2099
Intel Core i5-4690K @ 3.50GHz         7769              ¥1550
Intel Core i5-4690 @ 3.50GHz          7624              ¥1467
Intel Core i5-4590 @ 3.30GHz          7251              ¥1280
Intel Core i5-4460 @ 3.20GHz          6664              ¥1209

Intel Core i5-2520M @ 2.50GHz         3555
Intel Core i5-5250U @ 1.60GHz         3704
Intel Core i3-4170 @ 3.70GHz          5393
Intel 奔腾 E6500 @ 2.93GHz            1768

该网站(天梯排名)另有其它一系列比较数据,如硬盘,内存,手机拍照等,值得参考 http://itianti.sinaapp.com/index.php

显卡功耗  http://www.itocp.com/bbs/thread-77736-1-1.html

电源评估及选择原则  http://www.pc841.com/article/20141125-38354_all.html

http://detail.zol.com.cn/cpu/s1584/
http://detail.zol.com.cn/motherboard/s4695_s1281/
https://zh.wikipedia.org/wiki/Intel%E6%99%B6%E7%89%87%E7%B5%84%E5%88%97%E8%A1%A8
https://zh.wikipedia.org/wiki/Intel_Core_i5

坑啊!virtual box差分磁盘文件在修改虚拟机后会被清空!

被坑死了,下载一夜的文件,白下载了!

事情这样:
「背景」因为ssd空间较小,vbox里的win xp虚拟机,使用的动态差分硬盘:原始磁盘文件在sata盘上,差分文件放到ssd上,这样磁盘性能会比较好。虚拟硬盘设置的20G,比较小。
「发现」昨晚下载了几个大文件,在解压缩时,磁盘空间不够了,于是再分配一块新硬盘上去,机器重启后,发现系统竟然被还原了。查了磁盘文件,发现差分文件只有50M,这肯定不对。到处找,也没有。
「确认」为了验证一下,在v xp里做了一些文件修改,让磁盘差分文件大一点,然后把第二块盘从配置里移除,果然,

【161010补】之前看这篇草稿,想完成并发布之,但没动。一个主要原因是,仔细想想,vbox这样的设定,其实是合理的。怪自己当时的自作聪明。

本文是以前一次悲惨经历的记录。在草稿箱里放了1年多,最近整理博客看其更新时间为 2015年9月12日 @ 09:05,这么久都没有继续写,大概以后也不会续写,直接发出来算了(2016-10-10 16:46)。

firefox扩展,使用中,已禁用的

用了好几年的firefox,还在用的扩展,只包括使用中的,禁用的忽略了吧,删除的自然更不用管了。主要是现在的浏览器越来越膨胀,只打开几个页面,使用内存就飙到两三G,扩展的内存占用也是惊人,所以尽量删除了。

其中,

Redirector 是对URL做自动转向的,使用正则表达式,目前只使用了个规则,即把维基百科的移动版子域 m. 转到桌面版本上,规则

^https?:\/\/(.*?)\.m\.(wikipedia|wikisource)\.org\/(.*)
https://$1.$2.org/$3

 


下面是 2019/06/17的版本

用了好几年的firefox,上面安装的扩展,包括使用中的,还有已经禁用的,删除的当然不在其中。

激活状态的扩展们

激活状态的扩展们

已经停用的part-1

已经停用的part-1

已经停用的part-2

已经停用的part-2

filezilla server手工修改配置文件及重加载生效/命令行参考等

使用filezilla server自带的配置工具,修改用户(或用户组)目录权限时,浏览文件是很麻烦的事情,要一级一级展开,尤其是目录比较深的时候。这时,推荐手工修改配置文件 FileZilla Server.xml 。

以下示例假定filezilla server安装在 D:\Program Files\FileZilla Server

安装目录下文件 FileZilla Server.xml 即配置文件。该文件结构很清晰,而且有良好排版。每个用户(或组),下面都有 <Permissions> ... </Permissions> 节点,其中每个目录是一个 Permission节点,其中多个option,定义几种操作的权限。

下面是几种常用的权限示例,需要增减目录配置时,直接复制相应的 <Permission ...>.....</Permission> 节点 ,修改其中目录 Dir 即可

<label>readonly 只读权限</label>

                <Permission Dir="E:\web\tools">
                    <Option Name="FileRead">1</Option>
                    <Option Name="FileWrite">0</Option>
                    <Option Name="FileDelete">0</Option>
                    <Option Name="FileAppend">0</Option>
                    <Option Name="DirCreate">0</Option>
                    <Option Name="DirDelete">0</Option>
                    <Option Name="DirList">1</Option>
                    <Option Name="DirSubdirs">1</Option>
                    <Option Name="IsHome">0</Option>
                    <Option Name="AutoCreate">0</Option>
                </Permission>


<label>allaccess 所有权限,包括读写删除管理目录等</label>

                <Permission Dir="E:\web\tools">
                    <Option Name="FileRead">1</Option>
                    <Option Name="FileWrite">1</Option>
                    <Option Name="FileDelete">1</Option>
                    <Option Name="FileAppend">1</Option>
                    <Option Name="DirCreate">1</Option>
                    <Option Name="DirDelete">1</Option>
                    <Option Name="DirList">1</Option>
                    <Option Name="DirSubdirs">1</Option>
                    <Option Name="IsHome">0</Option>
                    <Option Name="AutoCreate">0</Option>
                </Permission>


<label>basic_write 常规的文件读写权限,不允许增删目录操作</label>

                <Permission Dir="E:\web\tools">
                    <Option Name="FileRead">1</Option>
                    <Option Name="FileWrite">1</Option>
                    <Option Name="FileDelete">1</Option>
                    <Option Name="FileAppend">1</Option>
                    <Option Name="DirCreate">1</Option>
                    <Option Name="DirDelete">0</Option>
                    <Option Name="DirList">1</Option>
                    <Option Name="DirSubdirs">1</Option>
                    <Option Name="IsHome">0</Option>
                    <Option Name="AutoCreate">0</Option>
                </Permission>


<label>no_access 无任何权限,包括读写文件,列出目录等</label>

                <Permission Dir="E:\web\tools">
                    <Option Name="FileRead">0</Option>
                    <Option Name="FileWrite">0</Option>
                    <Option Name="FileDelete">0</Option>
                    <Option Name="FileAppend">0</Option>
                    <Option Name="DirCreate">0</Option>
                    <Option Name="DirDelete">0</Option>
                    <Option Name="DirList">0</Option>
                    <Option Name="DirSubdirs">0</Option>
                    <Option Name="IsHome">0</Option>
                    <Option Name="AutoCreate">0</Option>
                </Permission>

即如上

,修改后,不需要重启,只需在命令行下重新加载权限即可,示例

D:\Program Files\FileZilla Server>"FileZilla Server.exe" /reload-config

"FileZilla Server.exe"  不像unix程序一样自带help,经查官方手册,转载如下

-------------- "FileZilla Server.exe" Command-line arguments  ------------------
Starting and stopping the service:

/start
/stop

Installing the service for manual startup:

/install

Installing the service for start at boot:

/install auto

Uninstalling service:

/uninstall

Reloading configuration at runtime:

/reload-config

--------------------------------

 

windows下filezilla server安装配置及安全加固

以  FileZilla_Server-0_9_41.exe 为例

1  安装
FileZilla_Server-0_9_41.exe

2  从开始菜单里停止Filezilla_server服务

3  到安装目录里改名备份(或直接删掉)文件 FileZilla server.exe
典型位置: "C:\Program Files (x86)\FileZilla Server" (64位机器上) 或 "C:\Program Files\FileZilla Server" (32位机器上)

4  从默认ansi编码的filezilla server补丁包里压缩出 FileZilla server.exe ,拷到如上安装目录里。

5  创建一个独立的windows用户、一个windows用户组,用于运行ftp服务,用户名为webftp
(默认情况下,windows服务以SYSTEM用户运行,几乎等同于管理员;这是重大安全隐藏,如果该服务有漏洞并被恶意利用,后果...)

6  到windows服务列表中,双击 "FileZilla Server FTP server",打开服务属性窗口 - 登录
“登录身份” - 选择 “此账户” - 浏览 - 选择到刚建立的独立用户webftp
回到“服务恢属性”窗口,输入账号密码,“应用”或“确定”

6  启动服务(从开始菜单或服务列表皆可),观察windows任务管理器中,进程"FileZilla server.exe" 的用户名是否是 webftp

7  修改将filezilla server安装目录权限:webftp用户有读取权限
只保留 SYSTEM, webftp, Administrators 三个用户的权限,其它删掉

修改安装目录中的 文件  "FileZilla Server.xml", "FileZilla Server Interface.xml" 权限,为webftp用户赋写入权限

8  windows默认对每个硬盘分区设置了较多权限,只保留administrator,system,users,其它删除(通常Users也可以删除)
(否则,权限极低的webftp用户将可以在相应目录的读取甚至写入的权限;或许是因为everyone用户的存在)

8  windows了防火墙,添加一条规则,按程序的规则添加规则(非按端口):allow_filezilla-server_in
新建入站规则- 规则类型:程序(P) - 此程序路径 - 浏览到 FileZilla server.exe - 允许连接

------------------------------------
* 关于ftp目录的权限设置
对于需要通过ftp管理(包括读取或删除写入等)的所有目录(文件)
检查是否有不该买有的权限,最好是严格按照“最低权限”原则进行设置。
对这些目录(文件),根据需要,赋给ftp用户权限,至少需要一个读取权限。
如果不需要通过ftp删除的文件(夹),可以不赋修改写入权限

linux下tar命令的奇葩用法(可用来保留目录修改时间的复制整个目录)

linux下tar命令的奇葩用法:
tar -cvf - /etc | tar -xvf -

其中 /etc 可以改成任何需要备份的目录
以前在鸟哥linux里 http://linux.vbird.org/linux_basic/0240tarcompress.php#tar 见到的,当时不知道有什么用:这不就是cp -r,干吗写这么啰嗦。原来它可“原封不动”的备份,包括文件目录的修改时间;cp -r复制出来的目录修改时间是当前时间。要将一个目录复制一下,可又想保留目录修改时间(这是时间非常有用),之前是tar打包的,用的时候再解开(或当场就解开,并删除tar包);突然意识到,tar的这个奇葩用户正是所需!

 

一些vps商收集帖

http://www.123systems.net/

4刀起

 

还有一个性价比较高的urpad
conoha,
https://www.conoha.jp/zh
从某群得知,其人从linode日本转到这家,有中文页面
http://lowendstock.com/
一个国外网站,收集了一系列vps商,有基本配置、价格、存货、好差评等信息比较
2sync ingress群lori使用的日本vps,15刀起,据说网络质量较好。 171122

供centos用的yum源(redhat, scientific)/不定期更新

简介

redhat/centos系列是追求稳定性的改造版,官方收纳的软件包很有限。实际使用中,我们要么自己编译,要么使用第三方编译好的二进制版;为简便起见我们常常选择后者。第三方yum源纳入包的标准不一,有些追求稳定,像epel,有些则求新。对于求稳定的朋友,建议安装过需要的软件后,卸载(可以将.epo文件改名备份)这些第三源,以免造成系统包被替换。像epel这样连centos官方都推荐的源,还有nginx官方源这种只有单一少数几个包的源,可以长期保留。

epel

这个不用多说了。

sclo(sclo-rh)

redhat/centos本身附带的一个源,不过默认没有安装。  yum install centos-release-scl

它包含了一系列版本较新的软件包,将安装在/opt/rh目录中,因此可以不影响系统本身的包。比如python, nodejs, perl, go等,可参看 http://mirrors.ustc.edu.cn/centos/7/sclo/x86_64/rh/Packages/r/

elrepo

elrepo 支持centos/redhat 5,6,7系列,大量的内核模块源,如hfsplus支持等。

在yum.repo配置里,部分选项默认没有启用,需要自行启用

http://elrepo.org/tiki/About

li.nux.ro/nux

目前有rhel/centos6及7两个版本的rpm/yum源,它需要依赖epel源。

使用说明,简洁,不啰嗦,http://li.nux.ro/repos.html

rpmfusion

(待补充)

atrpms

据说atrpms会替换系统包,毕竟rhel/epel的版本经常太老

更多参考CentOS官方wiki文档 https://wiki.centos.org/zh/AdditionalResources/Repositories