Hi Ich muss in einen syslog template die pid ausgeben und dabei darauf achten das diese immer mit 4 Zahlen dargestellt wird. Also wenn die pid 789 ist soll 0789 stehen. für die pid benutze ich folgenden Befehl aber ich weis nicht wie ich ihn dazu bringe die Länge automatisch zu erweitern!? es ist syslog version 7.4.7. Danke im Vorhinein für eure Antworten! property(name="procid") mfg Herbert
Die PID ist aber traditionell 5-stellig (bzw. 16 Bit signed). Rechner, auf denen wirklich was los ist, nutzen evt. auch 32 Bit. Du solltest evt. etwas mehr über deine Anwendung erzählen.
Mein System ist ein normales Linux Betriebssystem und ich habe einfach ein Template für meine Syslog Nachrichten geschrieben. Die PID ist ja immer dir die PID welche auch in Htop angezeigt wird und dieses ist bei mir eben meistens 3 stellig aber ich brauch sie im Log File als 4stellige Zahl mit 0en davor wenn die pid nicht schon 4stellig ist. Gibt es dazu eine einfach Lösung die man in ein syslog template einbauen kann? mfg Herbert
Herbert schrieb: > Mein System ist ein normales Linux Betriebssystem und ich habe einfach > ein Template für meine Syslog Nachrichten geschrieben. Die PID ist ja > immer dir die PID welche auch in Htop angezeigt wird und dieses ist bei > mir eben meistens 3 stellig aber ich brauch sie im Log File als > 4stellige Zahl mit 0en davor wenn die pid nicht schon 4stellig ist. Und wie soll sie angezeigt werden, wenn sie 5 Stellen hat? > Gibt es dazu eine einfach Lösung die man in ein syslog template einbauen > kann? Laut Handbuch von rsyslog kann man "fixedwidth" angeben, dann wird mit Leerzeichen auf die gewünschte Länge aufgefüllt.
Hi Also wenn die PID länger als 4 Stellen ist wird sie normal angezeigt. Vorgabe ist einfach nur das sie immer 4 Stellen lang sein muss also das im Notfall eine 0 vorne eingefügt werden muss. Den Befehl fixedwidth habe ich schon gesehen aber der geht was ich so gelesen habe bei syslog version 7 noch nicht und vorallem fügt er ja nur leerzeichen ein! mfg Herbert
Herbert schrieb: > Also wenn die PID länger als 4 Stellen ist wird sie normal angezeigt. > Vorgabe ist einfach nur das sie immer 4 Stellen lang sein muss also das > im Notfall eine 0 vorne eingefügt werden muss. Diese Vorgabe ist ziemlich unsinnig. Da pid_t aus historischen Gründen als C-Typ "short" definiert ist, gehen die PIDs bis 32767, bevor sie wieder von vorn gezählt werden. Das heisst: In ca. 2/3 aller Fälle sind die PIDs 5-stellig. Wenn man eine einheitliche Formatierung haben will (und darum geht es doch?), sollte man die Vorgabe auf 5 Stellen korrigieren. Also: Hinterfrage die Vorgabe, statt etwas stumpfsinnig umsetzen zu wollen, was dann im Nachhinein wieder korrigiert werden muss.
:
Bearbeitet durch Moderator
Hi Also die Vorgabe ist ja eigentlich nur das die PID mindestens 4 stellen lang sein sollte. Wenn sie also bereits 4 oder 5 Zeichen lang ist ist es kein Problem. Aber wie setze ich im syslog Template um das auch dreistellige PIDs mit 4 Zeichen (0 davor) dargestellt werden?! Gibt es da überhaupt eine Möglichkeit? Also irgendwie eine Abfrage wie lange die PID ist und dann gegebenenfalls eine 0 hinzufügen!? mfg Herbert
Frank M. schrieb: > Herbert schrieb: >> Also wenn die PID länger als 4 Stellen ist wird sie normal angezeigt. >> Vorgabe ist einfach nur das sie immer 4 Stellen lang sein muss also das >> im Notfall eine 0 vorne eingefügt werden muss. > > Diese Vorgabe ist ziemlich unsinnig. Da pid_t aus historischen Gründen > als C-Typ "short" definiert ist, gehen die PIDs bis 32767, bevor sie > wieder von vorn gezählt werden. Bullshit, jedenfalls für Linux. Ich machs kurz: RTFM. man 5 proc: /proc/sys/kernel/pid_max (since Linux 2.5.34) This file specifies the value at which PIDs wrap around (i.e., the value in this file is one greater than the maximum PID). PIDs greater than this value are not allocated; thus, the value in this file also acts as a system-wide limit on the total number of pro cesses and threads. The default value for this file, 32768, results in the same range of PIDs as on earlier kernels. On 32-bit plat forms, 32768 is the maximum value for pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approxi mately 4 million). Ich habe jedenfalls grosse Systeme mit größerem pid_max laufen.
John Doe schrieb: > Bullshit, jedenfalls für Linux. Aha :-) > On 32-bit plat > forms, 32768 is the maximum value for pid_max. Hier stimmts also zumindest. > On 64-bit systems, > pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approxi > mately 4 million). Was hast Du an "can be set" nicht verstanden? Default ist es jedenfalls nicht. Hier bleibts bei 32768 als obere Grenze. Dass die "historische Grenze" von 32768 nicht auch überwunden werden kann, habe ich nirgendwo behauptet. Ich habe lediglich beschrieben, dass PIDs schon per Default durchaus mehr als 4 Stellen haben können. Dieses hast Du bestätigt. Danke :) > Ich habe jedenfalls grosse Systeme mit größerem pid_max laufen. Dass bei Dir die PIDs sogar mehr als 5 Stellen haben können, widerspricht nicht meiner Aussage, dass sie schon prinzipiell mehr als 4 Stellen haben können. "Bullshit" ist daher hier nicht ganz zutreffend ;-) Hier eine 64-Bit-Maschine:
1 | # uname -a |
2 | Linux www 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u2 (2018-02-21) x86_64 GNU/Linux |
Die PIDs werden auf diesem System nicht größer als 32768. Auch nicht nach Tagen, Wochen oder sogar Jahren uptime.
:
Bearbeitet durch Moderator
Frank M. schrieb: > "Bullshit" ist daher hier nicht ganz zutreffend ;-) In der Sache ist das sicherlich richtig, denn Du hast geschrieben: >Diese Vorgabe ist ziemlich unsinnig. Da pid_t aus historischen Gründen >als C-Typ "short" definiert ist, gehen die PIDs bis 32767, bevor sie >wieder von vorn gezählt werden. Und unter Linux ist das eben nicht der Typ short, sondern signed integer. Somit ist das schlichtweg falsch. > Die PIDs werden auf diesem System nicht größer als 32768. Auch nicht > nach Tagen, Wochen oder sogar Jahren uptime. Ja, weil das die Default-Einstellung ist, die von vielen so übernommen wird, wenn der Kenel kompiliert wird. Ändert aber nichts an Deiner falschen Aussage. Ob man die nun gleich als Bullshit bezeichnen muss, ist eine andere Sache ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.