Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Tasks Killen

Frage Linux Linux Tools

Mitglied: Arkham

Arkham (Level 1) - Jetzt verbinden

04.09.2008, aktualisiert 06.09.2008, 4316 Aufrufe, 6 Kommentare

Hallo liebe Administratoren,

ich habe ein Problem,
ich hab einen Linux Server (distri Debian 3.1),
benoetige hierfuer ein Script was "abgetorbene" tasks killt.
Gaebe es eine Moeglichkeit soetwas zu stande zu bringen?
Ich kenne mich leider noch zuwenig mit Linux aus um das selbst zu machen.

LG

Arkham
Mitglied: datasearch
04.09.2008 um 22:23 Uhr
Kannst du etwas mehr über die Tasks verraten? Wenn der Prozess als Zombie, dead o.ä. in der Prozessliste auftaucht ist es ziemlich einfach. Sollte der Status allerdings bei "absturz" noch normal sein, musst du die Funktion des Prozesses irgendwie überprüfen.

Zb. Der erste Fall könnte ein backup-Prozess sein, der abgestorben ist weil ein Problem auf dem SCSI-Bus zum bandlaufwerk vorlag. Status DEAD. Du musst nur die Ausgabe der Prozessliste filtern, den dead-process zur binary (und evt. zum startscript) zuordnen und den Prozess töten, neustarten usw.

Im zweitem Fall könnte ein Webserver aufgrund einer fehlerhaften CGI-Anwendung keine HTTP-Anfragen mehr annehmen. Der Prozess selbst läuft aber aus systemsicht weiter. in diesem Fall musst du den HTTP-Port abfragen und die Ausgabe auswerten. Könntest du im Fall webserver mit einem wget prüfen. Liefert es einen connect-fehler auf port80, ist der webserver tot und du startest ihn neu.

Es gibt auch Monitoring-Tools die genau das machen. Zb. Servicemon oder Watchdog.

Ich hoffe diese oberflächliche Antwort hilft dir bei der Lösungssuche.
Bitte warten ..
Mitglied: theton
04.09.2008 um 23:23 Uhr
Man kann einfach überprüfen ob der Prozess noch Signale annimmt, was er im Normalfall nur tut, wenn er funktionsfähig ist, und wenn nicht, killt man ihn einfach. Einfach mittels 'kill -0 <PID>' ein Signal an den Prozess schicken und schauen ob er drauf reagiert. In einem Bash-Skript dürfte das z.B. so aussehen:

01.
... 
02.
if kill -0 ${PID} 2>/dev/null 
03.
then 
04.
  # signal angenommen 
05.
else 
06.
  # signal nicht angenommen 
07.
fi 
08.
...
Bitte warten ..
Mitglied: datasearch
04.09.2008 um 23:40 Uhr
Hmh, stimmt. Könnte man kombinieren um einen eigenen Watchdog zu basteln.

01.
if kill -0 $(pidof /usr/sbin/httpd); then echo OK; else echo fehler; fi
Könnte man weitertreiben und eine Liste der zu überwachenden Prozesse aus einer Textfile auslesen. Bei fehler könnte man gleich den Prozess killen und per init-script neu starten.
Genau das macht aber eigentlich watchdog

Bringt dir aber leider nichts wenn der Prozess zwar reagiert, aber keine Anfragen mehr bearbeitet. Könnte zb. auftreten wenn Postfix probleme beim prüfen der DNSBL oder der abfrage einer Datenbank hat. Oder der Apache-Webserver wartet ewigkeiten auf ein Modul. Willst du sichergehen, brauchst du einen Servicemonitor.
Bitte warten ..
Mitglied: theton
04.09.2008 um 23:55 Uhr
Ja, das stimmt wohl. Service-Monitoring kann man ja recht einfach über Nagios umsetzen. Bei Webservern bevorzuge ich aber zumeist ein eigenes Skript. In die zu überwachende Website baut man am Ende einen eindeutigen HTML-Kommentar ein (z.B. '<!-- test_ping -->') und überprüft dann mittels Skript einfach, ob der Kommentar vorhanden ist.

01.
#!/usr/bin/perl -w 
02.
 
03.
use WWW::Mechanize; 
04.
use Net::SMTP; 
05.
my $message = ''; 
06.
my $mailserver = 'localhost'; 
07.
my $mail_from_addr = 'homepagemonitor@domain.tld'; 
08.
my $admin_email = 'admin@pager.tld'; 
09.
 
10.
sub send_mail_to_admin 
11.
12.
    my ($message) = @_; 
13.
    my $smtp = Net::SMTP->new($mailserver, 
14.
                              Hello => 'localhost', 
15.
                              Timeout => 60); 
16.
    $smtp->mail($mail_from_addr); 
17.
    $smtp->recipient($admin_email); 
18.
    $smtp->data; 
19.
    $smtp->datasend("Subject: Alert from Homepage Monitoring"); 
20.
    $smtp->datasend("\n"); 
21.
    $smtp->datasend($message); 
22.
    $smtp->dataend; 
23.
    $smtp->quit; 
24.
25.
 
26.
my $url = "http://domain.tld/"; 
27.
 
28.
my $mech = WWW::Mechanize->new(); 
29.
$mech->get($url); 
30.
my $content = $mech->content(); 
31.
 
32.
if($content =~ /test_ping/) { 
33.
    print "All is fine with homepage on domain.tld.\n"; 
34.
} else { 
35.
    $message = "Something is wrong with homepage on domain.tld.\n"; 
36.
    $message .= "Current content:\n"; 
37.
    $message .= $content."\n"; 
38.
    &send_mail_to_admin($message); 
39.
}
Das lässt sich natürlich beliebig ausbauen, z.B. mit vorherigem Login über ein Formular u.ä. Man kann es einfach als Cron laufen lassen und kann damit sicher sein, dass eine Seite korrekt ausgeliefert wird.
Bitte warten ..
Mitglied: datasearch
05.09.2008 um 00:06 Uhr
Feines script. Das könnte man nun noch um die verschiedensten plain-text Protokolle erweitern. Super Idee. Ich hoffe ihm gefällt es auch

Ich verlasse mich eben zu sehr auf die Monitoring-SW. Damit könnte man den Server zuverlässiger prüfen, auch wenn die VPN zum Remotestandort mal ausfällt.

Theoretisch könnte man ja auch in einem Bash-Script per curl solche Prüfungen starten. Werde ich morgen mal probieren (ich mag perl nicht besonders).
Bitte warten ..
Mitglied: Arkham
06.09.2008 um 12:33 Uhr
vielen vielen dank @ll ihr habt mir sehr geholfen,
werde mal die scripts testen und hoffe das es funktioniert

LG

Arkham
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
Scheduled Tasks (4)

Frage von derhoeppi zum Thema Windows Server ...

Windows Server
Mit welchem Benutzer Tasks ausführen (5)

Frage von inno-it zum Thema Windows Server ...

Apache Server
Webserver 75 aktive Tasks Verdacht auf Schadscripte (24)

Frage von wescraven07 zum Thema Apache Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...