Articles of unix

如何杀死一个PID不断变化的进程?

我知道我可以使用这个技巧if (fork()) exit(0); 改变当前进程的PID。 所以,下面的程序会有一个很快改变的pid。 如何杀死这样的进程? 有没有比执行大量killall procname更好的方法,直到能够在fork之前运行kill() ? 我知道这不是一个“进程”,但是每个进程只运行几微秒。 #include <unistd.h> #include <stdlib.h> #include <stdio.h> int main() { pid_t self = getpid(); while (1) { if (fork()) exit(0); if (self + 10000 < getpid()) break; // Just to kill it after some time usleep(1000); } return 0; } 我发现列出进程的唯一方法是执行ps -A | grep procname ps […]

什么是一个好的Linux退出错误代码策略?

我有几个独立的可执行Perl,PHP CLI脚本和C ++程序,我需要开发一个退出错误代码策略。 这些程序由其他程序使用我创build的用于在PHP中使用exec()的封装类来调用。 所以,我将能够得到一个错误代码。 基于那个错误代码,调用脚本将需要做一些事情。 我已经做了一些研究,看起来1-254(或者只是1-127)范围内的任何事情对于用户定义的错误代码来说都是公平的游戏。 我只是想知道在这种情况下其他人是如何处理error handling的。

需要Linux cmd-line应用程序来比较二进制文件,并在第一次不匹配时退出

是否有一个Linux命令行应用程序将比较两个二进制文件,并退出第一次失误? cmp似乎没有退出的select。

对cron执行的命令是否有特殊限制?

我有一个crontab ,看起来像 0 0 * * * pg_dump DB_NAME > /path/to/dumps/`date +%Y%m%d`.dmp 当我手动运行它工作正常,但不是当cron运行它。 挖完日志后,我明白了 Dec 12 00:00:01 localhost crond[17638]: (postgres) CMD (pg_dump DB_NAME > /path/to/dumps/`date +) 它看起来像百分号的问题,但man页甚至没有包含百分比字符,所以我认为他们是没问题的。

setjmp和longjmp – 用例子理解

我知道setjmp和longjmp的定义。 setjmp将环境存储在堆栈上下文中,另一个恢复。 但是我觉得我有一些地方有些缺乏理解。 有人可以解释我吗,借助一些很好的例子,我该如何保证,如何保存以及如何恢复? 我看到jmp_buf中有很多CPU寄存器。 但是,我如何确保恢复? 请帮助我用简洁的例子来解释。 我search了一下,并提到了堆栈溢出的其他问题,但都没有给出明确的例子。 巨大的巨大感谢提前。 PS:它应该只来自Linux / Unix环境。

如何删除与模式匹配的行和使用sed后面的行?

我有一个如下所示的文件: good text good text FLAG bad text bad text good text good text good test bad Text FLAG bad text bad text good text 我需要删除任何包含“FLAG”的行, 而且我总是需要在“FLAG”行之后立即删除这一行。 “旗”线来不规则,我不能依赖任何行号策略。 任何人都知道如何用sed做到这一点?

在unix / linux命令行(例如BASH)中定义函数

有时候,我有一个单独的内容,我为了一个特定的任务重复了很多次,但是可能永远不会以完全相同的forms再次使用。 它包含一个我从目录列表中粘贴的文件名。 之间的某处并创build一个bash脚本我想也许我可以在命令行创build一个单线程函数,如: numresults(){ ls "$1"/RealignerTargetCreator | wc -l } 我已经尝试了一些使用eval的方法,使用了numresults=function… ,但还没有find正确的语法,到目前为止还没有发现任何东西。 (所有的东西都是关于bash函数的教程)。

在某种模式之前添加文本时使用sed和忽略大小写

sed -i '/first/i This line to be added' 在这种情况下,如何在searchpattern = first的时候忽略case

sed与特殊字符

我有我想要使用sed的这一行: –> ASD = $start ( *.cpp ) <– $ start不是可变的,我想用sed来代替所有的行: ASD = $dsadad ( .cpp ) 我怎样才能使sed忽略特殊的charactars,我试图在特殊字符之前加斜杠,但也许我错了,有人可以给我一个例子吗? 这是我想要的: sed's / CPPS = \ $(shell ls | grep * .cpp)/ somereplace /'Makefile

netcat新行问题

我正在使用下面的命令发送一些string到udp侦听服务器。 回声“A 192.168.192.168”| nc -u 192.168.2.1 1234 但是服务器正在以回显string的forms得到'\ n'。 我也尝试了下面的命令,但是失败了 回声“A 192.168.192.168”| nc -uC 192.168.2.1 1234 如何删除尾随的新行字符? 我有什么特别的select在NC?