TL; DR: 如果Linux内核丢失了一个缓冲的I / O写入 ,应用程序有什么方法可以找出来? 我知道你必须fsync()文件(及其父目录)的耐久性 。 问题是如果内核由于I / O错误丢失了正在等待写入的脏缓冲区,那么应用程序如何检测这个并恢复或中止? 考虑数据库应用程序等,其中写和写耐久性的顺序可能是至关重要的。 遗失的写道? 怎么样? 在某些情况下,Linux内核的块层可能会丢失由write() , pwrite()等成功提交的缓冲I / O请求,出现如下错误: Buffer I/O error on device dm-0, logical block 12345 lost page write due to I/O error on dm-0 (请参见fs/buffer.c end_buffer_write_sync(…)和end_buffer_async_write(…) )。 在较新的内核上,错误将包含“丢失的asynchronous页面写入” ,如: Buffer I/O error on dev dm-0, logical block 12345, lost async page write […]
我正在尝试使用–command标志自动化gdb会话。 我试图设置一个共享库中的函数的断点(一个DLL的Unix等价物)。 我的cmds.gdb如下所示: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r 但是,我收到以下内容: shlomi:〜/ progs / bugs-external / kde / font-breaking $ gdb –command = cmds.gdb … GNU gdb 6.8-2mdv2009.0(Mandriva Linux release 2009.0) Copyright(C)2008 Free Software Foundation,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本 这是免费软件:您可以自由更改和重新分配它。 没有担保,在法律允许的范围内。 键入“显示复制” 和“显示保修”的细节。 这个GDB被configuration为“i586-mandriva-linux-gnu”… (没有finddebugging符号) 未定义函数“IA__FcFontMatch”。 在将来的共享库加载时使断点处于等待状态? (y或[n])[回答N; 不是从terminalinput] 所以它毕竟不设置断点。 我怎样才能让它默认回答“y”设置断点未来的共享库负载? 我记得我能做些事情,但不记得是什么。
对于一个相对较新但不是全新的* nix用户来说,有没有什么好书可以深入了解一些知识(所以没有“Linux for Linux”)? 大多数情况下,我并没有从头到尾查找某些东西。 相反,当我需要知道如何做某事时,或者每当我有其中一个“我该怎么做?”时,我宁愿有一些东西可以拿起来阅读。 时刻。 有些地方我想看到的是: 命令行pipe理 bash脚本 编程(虽然我想要的东西不只是与C程序员相关) 我希望这是尽可能平台独立(这意味着它有任何Linux发行版以及BSD,Solaris,OS X等相关的信息),但我使用最多的UNIX系统是OS X和于Debian / Ubuntu。 所以如果我从更多依赖平台的书中获益最多的话,那就是目标平台。 如果我能在一本书中得到所有这些,那么很好,但是我宁愿有一些比任何事情都更深入的材料。 因此,如果有任何书籍只包含这些领域之一,请发布。 地狱,即使它与任何这些领域都没有关系,你认为这是我所处位置的人应该知道的东西。
我正在尝试使用该命令searchstring0.49 (带点) grep -r "0.49" * 但是,发生的是,我也得到不想要的结果,其中包含string,如0949等。 这个东西是linux考虑点(。)作为任何字符,并带出所有的结果。 但是我只想得到“0.49”的结果。
PostgreSQL将在Linux上保留所有数据库的默认目录是什么?
我知道你可以做mkdir来创build一个目录然后touch来创build一个文件,但是没有办法一次完成两个操作吗? 即如果我想要做下面的文件夹other不存在: cp /my/long/path/here/thing.txt /my/other/path/here/cpedthing.txt 错误: cp: cannot create regular file `/my/other/path/here/cpedthing.txt': No such file or directory 有没有人想出一个函数作为解决这个问题的方法?
我有一个日志文件目录,其中有82000个文件和目录(大约一半)。 我需要删除所有超过3天的文件和目录。 在一个有37000个文件的目录中,我可以这样做: find * -mtime +3 -exec rm {} \; 但有82000个文件/目录,我得到的错误: / usr / bin / find:参数列表太长 我怎样才能解决这个错误,以便我可以删除所有超过3天的文件/目录?
有什么方法可以确定一个进程(脚本)是否在一个lxc容器(〜Docker运行时)中运行? 我知道一些程序能够检测到它们是否在虚拟机中运行,是否有类似lxc / docker的可用程序?
我试图在Linux机器上search和replacegrep匹配的所有文件中的string。 我已经得到了一些我想要做的事情,但是我不确定如何将它们串在一起。 grep -n 'foo' *会以下面的forms输出: [filename]:[line number]:[text] 对于由grep返回的每个文件,我想用“bar”replace“foo”并将结果写回到文件中。 有没有一个很好的方法来做到这一点? 也许是一个奇特的pipe道?
我需要一个独立于平台的(Linux / Unix | OSX)shell / bash命令来确定特定进程是否正在运行。 例如mysqld , httpd …什么是最简单的方法/命令来做到这一点?