Są do tego napisane narzędzia, wystarczy poszukać. A i napisanie skryptu nie powinno być aż tak wielkim problemem - parę minut i już. Ale że mi się nudzi to Ci napisałem coś takiego:
#!/usr/bin/perl
$limit = 35; #limit CPU w %
$logfile = '/var/log/proc_kill.log'; #sciezka do pliku kogu
$sleep = 5; #czas co jaki jest sprawdzany stan procesow
open (LOG, '>>', $logfile);
while (1){
@proc = `ps aux`;
foreach (@proc) {
split(' ',$_);
next if $_[0] =~ /USER/;
if ($_[2] > $limit){
kill 9, $_[1];
$now = localtime(time);
print LOG "$now - PID :: $_[1], Owner :: $_[0], CPU :: $_[2]\n";
}
}
sleep $sleep;
}
close LOG;
Nie dam sobie uciąć głowy, ale pewnie chodzi o kodowanie. Nie wnikając w szczegóły: na lokalnym komputerze odpal jakiś graficzny edytor tekstu ([gk]edit), do niego przeklej treść skryptu, zapisz i wyślil przez scp na docelową maszynę (zakładam że masz gdzieś wykupiony serwer).
Szczerze wątpię, że o to chodzi bo na swoim komputerze wkleiłem do notatnika i zapisałem jako: procek.sh i skopiowałem poprzez Total Commander na serwer do folderu root.
Nie wiem jak jaśniej Ci to wytłumaczyć. DOS/Windows a Unix/Linux to dwa różne standardy kodowania znaków. W tym wypadku chodzi o koniec linii. O ile Unix zadowoli się samym LF, o tyle DOS kończy linię sekwencją CR+LF. Dlatego nie można znaleźć pliku /usr/bin/perl^M, ten ^M to właśnie nieszczęsny CR. Więcej info: http://www.brandonhutchinson.com/DOS_an ... cters.html
Solucja: zadzwoń na serwer przez putty i spróbuj czegoś takiego: