как запустить фоновый процесс в Linux, а затем убить его после анализа вывода?

Я хочу запустить tcpdump в оболочке Linux в качестве фонового процесса, используя сценарий perl, но мне нужно проанализировать вывод, после чего мне нужно убить процесс. Как я могу это сделать ?


person Dcoder    schedule 10.10.2012    source источник
comment
Вы можете использовать ps, grep и cut чтобы получить pid.   -  person Some programmer dude    schedule 10.10.2012
comment
$! содержит идентификатор процесса, получите эту информацию сразу после запуска процесса.   -  person MeaCulpa    schedule 10.10.2012


Ответы (1)


В Unix традиционным способом является написание небольших и очень специализированных программ и объединение их воедино. Почему бы вам просто не направить вывод tcpdump в стандартный ввод сценария?

Мой перл немного ржавый:

$| = 1;
my $pid = open(DUMP, "tcpdump -i eth1 -l -n 2>\&1 |");

while(<DUMP>) {
    # do something
    if($some_condition) {
        `kill $pid`;
        last;
    }
}
person Paulo Scardine    schedule 10.10.2012