EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

killer – Online in der Cloud

Führen Sie Killer im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehlskiller, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


Killer – Jobkiller im Hintergrund

ZUSAMMENFASSUNG


Mörder [-h] [-V] [-n] [-d]

BESCHREIBUNG


Killer ist ein Perl-Skript, das Hintergrundjobs beseitigt. Hintergrundjobs sind definiert als
Prozesse, die Benutzern gehören, die derzeit nicht am Computer angemeldet sind. Jobs können sein
laufen im Hintergrund (und sind davon ausgenommen Killer's Aktionen) wenn ihre Planung
Die Priorität wurde durch Erhöhen verringert schön(1) Wert oder wenn sie ausgeführt werden
bis Kondor. Weitere Einzelheiten finden Sie im PAKET Haupt- Abschnitt dieses Dokuments.

In den folgenden Abschnitten wird das beschrieben perl(1) Pakete, aus denen das Killerprogramm besteht. ICH
Erwarten Sie nicht, dass die Version, die für mich funktioniert, für alle funktioniert. ich glaube, dass der
Die Pakete „ProcessTable“ und „Terminals“ bieten genügend Flexibilität, die die meisten Modifikationen bieten können
erfolgt im Hauptpaket.

Befehlszeilenoptionen

-h Sag mir, wie ich Hilfe bekomme

-V Versionsnummer anzeigen

-n Nicht töten, nur drucken, was getötet werden würde

-d Debug-Ausgabe aktivieren

PAKET Prozesstabelle


Jedes ProcessTable-Objekt enthält Hashes (oder assoziative Arrays), die verschiedene Aspekte abbilden
eines Jobs an die Prozess-ID (PID). Die folgenden Hashes werden bereitgestellt:

pid2user-Anmeldename, der der effektiven UID zugeordnet ist, unter der der Prozess ausgeführt wird.

Der pid2ruser-Anmeldename wird mit der tatsächlichen UID verknüpft, unter der der Prozess ausgeführt wird.

pid2uid Effektive UID, unter der der Prozess ausgeführt wird.

pid2ruid Echte UID, unter der der Prozess ausgeführt wird.

pid2tty Terminal, das dem Prozess zugeordnet ist.

pid2ppid Übergeordneter Prozess des Prozesses

pid2nice schön(1) Wert des Prozesses.

pid2comm Befehlsname des Prozesses.

Darüber hinaus stellt der %remainingprocs-Hash die Liste der Prozesse bereit, die beendet werden.

Die bestimmungsgemäße Verwendung dieses Pakets erfordert readProcessTable berufen sein, alles auszufüllen
die oben definierten Hashes. Anschließend werden Prozesse entfernt, die bestimmte Anforderungen erfüllen
aus dem %remainingprocs-Hash. Diejenigen, die nicht entfernt werden, gelten als Hintergrund
Prozesse und können getötet werden.

neu
Diese Funktion erstellt ein neues Prozesstabelle Objekt.

Beispiel:

my $ptable = new ProcessTable;

initialisieren
Diese Funktion initialisiert Arrays und alle Umgebungsvariablen für externe Befehle (neu).
Es muss im Allgemeinen nicht aufgerufen werden, da es von aufgerufen wird Neu().

Beispiel:

# Leeren Sie die Prozesstabelle zur Wiederverwendung
$ptable->initialize();

readProcessTable
Diese Funktion führt die aus ps(1) Befehl, um herauszufinden, welche Prozesse ausgeführt werden. Notiz
dass es einen SYSV-Stil erfordert ps(1).

Beispiel:

# Holen Sie sich eine Liste der Prozesse vom Betriebssystem
$ptable->readProcessTable();

cleanForkBombs
Diese Funktion sucht nach einer großen Anzahl von Prozessen, die einem Benutzer gehören, und geht davon aus, dass dies der Fall ist
ist jemand, der es benutzt Gabel() zum ersten Mal. Eine effektive Möglichkeit, so etwas aufzuräumen
Das Chaos besteht darin, jeden Prozess mit „Kill – STOP“ und dann mit „Kill – KILL“ zu beenden.

Beachten Sie, dass diese Funktion solche Fehler von root ignoriert. Wenn Root a. ausführt Gabel(2) Bombe, das
Das Skript würde nicht ausgeführt, oder? Außerdem sollten Sie auf die Anzahl der Prozesse achten
unten erwähnt (490) ist kleiner (gleich wäre besser, oder?) als die maximale Anzahl
Anzahl der Prozesse pro Benutzer. Außerdem sollte das Betriebssystem eine Prozessbeschränkung von mindestens ein paar Hundert haben
höher als jedes Individuum. Andernfalls müssen Sie den Netzschalter verwenden, um loszuwerden
von Gabelbomben.

Jedes Mal, wenn einem Prozess ein Signal gesendet wird, wird es über protokolliert syslog(3°C).

Beispiel:

# Gabelbomben loswerden. Verfolgen Sie in @idiots, wer es getan hat.
my @idiots = $ptable->cleanForkBombs();

getUserProcessIds Benutzer
Dies gibt die Liste der Prozess-IDs zurück, bei denen die Anmeldung mit der tatsächlichen UID verknüpft ist
Der Prozess ordnet das Argument der Funktion zu.

Beispiel:

# Alle Prozesse finden, die httpd gehören
my @webservers = $ptable->getUserProcessIds('httpd');

getUniqueTtys
Diese Funktion gibt eine Liste der verwendeten Terminals zurück. Beachten Sie, dass das Format dasselbe sein wird
wie gegeben von ps(1), dem im Allgemeinen das führende „/ Dev /".

Beispiel:

# Rufen Sie eine Liste aller Terminals ab, an die Prozesse angeschlossen sind
my @ttylist = $ptable->getUniqueTtys();

RemoveProcessId pid
Diese Funktion entfernt PID aus der Liste der abzubrechenden Prozesse. Das heißt, es wird los
eines Prozesses, der ausgeführt werden darf. Höchstwahrscheinlich wird dies nur von anderen aufgerufen
Funktionen in diesem Paket.

Beispiel:

# Aus irgendeinem Grund weiß ich, dass PID 1234 ausgeführt werden sollte
$ptable->RemoveProcessId(1234);

RemoveProcesses psfield, psvalue
Diese Funktion entfernt Prozesse, die bestimmte Merkmale besitzen. Zum Beispiel, wenn Sie möchten
Entfernen Sie alle Prozesse, die dem Benutzer „lp“ gehören, oder alle Prozesse, die /dev/console als haben
Ihr Steuerterminal, das ist die Funktion für Sie.

psfield kann eines der folgenden sein

pid Entfernt die im zweiten Argument angegebene Prozess-ID.

Benutzer Entfernt Prozesse mit der effektiven UID, die dem in Sekunde angegebenen Anmeldenamen zugeordnet ist
Argument.

ruser Entfernt Prozesse mit echter UID, die mit dem als Zweite angegebenen Anmeldenamen verknüpft ist
Argument.

uid Entfernt Prozesse mit der im zweiten Argument angegebenen effektiven UID.

ruid Entfernt Prozesse mit der im zweiten Argument angegebenen echten UID.

tty Entfernt Prozesse mit dem im zweiten Argument angegebenen steuernden Terminal. Beachten Sie, dass
es sollte NICHT mit „beginnen“/ Dev /".

ppid Entfernt untergeordnete Elemente des Prozesses mit der im zweiten Argument angegebenen PID.

nice Entfernt untergeordnete Elemente mit einem netten Wert, der dem zweiten Argument entspricht.

comm Entfernt untergeordnete Elemente mit einem Befehlsnamen, der mit dem zweiten Argument übereinstimmt.

Beispiele:

# Ermöglichen Sie die Ausführung aller imapd-Prozesse
$ptable->removeProcesses('comm', 'imapd');

# Achten Sie darauf, Druckaufträge nicht abzubrechen
$ptable->removeProcesses('ruser', 'lp');

entferne Kinder pid
Diese Funktion entfernt alle Nachkommen der angegebenen PID. Das heißt, wenn das PID-Argument 1 ist,
Dadurch wird sichergestellt, dass nichts getötet wird.

Beispiel:

# Achten Sie darauf, keine Postzustellungen zu unterbrechen (vorausgesetzt, Sie haben dies getan).
# getSendmailPid() geschrieben. (Sendmail ändert dabei die UID
# lokale Lieferung.)
$ptable->removeChildren(getSendmailPid);

entferneCondorChildren
Condor ist ein Batch-Job-System, das die Migration von Jobs zwischen Maschinen ermöglicht (siehe
http://www.cs.wisc.edu/condor/). Dies stellt sicher, dass Kondor-Jobs in Ruhe gelassen werden.

Beispiel:

# Seien Sie nett zu den Leuten, die ihre Jobs über Condor erledigen.
$ptable->removeCondorChildren();

findChildProcs pid
Diese Funktion sucht und gibt eine Liste aller Prozesse zurück, die Nachkommen von a sind
die im ersten Argument angegebene PID.

Beispiel:

# Finden Sie die Prozesse, die von PID 1234 abstammen
mein @procs = $ptable->findChildProcs(1234);

getTtys Benutzer
Diese Funktion gibt eine Liste von TTYs zurück, die von Prozessen verwendet werden, die einem bestimmten Objekt gehören
Benutzer.

Beispiel:

# Alle von Gerdts verwendeten TTYs finden.
my @ttylist = getTtys('gerdts');

getBenutzer
Diese Funktion listet alle Benutzer auf, die aktive Prozesse haben.

Beispiel:

# Alle angemeldeten Benutzer abrufen
meine @lusers = $ptable->getUsers()

RemoveNiceJobs
Diese Funktion entfernt alle Jobs, die einen netten Wert größer als 9 haben. Das heißt, sie haben
eine niedrigere Planungspriorität als die Standardeinstellung (0).

Beispiel:

# Erlauben Sie den Leuten, Hintergrundjobs auszuführen, solange sie dazu bereit sind
# diejenigen mit „Vordergrund“-Jobs
$ptable->removeNiceJobs();

printProcess Feilengriff, pid
Diese Funktion zeigt Informationen über den Prozess an, ähnlich wie es „ps | grep“ tun würde.

Beispiel:

# Informationen über init an STDERR ausgeben
$ptable->printProcess(\*STDERR, 1);

printProcessTable
printProcessTable Dateihandle
Diese Funktion druckt Informationen über alle von entdeckten Prozesse readProcessTable. Wenn ein
Wenn das Argument angegeben wird, sollte es ein Dateihandle sein, an das die Ausgabe gedruckt werden soll.

Beispiele:

# Drucken Sie die Prozesstabelle auf stdout
$ptable->printProcessTable();

# Senden Sie die Prozesstabelle an jemanden
öffne MAIL '|/usr/bin/mail someone';
$ptable->printProcessTable(\*MAIL);
close(MAIL);

printRemainingProcesses
printRemainingProcesses Dateihandle
Diese Funktion druckt Informationen über alle von entdeckten Prozesse readProcessTable, Aber nicht
aus %remainingprocs entfernt. Wenn ein Argument angegeben wird, sollte es ein Dateihandle sein
welches die Ausgabe gedruckt werden soll.

Beispiele:

# Drucken Sie die Jobs, die beendet werden sollen, auf stdout
$ptable->printRemainingProcesses();

# Schicken Sie die Jobs, die gelöscht werden sollen, per E-Mail an jemanden
öffne MAIL '|/usr/bin/mail someone';
$ptable->printRemainingProcesses(\*MAIL);
close(MAIL);

getRemainingProcesses
Gibt eine Liste von Prozessen zurück, bei denen es sich wahrscheinlich um Hintergrundjobs handelt.

Beispiel:

# Holen Sie sich eine Liste der Prozesse, die ich beenden möchte
my @procsToKill = $ptable->getRemainingProcesses();

alle töten signalNumber
Sendet das angegebene Signal an alle aufgelisteten Prozesse. Für jeden wird ein Syslog-Eintrag erstellt
Signal gesendet.

Beispiel:

# Senden Sie allen verbleibenden Prozessen ein TERM-Signal, dann a
# KILL-Signal
$ptable->alle töten(15);
schlafen(10); # Geben Sie ihnen eine kleine Chance, aufzuräumen
$ptable->alle töten(9);

PAKET Terminals


Das Terminals-Paket bietet eine Möglichkeit, herauszufinden, wie lange verschiedene Benutzer schon dabei sind
Leerlauf.

neu
Diese Funktion wird verwendet, um ein neues Terminalobjekt zu instanziieren.

Beispiel:

# Holen Sie sich ein neues Terminals-Objekt.
mein $term = neue Terminals;

initialisieren
Diese Funktion ermittelt, wer sich im System befindet und wie lange diese inaktiv waren. Es
wird grundsätzlich nur von angerufen Neu().

Beispiel:

# Aktualisieren Sie den Status der Terminals.
$term->initialize();

showConsoleUser
Diese Funktion gibt den Login der Person zurück, die physisch am Computer sitzt.

Beispiel:

# Drucken Sie den Login der Person auf der Konsole aus
printf „%s ist auf der Konsole\n“, $term->showConsoleUser();

initializeTty Terminal statparts
Dadurch werden interne Strukturen für das angegebene Terminal initialisiert.

getX11IdleTime Benutzer
Finden Sie heraus, wie lange ein Benutzer in X11 inaktiv war. Gibt die Sekunden der Leerlaufzeit zurück.

getIdleTime Benutzer
Finden Sie heraus, wie lange ein Benutzer inaktiv war. Dies wird durch die Untersuchung aller Terminals erreicht
die der Benutzer besitzt, und gibt die seit dem letzten Zugriff vergangene Zeit zurück
gebraucht. Wenn sich der Benutzer außerdem an der Konsole befindet, ist es möglich, dass dies nicht der Fall ist
beim Tippen, ist aber recht aktiv mit der Maus oder beim Tippen in eine Anwendung, die nicht verwendet wird
ein Terminal.

Beispiel:

# Finden Sie heraus, wie lange der Benutzer auf der Konsole untätig war
my $consoleIdle = $term-getIdleTime($term->showConsoleUser());

printEverything
Gibt auf der Standardausgabe aus, wer sich an welchem ​​Terminal befindet und wie lange er inaktiv war. Nur nützlich
zum Debuggen.

Beispiel:

# Schauen Sie sich den Inhalt der Strukturen in meinem an
# Terminals-Objekt
$term->printEverything();

PAKET Haupt-


Das Hauptpaket ist die Version, die auf den Unix-Workstations der Universität verwendet wird
Wisonsins Computer-Aided Engineering Center (CAE). Ich vermute, dass es Leute an anderen Orten gibt
Dann wird CAE die Dinge etwas anders machen wollen. Nehmen Sie dies gerne als Beispiel
Beispiel dafür, wie Sie die Pakete „processTable“ und „Terminals“ effektiv nutzen können.

Konfiguration Optionen
$forkadmin E-Mail-Adresse zur Benachrichtigung über Forkbombs

$killadmin E-Mail-Adresse zur Benachrichtigung über gewöhnliche Kills

$fromaddr Von wem behaupten E-Mail-Nachrichten, dass sie stammen?

$sturbornadmin
E-Mail-Adresse zur Benachrichtigung, wenn Jobs nicht verschwinden

@validusers Das sind die Leute, die Sie niemals töten sollten

$minuid Prozesse von Benutzern mit einer UID unter diesem Wert werden nicht beendet.

$maxidletime
Die maximale Anzahl an Sekunden, die ein Benutzer inaktiv sein kann, ohne klassifiziert zu werden
als „Hintergrundjobs“.

Wenn ich ein Benutzer bin, der wirklich versucht, einen Jobkiller im Hintergrund zu vermeiden, würde ich wahrscheinlich einen hinzufügen
Signalhandler, der auf Signal 15 warten würde. Als ich es sah, gab ich einen Fork ab, der das verursachte
Wenn ein Elternteil stirbt und das Kind weiterhin meine Arbeit verrichtet.

Unter der Annahme, dass alle so denken wie ich, schätze ich, dass ich mindestens zwei machen muss
Komplette Durchgänge, um die schlechten Benutzer zu beseitigen. Der erste Durchgang ist relativ schön (sendet a
Signal 15, etwas später folgte ein Signal 9). Ein gut geschriebenes Programm reicht aus
Signal 15 als Zeichen, dass es aufräumen und dann herunterfahren soll. Wenn ein Prozess eine erhält
Signal 9, es hat keine andere Wahl, als zu sterben.

Der zweite Durchgang ist nicht so schön. Es findet alle Hintergrundprozesse und sendet ihnen ein Signal 23
(SIGSTOP), dann ein Signal 9 (SIGKILL). Dies ist so ziemlich (aber nicht absolut) garantiert
dass Prozesse keinen Weg finden, den Jobkiller im Hintergrund zu umgehen.

sammelnInfo
Diese Funktion sammelt Informationen aus den Terminals- und ProcessTable-Paketen und basiert dann darauf
Auf der Grundlage dieser Informationen wird entschieden, welche Jobs ausgeführt werden dürfen. Konkret tut es das
wie folgt vor:

· Instanziiert neue ProcessTable- und Terminals-Objekte. Beachten Sie, dass Terminals::new ausgefüllt wird
alle notwendigen Strukturen, um Benutzer zu erfassen, die sich zwischen Anrufen angemeldet haben
sammelninfo.

· Liest die Prozesstabelle

· Entfernt Condor-Prozesse und Condor-Jobs aus der Liste der zu tötenden Prozesse.

· Entfernt alle Jobs, die allen Benutzern im Konfigurationsarray @validusers gehören
Liste der Prozesse, die beendet werden sollen.

· Entfernt alle schön(1) Jobs aus der Liste der Jobs, die gelöscht werden sollen.

· Entfernt alle Jobs von Benutzern, deren Leerlaufzeit weniger als $maxidletime beträgt
auf mindestens einem Terminal. Darüber hinaus Jobs, die mit TTYs verknüpft sind, deren Eigentümer sind
Benutzer, die auf mindestens einem Terminal weniger als $maxidletime Leerlaufzeit haben, bleiben erhalten.
Dies macht es so, dass wenn Luser verwendet wird su(1) um die Privilegien von Alkoholikern zu erlangen, Prozesse
Eigentum von Alkoholikern wird nicht getötet.

· Entfernt alle Prozesse von Benutzern, deren UID niedriger als der $minuid-Wert ist.

· Abschließend werden die Prozesstabelle und die Terminalobjekte zurückgegeben.

Verwenden Sie Killer online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

  • 1
    Tiefenreinigung
    Tiefenreinigung
    Ein Kotlin-Skript, das alle Builds zerstört
    Caches aus Gradle/Android-Projekten.
    Nützlich, wenn Gradle oder die IDE es Ihnen erlauben
    runter. Das Skript wurde getestet
    macOS, aber ...
    Tiefenreinigung herunterladen
  • 2
    Eclipse Checkstyle-Plug-in
    Eclipse Checkstyle-Plug-in
    Das Eclipse Checkstyle-Plug-In
    integriert den Java-Code von Checkstyle
    Auditor in die Eclipse-IDE. Das
    Plug-in bietet Echtzeit-Feedback zu
    der benutzer über gewalt...
    Laden Sie das Eclipse Checkstyle-Plug-in herunter
  • 3
    AstroOrzPlayer
    AstroOrzPlayer
    AstrOrz Player ist ein kostenloser Mediaplayer
    Software, teilweise basierend auf WMP und VLC. Das
    Spieler ist in einem minimalistischen Stil, mit
    mehr als zehn Themenfarben und können auch
    b ...
    Laden Sie den AstrOrzPlayer herunter
  • 4
    movistv
    movistv
    Kodi Movistar+ TV ist ein ADDON für XBMC/
    Kodi que Permite disponer de un
    Dekodifikator der IPTV-Dienste de
    Movistar ist in einem Jahr integriert
    Mediacenter ma...
    Moviestartv herunterladen
  • 5
    Code :: Blocks
    Code :: Blocks
    Code::Blocks ist ein kostenloses Open-Source-Programm,
    plattformübergreifende C-, C++- und Fortran-IDE
    gebaut, um die anspruchsvollsten Anforderungen zu erfüllen
    seiner Nutzer. Es ist sehr konzipiert
    verlängert...
    Laden Sie Code::Blocks herunter
  • 6
    Inmitten
    Inmitten
    Inmitten oder Advanced Minecraft Interface
    und Data/Structure Tracking ist ein Werkzeug, um
    eine Übersicht über ein Minecraft anzeigen
    Welt, ohne sie tatsächlich zu erschaffen. Es
    können ...
    Herunterladen Mitten
  • Mehr »

Linux-Befehle

Ad