Linux下禁止删除某文件

由于某种特殊要求,某个程序必须以root权限运行,但我又不想让它修改或者删除某个文件,怎么办呢?
之前一直折腾chmod和chown,但root权力太大了,不管怎么设置权限,root都能改。
在网上搜索了一下才知道Linux下有个命令chattr,它是修改文件在磁盘上的属性。通过-i可以实现我想要的功能。

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

属性值:
A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:当dump程序执行时,该文件或目录不会被dump备份。
D:检查压缩文件中的错误。
i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
t:文件系统支持尾部合并(tail-merging)。
X:可以直接访问压缩文件的内容。

参数:
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。

Linux流量监控工具iftop

介绍

iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。

安装

wget http://linux.linzhihao.cn/shell/iftop.sh
sh iftop.sh

实例

默认是监控第一块网卡的流量

iftop

监控eth1

iftop -i eth1

直接显示IP, 不进行DNS反解析

iftop -n 

直接显示连接埠编号, 不显示服务名称:

iftop -N

显示某个网段进出封包流量

iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0

进入iftop的命令
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。

一生的故事

The meaning behind the game :

游戏背后的深意:
The world never stops moving representing very well the fact that time doesn't stop to wait for us . A clock on the
游戏的背景不会停止运动,这很好的表达了时间不会停下来等我们。背景上的时钟

background not only spins faster as you grow but also shrinks representing how closer to death we get with every
用转速来表示你的成长速度,同时用缩小的方式表示我们一步步迈向死亡。
passing day , we are running out of time .The world also gets faster as you reach your teenage and adult years
时间会在你到达青少年和成人时期变快
since those years can be very agitated . In the teen stage you always have the option of going either one way or the
因为这些时期充满了激情。在青少年阶段,你在关卡中会遇到各种路线分支,这代表了我们在青少年时期有诸多选择。
other representing how much choice is put in front of teenagers .Two kinds of life are represented on each side but
在关卡中,共有两种生活方式,你可以选择其中任何一种,也可以在一种路线中的任何时期转换到另外一种,但无论你的选择是什么
you can always go from one side to the other and no matter how you go about it the result is always the same , you
结果总是相同,你会变成一个自力更生的成年人。
will become an adult and will enter the laboring world . At this point swimming is introduced and this swimming
在成年人阶段,游泳这项能力被添加到了游戏中。你会注意到泳池
takes place in pools full of money . Money suddenly becomes a part of everything we do and it doesn't matter how
总是充满了钱。一瞬间钱变成了生命全部,不管我们喜欢不喜欢钱,
much we don't like it we simply cant live without money . The pools are there to represent how easy it could be to
我们没法离开它来生活。泳池是一个象征,在泳池中溺死
drawn in financial problems plus all the things that are going on at the same time during the adult years , like
象征着我们在成年人阶段很容易就因为
keeping up with your job , getting married , what if children come , pay bills , pay the house ,pay the car ,pay pay
我们的职业、结婚、不管有没有孩子、账单、房贷、车贷、各种花费使我们陷入财务问题当中。
pay . Is very suffocating . Then comes the middle age man years , at this point the game starts moving slower , not
然后我们来到了中年阶段,在这个阶段,游戏会慢慢变慢
because life is getting easier on you but because you start seeing yourself limited , you are getting old , health
不是因为生活变得更容易,而是因为你看到了自己的年龄限制了自己。你慢慢变老,
is getting bad and maybe you CAN do a lot of the things that you used to but it now takes extra effort . This
健康变得越来越差。你曾经能轻易做到的事情花费了你极大的经历。这些
limitations are represented by blocks that you have to push out of the way sometimes even using them to reach a
限制由阻挡你的方块来表示,你必须将这些方块用力推走,有些时候利用方块来到达
certain place because you have to work around with your limitations . After this you simply reach a very old age in
特定区域,因为你必须带着你的年龄带来的限制生活。到了老年阶段。
which you can do as much as when you were a baby , just move left and right gameplay wise , and someone is actually
你能做的事情就比你还是个小孩的时期多不了多少,只能左右移动,你甚至必须
doing this for you since you are on a wheel chair . At this point you are not very far from dying so this is a very
依靠轮椅才能做到这点。在这个时期,你距离死亡已经不太遥远,
short stage .Once you reach the final ladder you no longer have control over the character , the clock starts
一旦当你碰到了最后的梯子。就再也不能控制你自己。钟表会向后
spinning faster and backwards and you will start having flashbacks until you reach your tomb at which point the
转的飞快,屏幕背景将会闪现出你经历的过的一生。当你到达了你的坟墓,
clock stops , the screen stops ,your last memories fade away , is all over , you are dead .
时钟停止,屏幕停止,你最后的记忆也随风飘散。一切都结束了,你的生命结束了。

在线FLASH版:http://files2.17173.com/__flash/2011/04/19/5ff.swf
下载地址:链接:http://pan.baidu.com/s/1mgyX7Ig 密码:iihq

虚幻4学习笔记

关于本文

在学习和使用虚幻4引擎的过程中,不断地遇到了各种问题,也不断地找到了解决办法,为了防止以后遗忘,现将一些经验记录下来,本文将持续更新。

正文

  1. 关于光照UV的问题
    在UE4中,引擎默认将使用模型的第二个UV通道作为光照UV,制作光照UV时,需在3dsMax或者Maya中新建一个通道ID为2的UV,为了使静态光照自然,除了不要让VU重叠以外,还需要尽可能地将相邻面的UV范围移动到一块,尽可能保持相接。

- 阅读剩余部分 -

FastCGI下ZendOpcache很费内存

刚刚在nginx的php下配置了ZendOpcache,结果重新加载PHP的时候,部分php-fpm进程无法启动,所有网站都是502错误,我开始以为是php.ini配置有问题,搞了半天,结果一看内存使用,卧槽,直接爆满了。

然后推敲了一下才发现这个问题:

PHP-FPM模式下,即便是同一个网站,PHP进程也可能有很多个。如果我把ZendOpcache的内存缓存大小设置为64M,那么3个进程就要占用192MB了。。。

而我用的是AMH面板,默认一个网站分配3个PHP-FPM进程,而我那个VPS上放了6个小流量网站,总共就是18个进程,光是ZendOpcache缓存都要占用18*64=1152MB内存,而我的VPS只有1G内存,所以。。。PHP启动不了了。。

同一个网站,PHP的代码缓存重叠应该很多,但由于是多个进程,PHP进程之间的内存是独立的,造成同一个PHP文件的Code缓存可能会有多个内存副本(每个PHP进程一个),造成了很大的内存浪费。

apache好像就没有这个问题。

所以,如果你用nginx(比如你用的AMH)面板,那么当你使用内存缓存器的时候,一定要注意合理设置缓存大小,特别是那种一个VPS放多个网站的,稍不注意就502了。而对于只会用面板的小白而言,谨慎安装缓存器(包括zend,xcache等等),否则可能面板都进不去了。

另外说一下,AMH模块里面的那个ZendOpcache模块,安装以后缓存大小配置的是64M,所以安装之前你得先计算好你现在有多少网站,开了ZendOpcache要占多少内存,以免内存不足。