Mittelwert Mittlerer Prozess


Htop erklärt Erklärung von allem, was Sie in htoptop auf Linux sehen können Letzte Aktualisierung am 2. Januar 2017 1 auf Hacker News am 2. Dezember 2016 1 auf rsysadmin am 2. Dezember 2016 2 auf rlinux am 2. Dezember 2016 Für die längste Zeit habe ich Nicht wissen, was alles in htop bedeutete. Ich dachte, dass Belastung durchschnittlich 1,0 auf meine zwei Core-Maschine bedeutet, dass die CPU-Auslastung bei 50 ist. Das ist nicht ganz richtig. Und auch, warum sagt es 1.0 Ich beschloss, alles nachschlagen und dokumentieren es hier. Sie sagen auch, dass der beste Weg, um etwas zu lernen ist zu versuchen, es zu lehren. Inhaltsverzeichnis htop on Ubuntu Server 16.04 x64 Hier ist ein Screenshot von htop, die ich beschreiben werde. Uptime zeigt an, wie lange das System läuft. Sie können die gleichen Informationen zu sehen, indem Sie uptime: Wie sieht das Uptime-Programm, dass es liest die Informationen aus der Datei procuptime. Die erste Zahl ist die Gesamtzahl der Sekunden, die das System hochgefahren hat. Die zweite Zahl ist, wie viel von der Zeit, die die Maschine im Leerlauf verbracht hat, in Sekunden. Der zweite Wert kann größer sein als die gesamte Systembetriebszeit auf Systemen mit mehreren Kernen, da es eine Summe ist. Wie ich weiß, dass ich sah, welche Dateien das Uptime-Programm öffnet, wenn es ausgeführt wird. Wir können das Strace-Tool, um das zu tun. Es wird eine Menge Output geben. Wir können für den offenen Systemaufruf grep. Aber das wird nicht wirklich funktionieren, da strace gibt alles, um die Standard-Fehler (stderr) Stream. Wir können den stderr auf den Standardausgang (stdout) Stream mit 2gtamp1 umleiten. Unsere Ausgabe ist diese: die die Datei procuptime enthält, die ich erwähnt. Es stellt sich heraus, dass Sie auch strace - e öffnen können uptime und nicht die Mühe mit Grepping. Also, warum brauchen wir das Uptime-Programm, wenn wir nur lesen können den Inhalt der Datei Die Uptime-Ausgabe ist schön für Menschen formatiert, während die Anzahl der Sekunden ist sinnvoller für die Verwendung in Ihren eigenen Programmen oder Scripts. Neben der Uptime gab es auch drei Zahlen, die den Lastdurchschnitt darstellen. Sie werden aus der Datei procloadavg entnommen. Wenn Sie einen weiteren Blick auf die Strace-Ausgabe werfen, sehen Sie, dass diese Datei ebenfalls geöffnet wurde. Die ersten drei Spalten repräsentieren die mittlere Systembelastung der letzten 1, 5 und 15 Minuten. Die vierte Spalte zeigt die Anzahl der laufenden Prozesse und die Gesamtzahl der Prozesse an. In der letzten Spalte wird die zuletzt verwendete Prozess-ID angezeigt. Let39s beginnen mit der letzten Zahl. Wenn Sie einen neuen Prozess starten, wird ihm eine ID-Nummer zugewiesen. Prozess-IDs steigen gewöhnlich an, es sei denn, sie wurden ausgelöst und werden wiederverwendet. Die Prozess-ID von 1 gehört zur sbininit, die beim Booten gestartet wird. Let39s Blick auf die procloadavg Inhalt wieder und starten Sie den Schlaf-Befehl im Hintergrund. Wenn es im Hintergrund gestartet wird, wird die Prozess-ID angezeigt. So bedeutet die 1123, dass es einen Prozess läuft oder bereit, um zu diesem Zeitpunkt laufen und es werden insgesamt 123 verarbeitet. Wenn Sie htop ausführen und nur einen laufenden Prozess sehen, bedeutet dies, dass es der htop-Prozess selbst ist. Wenn Sie schlafen 30 und laufen htop wieder, Sie bemerken, dass es immer noch nur 1 laufenden Prozess. Das ist, weil der Schlaf nicht läuft, ist es schlafen oder im Leerlauf oder in anderen Worten warten auf etwas passieren. Ein laufender Prozess ist ein Prozess, der derzeit auf der physikalischen CPU läuft oder sein Warten auf die CPU abwartet. Wenn Sie cat devurandom gt devnull ausführen, das wiederholt zufällige Bytes erzeugt und in eine spezielle Datei schreibt, die niemals gelesen wird, sehen Sie, dass es jetzt zwei laufende Prozesse gibt. So gibt es nun zwei laufende Prozesse (Zufallszahlengenerierung und die Katze, die den Inhalt von procloadavg liest) und man merkt auch, dass sich die Lastmittelwerte erhöht haben. Der Lastmittelwert repräsentiert die mittlere Systembelastung über einen Zeitraum. Die Ladezahl wird berechnet, indem die Anzahl der laufenden (laufenden oder wartenden) und unterbrechungsfreien Prozesse (Warten auf Festplatten - oder Netzwerkaktivität) berechnet wird. So ist es einfach eine Reihe von Prozessen. Die Lastmittelwerte sind dann die durchschnittliche Anzahl der Prozesse während der letzten 1, 5 und 15 Minuten, rechts Es stellt sich heraus, dass es nicht so einfach ist. Der Lastmittelwert ist der exponentiell gedämpfte gleitende Durchschnitt der Lastzahl. Aus Wikipedia: Mathematisch gesprochen, haben alle drei Werte immer die gesamte Systembelastung, da das System gestartet wurde. Sie alle zerfallen exponentiell, aber sie verfallen mit unterschiedlicher Geschwindigkeit. Demzufolge addiert sich der 1-minütige Lastdurchschnitt 63 der Last aus der letzten Minute plus 37 der Last seit dem Einschalten ohne die letzte Minute. Daher ist es nicht technisch genau, dass der 1-minütige Lastdurchschnitt nur die letzten 60 Sekunden-Aktivität enthält (da er noch 37 Aktivitäten aus der Vergangenheit beinhaltet), aber das schließt meistens die letzte Minute ein. Ist das, was Sie erwartet Let39s zurück zu unserer Zufallsgeneration. Während technisch nicht korrekt, ist dies, wie ich die Lasten Mittelwerte zu vereinfachen, um es einfacher zu Grund zu ihnen. In diesem Fall ist der Zufallszahlenerzeugungsprozess CPU-gebunden, so dass der Lastmittelwert über die letzte Minute 1,00 oder im Durchschnitt 1 laufenden Prozess ist. Da es nur eine CPU auf meinem System gibt, ist die CPU-Auslastung 100, da meine CPU nur einen Prozess zu einem Zeitpunkt ausführen kann. Wenn ich zwei Kerne hatte, würde meine CPU-Auslastung 50 sein, da mein Computer kann zwei Prozesse zur gleichen Zeit laufen. Die Last Durchschnitt eines Computers mit 2 Kerne, die eine 100 CPU-Auslastung wäre 2,00. Sie können die Anzahl der Kerne oder CPUs in der oberen linken Ecke von htop oder durch Ausführen von nproc sehen. Da die Ladungsnummer auch Prozesse in unterbrechungsfreien Zuständen einschließt, die wenig Einfluss auf die CPU-Auslastung haben, ist es nicht ganz korrekt, die CPU-Auslastung von den Lastdurchschnitten zu unterscheiden, wie ich es eben getan habe. Dies erklärt auch, warum Sie hohe Lastdurchschnitte sehen können, aber nicht viel Belastung auf der CPU. Aber es gibt Werkzeuge wie mpstat, die die momentane CPU-Auslastung zeigen kann. Warum verwenden wir Lastmittelwerte? In der oberen rechten Ecke zeigt htop die Gesamtzahl der Prozesse an und wie viele davon ausgeführt werden. Aber es sagt, dass Aufgaben nicht Prozesse sind. Warum ein anderer Name für einen Prozess ist eine Aufgabe. Der Linux-Kernel bezieht sich intern auf Prozesse als Tasks. Htop verwendet Tasks anstelle von Processes wahrscheinlich, weil it39s kürzer und speichert einige Bildschirm Platz. Sie können auch Threads in htop sehen. Um die Sichtbarkeit von Threads zu aktivieren, drücken Sie Shift H auf Ihrer Tastatur. Wenn Sie sehen, Aufgaben: 23, 10 thr. Es bedeutet, dass sie sichtbar sind. Sie können auch Kernel-Threads mit Shift K sehen. Wenn sie sichtbar sind, sagen es39ll Tasks: 23, 40 kthr. Prozess-ID PID Jedes Mal, wenn ein neuer Prozess gestartet wird, wird ihm eine Identifikationsnummer (ID) zugewiesen, die kurz als Prozess-ID oder PID bezeichnet wird. Wenn Sie ein Programm im Hintergrund (Amp) von bash ausführen. Sehen Sie die Auftragsnummer in eckigen Klammern und die PID. Wenn Sie es verpasst haben, können Sie die Variable in bash, die auf die letzte Hintergrund-Prozess-ID erweitern wird. Prozess-ID ist sehr nützlich. Es kann verwendet werden, um Details über den Prozess zu sehen und zu kontrollieren. Procfs ist ein Pseudo-Dateisystem, mit dem Userland-Programme Informationen aus dem Kernel abrufen können, indem sie Dateien lesen. Es ist in der Regel auf proc montiert und Ihnen sieht es aus wie ein normales Verzeichnis, das Sie mit ls und cd durchsuchen können. Alle Informationen zu einem Prozess finden Sie unter procltpidgt. Procltpidgtcmdline gibt beispielsweise den Befehl, der zum Starten des Prozesses verwendet wurde. Ugh, das stimmt nicht. Es stellt sich heraus, dass der Befehl durch das 0-Byte getrennt ist. Die wir durch ein Leerzeichen oder eine neue Zeile ersetzen können Das Prozessverzeichnis für einen Prozess kann Links enthalten Zum Beispiel zeigt cwd auf das aktuelle Arbeitsverzeichnis und exe auf die ausgeführte Binärdatei. So ist dies, wie htop. oben. Ps und andere diagnostische Dienstprogramme erhalten ihre Informationen über die Details eines Prozesses: sie lesen es aus procltpidgtltfilegt. Wenn Sie einen neuen Prozess starten, wird der Prozess, der den neuen Prozess gestartet wird, der übergeordnete Prozess genannt. Das neue Verfahren ist nun ein untergeordneter Prozess für den übergeordneten Prozess. Diese Beziehungen bilden eine Baumstruktur. Wenn Sie F5 in htop getroffen haben. Können Sie die Prozesshierarchie sehen. Sie können auch die f-Schalter mit ps Wenn Sie sich jemals gefragt, warum Sie oft sehen, bash oder sshd als Eltern von einigen Ihrer Prozesse, hier39 warum. Dies ist, was passiert, wenn Sie ausführen, sagen, Datum aus Ihrer Bash-Shell: bash erstellt einen neuen Prozess, der eine Kopie von sich selbst ist (mit einem Gabel Systemaufruf) wird es dann laden Sie das Programm aus der ausführbaren Datei bindate in den Speicher (mit einem Exec-Systemaufruf) bash als der übergeordnete Prozess wird warten, bis sein Kind zu beenden, so dass die sbininit mit einer ID von 1 beim Booten gestartet wurde, die den SSH-Daemon sshd hervorgebracht hat. Wenn Sie eine Verbindung zum Computer herstellen, erzeugt sshd einen Prozess für die Sitzung, der wiederum die Bash-Shell startet. Ich mag diese Baumansicht in htop verwenden, wenn I39m auch daran interessiert, alle Threads zu sehen. Jeder Prozess gehört einem Benutzer. Die Benutzer werden mit einer numerischen ID dargestellt. Mit dem Befehl id können Sie den Namen für diesen Benutzer herausfinden. Es stellt sich heraus, dass id diese Informationen aus den Dateien etcpasswd und etcgroup bekommt. That39s, weil die Name Service Switch (NSS) Konfigurationsdatei etcnsswitch. conf sagt, diese Dateien zu verwenden, um Namen zu lösen. Der Wert von compat (Kompatibilitätsmodus) ist derselbe wie Dateien, außer dass andere spezielle Einträge zulässig sind. Dateien bedeutet, dass die Datenbank in einer Datei (geladen von libnssfiles. so) gespeichert ist. Sie können aber auch Ihre Benutzer in anderen Datenbanken und Diensten speichern oder beispielsweise LDAP (Lightweight Directory Access Protocol) verwenden. Etcpasswd und etcgroup sind Klartext-Dateien, die numerische IDs zu menschlich lesbaren Namen. Passwd Aber wo sind die Passwörter Sie sind eigentlich in etc Schatten. What39s, dass Kauderwelsch 6 ist das Passwort Hashing-Algorithmus verwendet, in diesem Fall steht für sha512 gefolgt von zufällig generierten Salz, um gegen Regenbogen-Tabelle Angriffe und schließlich die Hash Ihres Passwortes Salz zu schützen Wenn Sie ein Programm ausführen, wird es als Ihr Benutzer ausgeführt werden . Auch wenn die ausführbare Datei nicht im Besitz von Ihnen ist. Wenn you39d wie ein Programm als root oder ein anderer Benutzer ausführen, that39s, was sudo ist. Aber was, wenn Sie sich als anderer Benutzer anmelden möchten, um verschiedene Befehle zu starten, verwenden Sie sudo bash oder sudo - u user bash. Sie können die Shell als Benutzer verwenden. Wenn Sie nicht ständig nach dem Root-Passwort gefragt werden, können Sie es einfach deaktivieren, indem Sie Ihren Benutzer zur Datei etcsudoers hinzufügen. Richtig, nur Wurzel kann es tun. Was hier geschieht, ist, dass Sie den Echo-Befehl als root ausführen, aber die Zeile der etcsudoers-Datei immer noch als Benutzer anhängen. Normalerweise gibt es zwei Möglichkeiten: echo quotUSER ALLE (ALLE) NOPASSWD: ALLquot sudo tee - a etcsudoers sudo bash - c quotecho 39USER ALL (ALL) NOPASSWD: ALL39 gtgt etcsudoersquot Im ersten Fall wird tee - a seine Standard-Eingabe anhängen In die Datei und führen diesen Befehl als root aus. Im zweiten Fall führen wir bash als root aus und bitten ihn, einen Befehl (-c) auszuführen, und der gesamte Befehl wird als root ausgeführt. Beachten Sie die tricky 39 Business hier, die diktieren, wenn die USER-Variable erweitert werden wird. Wenn Sie einen Blick auf die etcsudoers Datei sehen, werden Sie sehen, dass es mit It39s eine hilfreiche Warnung beginnt, die besagt, dass Sie diese Datei mit sudo visudo bearbeiten sollten. Es wird den Inhalt der Datei vor dem Speichern validieren und Sie daran hindern, Fehler zu machen. Wenn Sie don39t verwenden visudo und einen Fehler machen, kann es sperren Sie aus Sudo. Was bedeutet, dass Sie nicht in der Lage, Ihren Fehler zu korrigieren Let39s sagen, dass Sie Ihr Passwort ändern möchten. Sie können es mit dem Befehl passwd. Es wird, wie wir bereits gesehen haben, das Passwort in die Datei etcshadow speichern. Diese Datei ist empfindlich und nur durch Root beschreibbar: So wie ist es möglich, dass das passwd Programm, das von einem normalen Benutzer ausgeführt wird, auf eine geschützte Datei schreiben kann, sagte ich früher, dass, wenn Sie einen Prozess starten, es von Ihnen gehört, auch wenn Ist der Besitzer der ausführbaren Datei ein anderer Benutzer. Es stellt sich heraus, dass Sie dieses Verhalten ändern können, indem Sie Dateiberechtigungen ändern. Let39s nehmen einen Blick. Beachten Sie den Brief. Es wurde mit sudo chmod us usrbinpasswd durchgeführt. Es bedeutet, dass eine ausführbare Datei als der Eigentümer der Datei, die Wurzel ist in diesem Fall gestartet werden. Sie finden die sogenannten setuid executables mit find bin - user root - perm - us. Beachten Sie, dass Sie dies auch mit group (gs) tun können. Wir werden als nächstes die Prozesszustandsspalte in htop betrachten, die einfach mit dem Buchstaben S bezeichnet wird. Hier sind die möglichen Werte: Ich habe sie bestellt, wie oft ich sie sehe. Beachten Sie, dass, wenn Sie ps. Es zeigt auch Substate wie Ss. R. Ss. Etc. R - laufend oder lauffähig (in der Warteschlange) In diesem Zustand wird der Prozess derzeit ausgeführt oder auf einer Ausführungswarteschlange, die darauf warten, ausgeführt zu werden. Was bedeutet es zu laufen Wenn Sie den Quellcode eines Programms kompilieren, das Sie geschrieben haben, ist dieser Maschinencode CPU-Anweisungen. Es wird in einer Datei gespeichert, die ausgeführt werden kann. Wenn Sie ein Programm starten, wird es in den Speicher geladen und dann führt die CPU diese Anweisungen aus. Grundsätzlich bedeutet das, dass die CPU Anweisungen ausführt. Oder, mit anderen Worten, knirschende Zahlen. S - Unterbrechbarer Schlaf (Warten auf ein Ereignis) Damit werden die Codebefehle dieses Prozesses nicht auf der CPU ausgeführt. Stattdessen ist dieser Prozess wartet auf etwas - ein Ereignis oder eine Bedingung - passieren. Wenn ein Ereignis auftritt, setzt der Kernel den Status zum Laufen. Ein Beispiel ist der Schlaf utily von coreutils. Es schläft für eine bestimmte Anzahl von Sekunden (ungefähr). Das ist also unterbrechbarer Schlaf. Wie können wir es unterbrechen? Sie können ein Signal in htop senden, indem Sie F9 drücken und dann eines der Signale im Menü auf der linken Seite auswählen. Das Senden eines Signals wird auch als kill bezeichnet. That39s, weil kill ist ein Systemaufruf, der ein Signal an einen Prozess senden kann. Es gibt ein Programm binkill, dass dieses System von Userland aufrufen kann und das Standard-Signal zu verwenden ist TERM, die den Prozess zu beenden, oder in anderen Worten versuchen, es zu töten. Signal ist nur eine Zahl. Zahlen sind schwer zu merken, so geben wir ihnen Namen. Signalnamen werden normalerweise in Großbuchstaben geschrieben und können mit SIG vorangestellt werden. Einige häufig verwendete Signale sind INT. TÖTEN. HALT. CONT. Hup Let39s unterbrechen den Sleep-Prozess durch Senden der INT aka SIGINT aka 2 aka Terminal Interrupt-Signal. Dies geschieht auch, wenn Sie CTRL C auf Ihrer Tastatur drücken. Bash wird das senden die Vordergrund-Prozess das SIGINT-Signal, wie wir es nur manuell getan haben. Übrigens, in bash. Kill ist ein eingebauter Befehl, obwohl es binkill auf den meisten Systemen gibt. Warum können Prozesse getötet werden, wenn die Grenze für Prozesse, die Sie erstellen können, erreicht wird. Diese Befehle tun dasselbe: kill - INT 10089 kill -2 10089 binkill -2 10089 Ein weiteres nützliches Signal ist SIGKILL alias 9. Sie können es benutzt haben, um einen Prozess zu töten, der nicht auf Ihre hektischen CTRL C-Tastaturpressen reagiert. Wenn Sie ein Programm schreiben, können Sie Signalhandler einrichten, die Funktionen sind, die aufgerufen werden, wenn Ihr Prozess ein Signal empfängt. Mit anderen Worten, können Sie das Signal zu fangen und dann etwas tun, zum Beispiel aufräumen und heruntergefahren anmutig. Das Senden von SIGINT (der Benutzer möchte einen Prozess unterbrechen) und SIGTERM (der Benutzer will den Prozess beenden) bedeutet nicht, dass der Prozess beendet wird. Sie können diese Ausnahme bei der Ausführung von Python-Skripten gesehen haben: Sie können dem Kernel mitteilen, dass er einen Prozess eindringlich beendet und ihm nicht die Möglichkeit gibt, mit dem KILL-Signal zu antworten: D - Unterbrechungsfreier Schlaf (normalerweise IO) Im Gegensatz zum unterbrochenen Schlaf können Sie nicht aufwachen Up dieses Prozesses mit einem Signal. Das ist, warum viele Leute fürchten, diesen Zustand zu sehen. Sie können diese Prozesse nicht töten, weil das Töten bedeutet, SIGKILL-Signale an Prozesse zu senden. Dieser Zustand wird verwendet, wenn der Prozess ohne Unterbrechung warten muss oder wenn erwartet wird, dass das Ereignis schnell auftritt. Wie das Lesen von einem Datenträger. Aber das sollte nur für einen Bruchteil einer Sekunde geschehen. Ununterbrochene Prozesse warten auf IO nach einem Seitenfehler. Der Processtask kann in diesem Zustand nicht unterbrochen werden, da er keine Signale verarbeiten kann, wenn dies der Fall wäre, würde ein anderer Seitenfehler passieren und er würde wieder da sein, wo er war. Mit anderen Worten, dies könnte passieren, wenn Sie Network File System (NFS) verwenden und es dauert eine Weile, um zu lesen und zu schreiben. Oder in meiner Erfahrung kann es auch bedeuten, dass einige der Prozesse sind austauschen viel bedeutet, dass Sie zu wenig Speicherplatz haben. Let39s versuchen, einen Prozess, um in den unterbrechungsfreien Schlaf zu bekommen. 8.8.8.8 ist ein öffentlicher DNS-Server, der von Google bereitgestellt wird. Sie haben nicht ein offenes NFS dort. Aber das will uns nicht aufhalten. Wie herauszufinden, was39s verursacht diese strace Let39s strace den Befehl in der Ausgabe von ps oben. Der Aufruf des Mount-Systems blockiert also den Prozess. Wenn Sie sich wundern, können Sie mount mit einer intr-Option laufen lassen als unterbrechbar: sudo mount 8.8.8.8: tmp - o intr. Z - verstorbener Prozess (Quotenzombiequot), beendet, aber nicht von seinem Elternteil geerntet Wenn ein Prozess mit dem Ausgang endet und es noch Kindprozesse hat, werden die Kindprozesse zu Zombieprozessen. Wenn Zombie-Prozesse für eine kurze Zeit existieren, ist es völlig normal Zombie-Prozesse, die für eine lange Zeit existieren können einen Fehler in einem Programm anzeigen Zombie-Prozesse don39t verbrauchen Speicher, nur eine Prozess-ID Sie können nicht töten einen Zombie-Prozess Sie können fragen schön Eltern Prozess zu ernten die Zombies (das SIGCHLD-Signal) Sie können töten, die zombie39s Elternprozess, um loszuwerden, die Eltern und ihre Zombies Ich werde einige C-Code schreiben, um dies zu zeigen. Hier ist unser Programm. Let39s installieren den GNU C Compiler (GCC). Kompilieren Sie es und führen Sie es aus Sehen Sie sich die Prozess-Baum Wir haben unsere Zombie Wenn der übergeordnete Prozess abgeschlossen ist, ist der Zombie weg. Wenn Sie Schlaf (20) mit while (true) ersetzt haben, dann wäre der Zombie sofort weg. Mit Ausgang. Werden der gesamte Speicher und die damit verbundenen Ressourcen freigegeben, so dass sie von anderen Prozessen verwendet werden können. Warum halten die Zombie-Prozesse um dann Der übergeordnete Prozess hat die Möglichkeit, herauszufinden, seine Kind-Prozess-Exit-Code (in einem Signal-Handler) mit dem Warten-System-Aufruf. Wenn ein Prozess schläft, muss er warten, bis er aufwacht. Warum nicht einfach kräftig aufwachen und töten. Aus dem gleichen Grund werfen Sie Ihr Kind in den Müll werfen, wenn Sie es müde. Schlechte Dinge könnten passieren. T-gestoppt durch Job-Steuersignal Ich habe zwei Terminal-Fenster geöffnet und ich kann meine Benutzer-Prozesse mit ps u ansehen. Ich werde die - bash und ps u Prozesse aus der Ausgabe unten weglassen. Führen Sie nun cat devurandom gt devnull in einem Terminalfenster aus. Sein Zustand ist R, was bedeutet, dass es läuft. Drücken Sie STRG Z, um den Vorgang zu beenden. Sein Zustand ist jetzt T. Fg fg im ersten Terminal, um es wieder aufzunehmen. Eine andere Möglichkeit, einen Prozess wie diesen zu stoppen, ist, das STOP-Signal mit Kill an den Prozess zu senden. Um die Ausführung des Prozesses fortzusetzen, können Sie das CONT-Signal verwenden. T - wird vom Debugger während des Trace gestoppt. Zuerst installieren Sie den GNU Debugger (gdb). Führen Sie ein Programm aus, das auf eingehende Netzwerkverbindungen auf Port 1234 hört. Es bedeutet, dass es auf Daten aus dem Netzwerk wartet. Führen Sie den Debugger aus und fügen Sie ihn dem Prozess mit ID 3905 zu. Sie werden sehen, dass der Zustand t ist, was bedeutet, dass dieser Prozess im Debugger verfolgt wird. Linux ist ein Multitasking-Betriebssystem, das bedeutet, dass auch bei einer einzigen CPU mehrere Prozesse gleichzeitig ausgeführt werden können. Sie können eine Verbindung zu Ihrem Server über SSH und Blick auf die Ausgabe von htop, während Ihr Webserver liefert die Inhalte Ihres Blogs an Ihre Leser über das Internet. Wie ist das möglich, wenn eine einzelne CPU nur eine Anweisung zu einem Zeitpunkt ausführen kann Die Antwort ist Time-Sharing. Ein Prozess läuft für ein wenig Zeit, dann wird es unterbrochen, während die anderen Prozesse abwarten zu laufen gedreht läuft für eine Weile. Die Zeit, die ein Prozess ausführt, wird als Zeitscheibe bezeichnet. Die Zeitscheibe ist in der Regel ein paar Millisekunden, so dass Sie don39t wirklich bemerken, dass viel, wenn Ihr System nicht unter hoher Last. (It39d wirklich interessant, um herauszufinden, wie lange Zeit Scheiben in der Regel sind in Linux.) Dies sollte dazu beitragen, erklären, warum die Belastung Durchschnitt ist die durchschnittliche Anzahl der laufenden Prozesse. Wenn Sie nur einen Kern haben und der Lastmittelwert 1,0 beträgt. Wurde die CPU bei 100 verwendet. Wenn der Lastmittelwert höher als 1,0 ist. Bedeutet dies, dass die Anzahl der Prozesse, die ausgeführt werden sollen, höher ist als die CPU ausgeführt werden kann, so dass es zu Verlangsamungen oder Verzögerungen kommen kann. Wenn die Last kleiner als 1,0 ist. Es bedeutet, dass die CPU manchmal im Leerlauf ist und nichts tut. Dies sollte auch Ihnen einen Anhaltspunkt geben, warum manchmal die Laufzeit eines Prozesses, der seit 10 Sekunden läuft, höher oder niedriger als genau 10 Sekunden ist. Prozessnähe und Priorität Wenn Sie mehr Aufgaben als die Anzahl der verfügbaren CPU-Kerne ausführen müssen, müssen Sie irgendwie entscheiden, welche Tasks als nächstes ausgeführt werden sollen und welche Sie warten müssen. Dies ist, was die Aufgabe Scheduler ist verantwortlich für. Der Scheduler im Linux-Kernel ist verantwortlich für die Entscheidung, welcher Prozess auf einer Laufwarteschlange als nächstes ausgewählt werden soll, und er hängt von dem im Kernel verwendeten Scheduler-Algorithmus ab. Sie können den Scheduler generell nicht beeinflussen, aber Sie können wissen, welche Prozesse für Sie wichtiger sind, und der Scheduler kann dies berücksichtigen. Niceness (NI) ist Benutzer-Raum Priorität für Prozesse, von -20, die die höchste Priorität bis 19, die die niedrigste Priorität ist. Es kann verwirrend sein, aber Sie können denken, dass ein schönes Verfahren zu einem weniger schönen Prozess führt. Je schöner ein Prozess ist, desto mehr ergibt er sich. Von dem, was I39ve zusammen durch das Lesen von StackOverflow und anderen Websites zusammengesetzt, ein niceness Ebene erhöhen um 1 sollte eine 10 mehr CPU-Zeit, um den Prozess. Die Priorität (PRI) ist die Kernel-Space-Priorität, die der Linux-Kernel verwendet. Die Prioritäten reichen von 0 bis 139 und der Bereich von 0 bis 99 ist Echtzeit und 100 bis 139 für Benutzer. Sie können die Nessigkeit ändern und der Kernel berücksichtigt es, aber Sie können die Priorität nicht ändern. Die Beziehung zwischen dem schönen Wert und der Priorität lautet: Der Wert von PR 20 (-20 bis 19) ist 0 bis 39, der 100 bis 139 abbildet. Sie können die Nettigkeit eines Prozesses festlegen, bevor Sie ihn starten. Ändern Sie die nicencess, wenn ein Programm bereits mit renice läuft. Hier ist was die CPU-Auslastung Farben bedeuten: Blau: Low Priority Threads (nice gt 0) Grün: Normal Priority Threads Rot: Kernel Threads Speicherverbrauch - VIRTRESSHRMEM Ein Prozess hat die Illusion, der einzige in Erinnerung zu sein. Dies wird durch die Verwendung von virtuellen Speicher erreicht. Ein Prozess hat keinen direkten Zugriff auf den physischen Speicher. Stattdessen hat es seinen eigenen virtuellen Adreßraum und der Kernel übersetzt die virtuellen Speicheradressen in den physischen Speicher oder kann einen Teil davon auf die Platte abbilden. Aus diesem Grund kann es aussehen, wie Prozesse mehr Speicher verwenden, als Sie auf Ihrem Computer installiert haben. Der Punkt, den ich hier machen möchte, ist, dass es nicht sehr einfach ist, herauszufinden, wie viel Speicher ein Prozess aufnimmt. Möchten Sie auch die gemeinsam genutzten Bibliotheken oder Festplatten zugeordneten Speicher zählen Aber der Kernel liefert und htop zeigt einige Informationen, die Ihnen helfen können, den Speicherverbrauch zu schätzen. Hier ist, was die Speicherauslastung Farben bedeuten: Grün: Verwendete Speicher Blau: Buffer Orange: Cache VIRTVSZ - Virtuelles Bild Die Gesamtmenge des virtuellen Speichers, die von der Aufgabe verwendet wird. Es enthält alle Code-, Daten - und gemeinsam genutzten Bibliotheken sowie ausgelagerte Seiten und Seiten, die zwar zugeordnet, aber nicht verwendet wurden. VIRT ist die Nutzung des virtuellen Speichers. Es enthält alles, einschließlich Speicher zugeordneten Dateien. Wenn eine Anwendung 1 GB Arbeitsspeicher anfordert, aber nur 1 MB verwendet, meldet VIRT 1 GB. Wenn es mmap s eine 1 GB-Datei und nie verwendet, VIRT wird auch berichten 1 GB. Die meiste Zeit ist dies keine nützliche Zahl. RESRSS - Resident-Größe Der nicht ausgelagerte physische Speicher, den eine Aufgabe verwendet hat. RES ist residente Speicherverwendung, d. H. Was sich gerade im physikalischen Speicher befindet. Während RES ein besserer Indikator dafür sein kann, wie viel Speicher ein Prozess verwendet als VIRT. Beachten Sie, dass dies nicht die ausgelagerten Speicher enthält einige Speicher kann mit anderen Prozessen geteilt werden Wenn ein Prozess 1 GB Arbeitsspeicher verwendet und es fork () aufruft. Das Ergebnis der Forking werden zwei Prozesse, deren RES ist sowohl 1 GB, aber nur 1 GB wird tatsächlich verwendet werden, da Linux verwendet copy-on-write. SHR - Shared Mem size Der von einem Task verwendete Shared Memory. Es spiegelt einfach das Gedächtnis wider, das möglicherweise mit anderen Prozessen geteilt werden könnte. TODO: Ich sollte das beenden. MEM - Speicherverbrauch Eine Aufgabe ist die derzeit verwendete Freigabe des verfügbaren physischen Speichers. Dies ist RES dividiert durch den gesamten RAM, den Sie haben. Wenn RES 400M ist und Sie 8 Gigabyte RAM haben, wird MEM 4008192100 4.88 sein. Ich startete ein Digital Ocean Tröpfchen mit Ubuntu Server. Was sind die Prozesse, die beim Booten gestartet werden Benötigst du sie eigentlich? Hier sind meine Forschungshinweise zu den Prozessen, die beim Start auf einem frischen Digital Ocean-Tröpfchen mit Ubuntu Server 16.04.1 LTS x64 ausgeführt werden. Das Programm sbininit (auch init genannt) koordiniert den Rest des Bootvorgangs und konfiguriert die Umgebung für den Benutzer. Wenn der init-Befehl gestartet wird, wird er zu den Eltern oder Großeltern aller Prozesse, die automatisch auf dem System gestartet werden. Was passiert, wenn Sie es töten systemd-journald ist ein Systemdienst, der Protokollierungsdaten sammelt und speichert. Es erstellt und pflegt strukturierte, indizierte Zeitschriften basierend auf Protokollinformationen, die von einer Vielzahl von Quellen empfangen werden. Eine der wichtigsten Änderungen in journald war, einfache Klartext-Protokolldateien durch ein spezielles Dateiformat zu ersetzen, das für Protokollnachrichten optimiert wurde. Dieses Dateiformat ermöglicht es Systemadministratoren, auf relevante Nachrichten effizienter zuzugreifen. Es bringt auch einige der Macht der Datenbank-driven zentrale Protokollierung Implementierungen auf einzelne Systeme. Sie sollten den Befehl journalctl verwenden, um Protokolldateien abzufragen. Journalctl COMMsshd-Protokolle von sshd journalctl COMMsshd - o json-hübsche Protokolle von sshd in JSON journalctl --since quot2015-01-10quot --until quot2015-01-11 03: 00quot journalctl --nach 09:00 - bis vor 1 Stunde agoquot Journalctl - seit gestern journalctl - b logs seit boot journalctl - f folgt logs journalctl --disk-usage journalctl --vacuum-size1G Es sieht aus, als ob es nicht möglich ist, diesen Dienst zu entfernen oder zu deaktivieren, man kann nur das Logging deaktivieren. Der lvmetad-Daemon cachiert LVM-Metadaten, so dass LVM-Befehle Metadaten lesen können, ohne die Platten zu scannen. Das Metadaten-Caching kann ein Vorteil sein, da das Scannen von Festplatten zeitaufwendig ist und die normale Arbeit des Systems und der Festplatten beeinträchtigen kann. Aber was ist LVM (Logical Volume Management) Sie können von LVM als quotdynamic Partitionsquot denken, was bedeutet, dass Sie createresizedelete LVM quotpartitionsquot (they39re genanntes quotLogical Volumesquot in LVM-sprechen) von der Befehlszeile, während Ihr Linux-System ausgeführt wird: kein Neustart erforderlich ist Das System, um den Kernel auf die neu erstellten oder veränderten Partitionen aufmerksam zu machen. Es klingt wie Sie sollten es behalten, wenn Sie LVM verwenden. Systemd-udevd hört auf kernel uevents. Für jedes Ereignis führt systemd-udevd die in den udev-Regeln angegebenen Matching-Anweisungen aus. Udev ist ein Geräte-Manager für den Linux-Kernel. Als Nachfolger von devfsd und hotplug verwaltet udev primär Device-Knoten im dev-Verzeichnis. Also dieser Service verwaltet dev. Ich bin nicht sicher, ob ich es auf einem virtuellen Server laufen lassen. Systemd-timesyncd ist ein Systemdienst, der verwendet werden kann, um die lokale Systemuhr mit einem entfernten Netzwerk-Zeitprotokoll-Server zu synchronisieren. So ersetzt dies ntpd. Wenn wir einen Blick auf die offenen Ports auf diesem Server werfen: Bisher waren bei Ubuntu 14.04 atd - run Jobs in der Warteschlange für spätere Ausführung. Atd betreibt Jobs in der Warteschlange. An und Batch-Lesebefehle von der Standardeingabe oder einer spezifizierten Datei, die zu einem späteren Zeitpunkt ausgeführt werden sollen Im Gegensatz zu cron, bei dem Jobs, die periodisch wiederholt werden, Aufträge zu einem bestimmten Zeitpunkt einmal ausführen. Ich habe eigentlich nie benutzt es bis jetzt. Snappy Ubuntu Core ist eine neue Wiedergabe von Ubuntu mit Transaktions-Updates - ein minimales Server-Image mit den gleichen Bibliotheken wie heute Ubuntu, aber Anwendungen werden durch einen einfacheren Mechanismus zur Verfügung gestellt. Entwickler von mehreren Linux-Distributionen und Unternehmen haben heute die Zusammenarbeit im Snap-Universal-Linux-Paketformat bekannt gegeben. So kann ein einziges Binärpaket perfekt und sicher auf jedem beliebigen Linux-Desktop, Server, Cloud oder Gerät funktionieren. Anscheinend ist es ein vereinfachtes Debip-Paket und you39re supposted, um alle Abhängigkeiten in einem einzelnen Verschluss zu bündeln, den Sie verteilen können. I39ve nie verwendet snappy zur Bereitstellung oder Verteilung von Anwendungen auf Servern. Bei der Datenverarbeitung ist D-Bus oder DBus ein Prozess der Interprozesskommunikation (IPC) und Remoteprozeduraufruf (RPC), der die Kommunikation zwischen mehreren Computerprogrammen (dh Prozessen) ermöglicht, die gleichzeitig auf derselben Maschine ausgeführt werden Es für Desktop-Umgebungen, sondern auf einem Server, um Web-Anwendungen laufen Ich frage mich, wie spät es ist und ob es mit NTP Oops synchronisiert wird. Soll das wohl behalten. Systemd-logind ist ein Systemdienst, der Benutzerlogins verwaltet. Cron - daemon zum Ausführen von geplanten Befehlen (Vixie Cron) - f Im Vordergrundmodus bleiben, don39t daemonisieren. Sie können Aufgaben planen, um periodisch mit cron auszuführen. Verwenden Sie crontab - e, um die Konfiguration für Ihren Benutzer oder auf Ubuntu zu bearbeiten Ich neige dazu, die etccron. hourly zu verwenden. Etccron. daily. Etc. Verzeichnisse. Sie sehen die Protokolldateien mit grep cron varlogsyslog oder journalctl COMMcron oder sogar journalctl COMMcron --sincequotdatequot --untilquotdatequot You39ll wahrscheinlich wollen cron halten. Aber wenn Sie don39t, dann sollten Sie aufhören und deaktivieren Sie den Dienst: Weil sonst bei dem Versuch, es mit apt entfernen entfernen cron es wird versuchen, postfix installieren Es sieht aus wie cron braucht einen Mail-Transport-Agent (MTA), um E-Mails zu senden. Rsyslogd ist ein Systemdienstprogramm, das Unterstützung für die Meldungsprotokollierung bietet. In anderen Worten, it39s, was füllt Protokolldateien in varlog wie varlogauth. log für Authentifizierungs-Nachrichten wie SSH Login-Versuche. Die Konfigurationsdateien befinden sich in der Datei etcrsyslog. d. Sie können auch rsyslogd konfigurieren, um Protokolldateien an einen Remote-Server zu senden und die zentrale Protokollierung zu implementieren. Sie können den Logger-Befehl verwenden, um Meldungen an varlogsyslog in Hintergrundskripts zu protokollieren, z. B. solche, die beim Booten ausgeführt werden. Richtig, aber wir haben bereits systemd-journald laufen. Brauchen wir auch rsyslogd Rsyslog und Journal, die beiden Logging-Anwendungen auf Ihrem System, haben mehrere Besonderheiten, die sie geeignet für bestimmte Anwendungsfälle machen. In vielen Situationen ist es sinnvoll, ihre Fähigkeiten zu kombinieren, zum Beispiel um strukturierte Nachrichten zu erzeugen und sie in einer Datei-Datenbank zu speichern. Eine Kommunikationsschnittstelle, die für diese Kooperation benötigt wird, wird durch Eingangs - und Ausgangsmodule auf der Seite von Rsyslog und durch die Kommunikationsbuchse Journal39s bereitgestellt. Also, vielleicht werde ich es nur für den Fall behalten. Acpid - Erweiterter Konfigurations - und Power-Interface-Ereignis-Daemon acpid dient zur Benachrichtigung von User-Space-Programmen von ACPI-Ereignissen. Acpid sollte während des Systemstarts gestartet werden und läuft standardmäßig als Hintergrundprozess. Im Computing bietet die Advanced Configuration and Power Interface-Spezifikation (ACPI) einen offenen Standard, mit dem Betriebssysteme die Erkennung und Konfiguration von Computerhardwarekomponenten durchführen können, um das Energiemanagement durchzuführen, indem beispielsweise nicht verwendete Komponenten in den Ruhezustand versetzt werden Statusüberwachung. But I39m on a virtual server that I don39t intend to suspendresume. I am going to remove it for fun and see what happens. I was able to successfully reboot the droplet but after halt Digital Ocean thought it was still on so I had to Power Off using the web interface. So I should probably keep this. Lxcfs is a fuse filesystem mainly designed for use by lxc containers. On a Ubuntu 15.04 system, it will be used by default to provide two things: first, a virtualized view of some proc files and secondly, filtered access to the hosts cgroup filesystems. In summary, on a 15.04 host, you can now create a container the usual way, lxc-create. The resulting container will have correct results for uptime, top, etc. Its basically a userspace workaround to changes which were deemed unreasonable to do in the kernel. It makes containers feel much more like separate systems than they would without it. Not using LXC containers You can remove it with The AccountsService package provides a set of D-Bus interfaces for querying and manipulating user account information and an implementation of these interfaces based on the usermod(8), useradd(8) and userdel(8) commands. When I removed DBus it broke timedatectl. I wonder what removing this service will break. mdadm is a Linux utility used to manage and monitor software RAID devices. The name is derived from the md (multiple device) device nodes it administers or manages, and it replaced a previous utility mdctl. The original name was quotMirror Diskquot, but was changed as the functionality increased. RAID is a method of using multiple hard drives to act as one. There are two purposes of RAID: 1) Expand drive capacity: RAID 0. If you have 2 x 500 GB HDD then total space become 1 TB. 2) Prevent data loss in case of drive failure: For example RAID 1, RAID 5, RAID 6, and RAID 10. You can remove it with polkitd PolicyKit daemon polkit - Authorization Framework My understanding is that this is like fine-grained sudo. You can allow non privilegded users to do certain actions as root. For instance, reboot your computer when you39re running Linux on a desktop computer. But I39m running a server. You can remove it with Still wondering if this breaks something. sshd (OpenSSH Daemon) is the daemon program for ssh. - D When this option is specified, sshd will not detach and does not become a daemon. This allows easy monitoring of sshd. iscsid is the daemon (system service) that runs in the background, acting on iSCSI configuration, and managing the connections. From its manpage: The iscsid implements the control path of iSCSI protocol, plus some management facilities. For example, the daemon could be configured to automatically re-start discovery at startup, based on the contents of persistent iSCSI database. I had never heard of iSCSI: In computing, iSCSI (Listeniaskzi eye-skuz-ee) is an acronym for Internet Small Computer Systems Interface, an Internet Protocol (IP)-based storage networking standard for linking data storage facilities. By carrying SCSI commands over IP networks, iSCSI is used to facilitate data transfers over intranets and to manage storage over long distances. iSCSI can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval. The protocol allows clients (called initiators) to send SCSI commands (CDBs) to SCSI storage devices (targets) on remote servers. It is a storage area network (SAN) protocol, allowing organizations to consolidate storage into data center storage arrays while providing hosts (such as database and web servers) with the illusion of locally attached disks. You can remove it with sbinagetty --noclear tty1 linux agetty - alternative Linux getty getty, short for quotget ttyquot, is a Unix program running on a host computer that manages physical or virtual terminals (TTYs). When it detects a connection, it prompts for a username and runs the 39login39 program to authenticate the user. Originally, on traditional Unix systems, getty handled connections to serial terminals (often Teletype machines) connected to a host computer. The tty part of the name stands for Teletype, but has come to mean any type of text terminal. This allows you to log in when you are physically at the server. In Digital Ocean, you can click on Console in the droplet details and you will be able to interact with this terminal in your browser (it39s a VNC connection I think). In the old days, you39d see a bunch of ttys started a system boot (configured in etcinittab ), but nowadays they are spun up on demand by systemd. For fun, I removed this configuration file that launches and generates agetty : When I rebooted the server, I could still connect to it via SSH but I was no longer able to log in from the Digital Ocean web console. sshd: rootpts0 amp - bash amp htop sshd: rootpts0 means that there has been an SSH session established for the user root at the 0 pseudoterminal ( pts ). A pseudoterminal emulates a real text terminal. bash is the shell that I am using. Why is there a dash at the beginning Reddit user hirnbrot helpfully explained it: There39s a dash at the beginning because launching it as quot-bashquot will make it a login shell. A login shell is one whose first character of argument zero is a -, or one started with the --login option. This will then cause it to read a different set of configuration files. htop is an interactive process viewer tool that is running in the screenshot. Sometimes looking at strace is not enough. Another way to figure out what a program does is to look at its source code. First, I need to find out where to start looking. Here we find out that uptime is actually located at usrbinuptime and that on Ubuntu it is part of the procps package. You can then go to packages. ubuntu and search for the package there. If you scroll to the bottom of the page, you39ll see links to the source code repositories: Debian Package Source Repository git:git. debian. orgcollab-maintprocps. git Debian Package Source Repository (Browsable) anonscm. debian. orgcgitcollab-maintprocps. git File descriptors and redirection When you want to redirect standard error (stderr) to standard output (stdout), is it 2ampgt1 or 2gtamp1 You can memorize where the ampersand amp goes by knowing that echo something gt file will write something to the file file. It39s the same as echo something 1gt file. Now, echo something 2gt file will write the stderr output to file . If you write echo something 2gt1. it means that you redirect stderr to a file with the name 1. Add spaces to make it more clear: echo something 2gt 1. If you add amp before 1. it means that 1 is not a filename but the stream ID. So it39s echo something 2gtamp1 . Colors in PuTTY If you have missing elements in htop when you are using PuTTY, here is how to solve it. Right click on the title bar Click Change settings. Go to Window - gt Colours Select the Both radio button Click Apply Let39s write a very simple shell in C that demonstrates the use of fork exec wait system calls. Here39s the program shell. c . Compile the program. Have you ever wondered that when you launch a process in the background you only see that it has exited only after a while when you hit Enter That39s because the shell is waiting for your input. Only when you enter a command does it check for the status of the background processes and show if they39ve been terminated. Here is what I39d like to find out more about. process state substatuses ( Ss. Ss. R. etc.) kernel threads devpts more about memory ( CODE. DATA. SWAP ) figure out time slices length Linux scheduler algorithm pinning proceses to cores write about manual pages cpumemory colors in bars process ID limit amp fork bomb lsof. ionice. schedtool Here is a list of non-minor corrections and updates since the post was published. Idle time in procuptime is the sum of all cores (Dec 2, 2016) My parentchild printf in zombie. c was reversed (Dec 2, 2016) apt remove cron installs postfix because of a dependency to an MTA (Dec 3, 2016) id can load information from other sources (via etcnsswitch. conf ), not just etcpasswd (Dec 3, 2016) Describe etcshadow password hash format (Dec 3, 2016) Use visudo to edit the etcsudoers file to be safe (Dec 3, 2016) Explain MEM (Dec 3, 2016) Rewrite the section about load averages (Dec 4, 2016) Fix: kill 1234 by default sends TERM not INT (Dec 7, 2016) Explain CPU and memory color bars (Dec 7, 2016) Please let me know if there is something wrong in this post I will gladly correct it. Related posts Recent postsMay 2015 National Occupational Employment and Wage Estimates United States These estimates are calculated with data collected from employers in all industry sectors in metropolitan and nonmetropolitan areas in every state and the District of Columbia. Additional information, including the hourly and annual 10th, 25th, 75th, and 90th percentile wages and the employment percent relative standard error, is available in the downloadable XLS file . Major Occupational Groups ( Note --clicking a link will scroll the page to the occupational group): To sort this table by a different column, click on the column header Occupation title (click on the occupation title to view its profile) (1) Estimates for detailed occupations do not sum to the totals because the totals include occupations not shown separately. Estimates do not include self-employed workers. (2) Annual wages have been calculated by multiplying the hourly mean wage by a quotyear-round, full-timequot hours figure of 2,080 hours for those occupations where there is not an hourly wage published, the annual wage has been directly calculated from the reported survey data. (3) The relative standard error (RSE) is a measure of the reliability of a survey statistic. The smaller the relative standard error, the more precise the estimate. (4) Wages for some occupations that do not generally work year-round, full time, are reported either as hourly wages or annual salaries depending on how they are typically paid. (5) This wage is equal to or greater than 90.00 per hour or 187,200 per year. Last Modified Date: March 30, 2016 Recommend this page using: Facebook Twitter LinkedIn

Comments