草庐IT

stat_definitions

全部标签

超时的 Linux stat 调用

有没有办法让Linuxstat系统调用超时?我使用的是分布式文件系统,理论上我所有的文件系统调用都应该得到及时响应,但实际上并非如此。在一段固定的时间后,我宁愿有一个超时和一个错误代码,也不愿继续挂起。我已经尝试在另一个线程中产生请求,但这与gdb有一些不希望的交互,并且是表达我真正想要的东西的一种非常迂回的方式:超时。 最佳答案 假设您正在使用C,并且您可以安全地设置SIGALARM处理程序,您可以使用与此类似的代码,只是使用不同的库调用:Canstatvfsblockoncertainnetworkdevices?Howtoha

Python:os.stat().st_size 给出的值与 du 不同

我正在创建一个实用程序,它将遍历目录并获取所有目录的子目录和文件的大小并存储该值。但是,尺寸计算不正确。这是我的类,它自动递归遍历所有子目录:classdirectory:'''Classthatautomaticallytraversesdirectoriesandbuildsatreewithsizeinfo'''def__init__(self,path,parent=None):ifpath[-1]!='/':#Addtrailing/self.path=path+'/'else:self.path=pathself.size=4096self.parent=parentsel

linux - 在 Linux 上,access() 是否比 stat() 快?

我会假设access()只是stat()的包装器,但我一直在谷歌搜索并找到foundsomeanecdotes关于用“更便宜”的访问调用替换统计调用。假设您只对检查文件是否存在感兴趣,访问速度是否更快?它是否完全因文件系统而异? 最佳答案 理论我对此表示怀疑。在内核的较低层中,access()和stat()调用之间没有太大区别,两者都执行查找操作:它们将文件名映射到dentry缓存和inode中(它是实际的内核结构,inode)。查找是一个缓慢的操作,因为您需要为路径的每个部分执行它,即对于/usr/bin/cat您将需要查找usr

linux - stat 命令输出中的设备号

stattest.logFile:`test.log'Size:573Blocks:8IOBlock:4096regularfileDevice:804h/2052dInode:7091301Links:1Access:(0644/-rw-r--r--)Uid:(1001/abc)Gid:(1001/abc)Access:2010-11-2917:56:22.000000000-0800Modify:2010-11-2917:56:22.000000000-0800Change:2010-11-2917:56:22.000000000-0800在上面的stato/p中,Device条目

c - 为什么设备的 stat::st_size 为 0 但同时 lseek 正确定义了设备大小?

我注意到,当我使用open+lseek查询设备大小时,一切正常,但是当我stat设备时,我得到零而不是实际设备大小。该设备是干净的,没有任何文件系统,并且设备的第一个字节以一些文本开头,例如“1234567890ABC”。怎么了?代码:#include#includeboolGetFileSize(constchar*pPath,uint64_t&Size){pPath="/home/sw/.bashrc";pPath="/dev/sda";structstatbuffer;if(stat(pPath,&buffer)){printf("Failedtostatfile.Error:%

linux - 使用/proc/stat 准确计算 Linux 中的 CPU 利用率

在/proc/stat中有许多关于如何使用统计信息获取CPU利用率的帖子和引用资料。然而,它们中的大多数只使用7+CPU统计信息中的四个(用户、nice、系统和空闲),忽略了Linux2.6中剩余的jiffieCPU计数(iowait、irq、softirq)。例如,参见DeterminingCPUutilization.我的问题是:iowait/irq/softirq数是否也算在前四个数字之一(user/nice/system/idle)中?换句话说,jiffie总数是否等于前四个统计数据的总和?或者,jiffie总数是否等于所有7个统计数据的总和?如果后者为真,则CPU利用率公式应

c - 如何避免在 Linux 上的 strftime() 中调用过多的 stat(/etc/localtime)?

我让我的一个记录处理程序在strace下运行了几分钟。这表明在那几分钟内对stat("/etc/localtime",..)的调用超过200000000次,这听起来有点过分和不必要。strace输出如下所示:write(1,"C13701539339309305262913711047"...,16384)=16384stat("/etc/localtime",{st_mode=S_IFREG|0644,st_size=2225,...})=0stat("/etc/localtime",{st_mode=S_IFREG|0644,st_size=2225,...})=0stat("/e

linux - 从 stat 函数输出中理解和解码文件模式值

我一直在努力理解下面提到的代码中到底发生了什么。但我无法理解。$mode=(stat($filename))[2];printf"Permissionsare%04o\n",$mode&07777;假设我的$mode值为33188$mode&07777产生一个值=420$mode值是十进制数吗?为什么我们选择07777以及为什么我们要进行按位与运算。我无法理解这里的逻辑。 最佳答案 您问题中的模式对应于一个具有644权限的常规文件(所有者为读写权限,其他所有人为只读权限),但请不要相信我的话。$touchfoo$chmod644fo

php - 文件时间 "warning stat failed for"

我已经阅读了很多关于它的问题和答案,但我仍然无法解决我的问题......我正在尝试创建一个函数来删除一天前创建的所有扩展名为“xml”或“xsl”的文件。但是我在我拥有的每个文件上都收到了这个警告:Warning:filemtime()[function.filemtime]:statfailedforpost_1003463425.xmlin/home/u188867248/public_html/ampc/library.phponline44该目录下的所有文件都具有相同的结构名称“post_+randomNum+.xml”(例如:post_1003463425.xml或post_

python - MongoDB:如何从 API 获取 db.stats()

我正在尝试在我的python代码中获取db.stats()mongoshell命令的结果(用于监控目的)。但与serverStatus不同,我不能执行db.command('stats')。我无法在mongodb文档中找到任何等效的API。我也尝试了db.$cmd的变体,但都没有奏效。所以,小问题:如何在我的python代码中获得db.stats()的结果(连接/对象的数量、数据和索引的大小等)?更大的问题:谁能解释为什么有些shell命令可以从API轻松访问,而有些则不能?这很烦人:一些与管理相关的工具可以通过db.$cmd.sys访问,一些通过db.command访问,一些通过..