我在“修改的目录”(在第三个子级文件夹)中添加了一个新文件,当我尝试使用以下命令生成修补程序文件时,它显示diff命令忽略了新文件: diff –ur "original directory" "modified directory" > version1.patch 我感谢您的帮助..
我正在linux中构build一个只通过特定接口发送数据的应用程序。 我可以做到这一点使用原始套接字,也许使用套接字选项function?
这里是一个程序,它和sleep()子程序一起使用POSIX per-process定时器。 定时器到期时发送的信号已被设置为SIGUSR1而不是SIGALRM ,因为SIGALRM可能在sleep()内部使用,但似乎仍然不起作用。 我使用命令行timer-overruns -d 1 -n 10000000 (1 cs间隔)来运行程序,理论上,我们应该在对sigwaitinfo()调用之间预计有100次sigwaitinfo() 。 但是, timer_getoverrun()返回0。 我也尝试过使用一个耗时for循环来引入延迟的版本。 在这种情况下,超限被logging下来。 有谁知道为什么发生这种情况? 我正在运行一个3.4 Linux内核。 节目源 /* * timer-overruns.c */ #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <signal.h> #include <time.h> // Signal to be used for timer expirations #define TIMER_SIGNAL SIGUSR1 int main(int argc, char **argv) { int opt; int d […]
我有这个代码,如何改进它 diff -b -i -w out.txt out2.txt | grep '^>' | sed 's/^>//g' | sed ':a;N;$!ba;s/\n/ /g' 示例数据(out.txt) abc def ghk abc def2 ghk abc def ghk 123 333 555 566 3423 23 566 3423 3542 示例数据(out2.txt) abc def2 ghk abc def ghk abc def ghk 123 555 555 fsdjhfsda sd 566 3423 3542 预期结果 […]
我正在接受HTTP请求并将它们转发到目标上的项目。 我们使用Linux(2.6.35.14-106.fc14.x86_64)和TPROXY。 我会在下面的细节。 我看到的问题是,偶尔(1000次中的1次,有时是100万次中的1次),Linux将返回对等地址作为目标地址。 有没有人见过这种情况? 我从2007年起在网上看到一个音符,所以我认为这可能有点过时了。 我有以下代码(请原谅这里显示的不一致的方法): struct sockaddr clientaddr; socklen_t clientlen = sizeof(clientaddr); int status = getpeername(acceptedSocket, &clientaddr, &clientlen); char clientName[256]; clientName[0] = '\0'; int clientport = 0; if (status == 0) { inet_ntop(AF_INET, (void *) &((struct sockaddr_in *)&clientaddr)->sin_addr, clientName, 256); clientport = ntohs(((struct sockaddr_in *)& clientaddr)->sin_port); **printf("Socket::acceptConnection: getpeername : %s:%d\n", clientName, clientport); fflush(stdout);** […]
从Scratch书籍的Linux之后,我设法为ARM上的ARM构build了一个工具链。 直到本书的第6章,在ARM板本身,我可以继续下去,没有任何问题。 我的问题是,如果我可以使用准备好的环境在我的x86_64 Fedora 16笔记本电脑上继续构build第6章的软件? 我想,虽然我已经把所有的二进制文件都拷贝到了笔记本电脑上,但是使用内部的chroot并且感觉自己和ARM板一样,但是使用这本书的命令却没有任何结果: `# chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash –login +h chroot: failed to run command `/tools/bin/env': No such file or directory` 二进制文件在那里,但它不属于这个系统: `# ldd /tools/bin/env not a dynamic executable` 二进制文件按照本书编译: # readelf -l /tools/bin/env | grep interpreter [Requesting program interpreter: /tools/lib/ld-linux.so.3] # readelf -l /tools/bin/env | grep […]
我做了一个执行nagios检查的python脚本。 该脚本的function非常简单,它只是parsing一个日志,并匹配一些信息女巫用于构buildnagios检查输出。 该日志是一个snmptrapd日志logging从其他服务器的陷阱,并logging在/var/log/snmptrapd巫婆后,我只是parsing他们的脚本。 为了有最新的陷阱我每次读取后从Python删除日志。 为了保存信息,我做了一个cron作业,将日志的内容复制到另一个日志,时间间隔比nagios检查间隔小一点。 我不明白的是为什么日志增长这么多(我的意思是消息日志,我猜测1000倍以上的信息更小)。 从我在日志中看到的有很多像^@这样的特殊字符,我认为这是通过我从pyton操作文件的方式完成的,但是看到我已经有三个星期的经验我似乎无法弄清楚这个问题。 脚本代码如下: import sys, os, re validstring = "OK" filename = "/var/log/snmptrapd.log" if os.stat(filename)[6] == 0: print validstring sys.exit() else: f = open(filename,"r") sharestring = "" line1 = [] patte0 = re.compile("[0-9]+-[0-9]+-[0-9]+") patte2 = re.compile("NG: [a-zA-Z\s=0-9]+.*") for line in f: line1 = line.split(" ") if re.search(patte0,line1[0]): sharestring = sharestring […]
IP标头具有服务types(TOS)字段。 它可以用来设置有类别的排队规则,即PRIO。 我testing了以下代码。 #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <unistd.h> int main(int argc, char**argv) { int listenfd, connfd, optval; struct sockaddr_in servaddr, cliaddr; socklen_t clilen; pid_t childpid; char mesg[16]; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); bzero(mesg, 0, sizeof(mesg)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port = htons(32000); bind(listenfd,(struct sockaddr *)&servaddr, sizeof(servaddr)); listen(listenfd, 1024); for (;;) […]
我有一个程序将连续运行写输出到标准输出,我想不断从它的最后一组输出,并将其写入一个文件。 每次有一组新的输出,我想覆盖相同的文件。 一个例子是以下命令: iostat -xkd 5 每5秒钟打印一些输出,每一个输出一个空行。 我希望最后的“集合”被写入一个文件,我认为这应该可以通过一些简单的事情来实现。 到目前为止,我已经尝试过使用xargs,我只能用一行代码来完成这个工作,而不是由一些由某些东西划定的行。 我认为这可能与awk,但我不知道如何让它缓冲数据,因为它可以写出它使用系统,或让它closures并重新打开相同的输出文件。 编辑 :澄清,这是一个连续运行的单一命令。 我不想开始一个新的命令,并阅读它的输出。 解 我调整了@Bittrance的答案来得到以下结果: iostat -xkd 5 | (while read r; do if [ -z "$r" ]; then mv -f /tmp/foo.out.tmp /tmp/foo.out else echo "$r" >> /tmp/foo.out.tmp fi done) 这基本上是相同的,除了检测“部分”的结束和写入临时文件,以便每当外部进程试图读取输出文件将完成。
有这个问题,我正在用墙打我的头,请帮忙。 我有两个文件Sheetthickness.k,其中包含一个初始厚度值和minThick.k,其中包含最终厚度只有一个单一的数字。 我想计算厚度的百分比减less,所以我用。 fina="$(cat minThick.k)"; echo $fina init="$(cat Sheetthickness.k)"; echo $init echo |awk "{ print ($init-$fina)/($init) }" > LSDynaResponse.txt 在没有其他命令的shell中,文件已经存在,那么它可以很好地工作,但是当这些文件是由软件创build的,然后使用这些命令的时候,就会出错。 awk: { print (-)/() } awk: ^ syntax error awk: { print (-)/() } awk: ^ syntax error awk: { print (-)/() } awk: ^ unterminated regexp 任何其他优雅的方式来做这个任务?