Gibt es eine Möglichkeit, die Verwendung der ulimits für einen bestimmten Benutzer zu überprüfen? Ich weiß, dass Sie ulimits für einen einzelnen Prozess ändern können, wenn Sie ihn starten, oder für eine einzelne Shell, wenn Sie ausgeführt werden, aber ich möchte in der Lage sein, zu "überwachen", wie nah ein Benutzer an den Grenzwerten ist. Ich plane, ein bash
Skript zu schreiben, das den aktuellen Nutzungsprozentsatz zurückmeldet. Insbesondere möchte ich verfolgen:
- offene Dateien (
ulimit -n
) - max benutzer prozesse (
ulimit -u
) - anstehende Signale (
ulimit -i
)
Was ich herausfinden möchte, ist der Prozentsatz der Nutzung (0-100).
Antworten:
Vielleicht hilft das bei der ersten Frage:
Wenn Sie die Prozess-IDs (PIDs) des jeweiligen Benutzers kennen, können Sie die Grenzwerte für jeden Prozess folgendermaßen ermitteln:
Sie können die Anzahl der geöffneten Dateien für jede PID erhalten mit:
Vergleichen Sie dann einfach den Wert von
Max open files
mit der Anzahl der geöffneten Dateideskriptoren aus dem zweiten Befehl, um einen Prozentsatz zu erhalten.quelle
Den Prozentsatz der geöffneten Dateien, der Verarbeitung und der anstehenden Signale des aktuellen Benutzers mit verschiedenen unbequemen Methoden und Standardtools ausgeben:
Ausgabe auf meinem System:
Vorausgesetzt, diese Zahlen sind gut, zeigt diese Antwort, dass dies in der Shell möglich ist, aber wahrscheinlich nicht sollte, es sei denn, es gibt viel bessere Shell-Methoden. Eher wäre dieses Q besser mit
gcc
, oderpython
, etc. zu machen.quelle
Ulimits sind Eigenschaften von Prozessen und werden an untergeordnete Prozesse vererbt.
Sie können die Grenzen für einen anderen Prozess nicht abrufen.
quelle
man lsof
,man ps
, ...lsof
Betreuer Kopfschmerzen . Für den Endbenutzer jedoch nicht relevant. Ebenfalls falsch im Zusammenhang mit dieser Frage, da speziell nach Linux gefragt wird, das Schnittstellen (man proc
) dokumentiert hat .-1