#!/usr/bin/ocamlrun /usr/bin/ocaml #use "topfind" #require "pcre" #require "unix" let ( ^/^ ) d1 d2 = begin if d1 <> "" then (Pcre.qreplace ~pat:"/+$" ~templ:"" d1) ^ "/" else "" end ^ (Pcre.qreplace ~pat:"(^/+|/+$)" ~templ:"" d2) let kill_by_cwd path = let proc = Unix.opendir "/proc" in let kill pid = let cwd = try Unix.readlink ("/proc" ^/^ pid ^/^ "cwd") with _ -> "foobar" in let exe = try Unix.readlink ("/proc" ^/^ pid ^/^ "exe") with _ -> "unknown" in if path = cwd then begin Printf.printf "Killing: %10s %s\n" pid exe; Unix.kill (int_of_string pid) 15 end in let rec loop f dh = let pid = Unix.readdir dh in let _ = if Pcre.pmatch ~pat:"[0-9]+" pid then kill pid in loop f dh in try loop kill proc with End_of_file -> () let _ = kill_by_cwd "/root/arch/tos@lindows.com--2004/los-unixutils-ocaml--los-debian--1"