pmcd(1)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 8 maj 2026 kl. 10.07 av Admin (diskussion | bidrag) (→‎pmcd(1) – Linux manualsida)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

NAMN

pmcd – insamlingsdemon för prestandamätvärden

SYNOPSIS

pmcd [-AfQSv?] [-c config] [-C nctx] [-D debug] [-H hostname]
     [-i ipaddress] [-l logfile] [-L bytes] [-M nmetric]
     [-n pmnsfile | -N pmnsfile] [-p port[,port ...]]
     [-q timeout] [-s sockname] [-t timeout] [-T traceflag]
     [-U username] [-x file]

BESKRIVNING

pmcd är insamlaren som används av Performance Co-Pilot, se PCPIntro(1), för att samla in prestandamätvärden på ett system. Som regel måste en instans av pmcd köras på ett system för att några prestandamätvärden ska vara tillgängliga för PCP.

pmcd accepterar anslutningar från klientprogram som körs antingen på samma maskin eller fjärranslutet, och tillhandahåller mätvärden och annan relaterad information från maskinen där pmcd körs.

pmcd delegerar större delen av denna begäranhantering till en samling Performance Metrics Domain Agents, eller kortare agenter. Varje agent ansvarar för en viss grupp mätvärden, kallad agentens domän. Exempelvis ansvarar agenten postgresql för att rapportera information som rör PostgreSQL-databasen, till exempel antal transaktioner och frågor, indexerings- och replikeringsstatistik och liknande.

Agenterna kan vara processer som startas av pmcd, oberoende processer eller dynamiskt delade objekt, DSO:er, se dlopen(3), som kopplas in i pmcd:s adressrymd. Avsnittet om konfiguration nedan beskriver hur anslutningar till agenter anges.

Observera att om ett PDU-utbyte med en agent överskrider tidsgränsen har agenten brutit mot kravet att leverera mätvärden med liten eller ingen fördröjning. Detta betraktas som ett protokollfel och agenten kopplas bort från pmcd. Efterföljande begäranden om information från agenten misslyckas då med en status som anger att det inte finns någon agent som kan tillhandahålla informationen.

Det går att ange åtkomstkontroll till pmcd baserat på användare, grupper och värdar. Detta gör det möjligt att hindra användare, användargrupper och vissa värdar från att komma åt de mätvärden som tillhandahålls av pmcd. Detta beskrivs mer detaljerat i avsnittet om åtkomstkontroll nedan.

ALTERNATIV

Tillgängliga kommandoradsalternativ är:

-A
Inaktivera annonsering av tjänsten. Som standard annonserar pmcd sin närvaro på nätverket med tillgängliga mekanismer, till exempel Avahi/DNS-SD, för att hjälpa fjärrövervakningsverktyg att hitta den. Dessa mekanismer inaktiveras med detta alternativ.
-c <config> eller --config=<config>
Vid start använder pmcd en konfigurationsfil från antingen konfigurationsvariabeln $PCP_PMCDCONF_PATH i /etc/pcp.conf eller en miljövariabel med samma namn. Dessa värden kan dock åsidosättas med config med detta alternativ. Formatet för konfigurationsfilen beskrivs nedan.
-C <nctx> eller --maxctx=<nctx>
Varje klient till pmcd kan skapa en eller flera kontexter. Antalet kontexter per klient är som standard begränsat till högst 64 för att skydda mot överbelastningsattacker genom uttömning av minne och filbeskrivare. Alternativet -C kan användas för att ändra gränsen till nctx kontexter.
-f eller --foreground
Som standard startas pmcd som en demon. Alternativet -f anger att den ska köras i förgrunden. Detta är mest användbart vid diagnostik av problem med felaktigt fungerande agenter.
-H <hostname> eller --hostname=<hostname>
Detta alternativ kan användas för att ange det värdnamn som pmcd ska använda för att representera denna instans av sig själv. Detta används av klientverktyg som pmlogger(1) vid rapportering om den eventuellt fjärranslutna värden. Om detta alternativ inte anges kommer mätvärdet pmcd.hostname att motsvara det som returneras av pmhostname(1). Se manualsidan för det verktyget för fullständig information om hur värdnamnet bestäms.
-i <ipaddress> eller --interface=<ipaddress>
Detta alternativ används normalt endast på värdar med mer än ett nätverksgränssnitt. Om inga -i-alternativ anges accepterar pmcd anslutningar till alla värdens IP-adresser. Alternativet -i används för att uttryckligen ange en IP-adress där anslutningar ska accepteras. ipaddress ska anges i vanlig punktnotation, till exempel 100.23.45.6.
Alternativet -i kan användas flera gånger för att ange en lista med IP-adresser. Anslutningar till andra IP-adresser som värden har kommer att nekas.
Detta kan användas för att begränsa anslutningar till ett nätverksgränssnitt om värden är en nätverksgateway. Det är också användbart om värden övertar IP-adressen från en annan värd som har havererat. I en sådan situation bör endast värdens vanliga IP-adresser anges, inte de som ärvts från den havererade värden. Detta gör att PCP-program kan avgöra att en värd har havererat, i stället för att ansluta till värden som har antagit den havererade värdens identitet.
-l <logfile> eller --log=<logfile>
Som standard skrivs en loggfil med namnet pmcd.log i katalogen $PCP_LOG_DIR/pmcd. Alternativet -l gör att loggfilen i stället skrivs till logfile. Om loggfilen inte kan skapas eller inte är skrivbar skrivs utdata till standardfel i stället.
-L <bytes> eller --maxbytes=<bytes>
PDU:er som tas emot av pmcd från övervakningsklienter är som standard begränsade till en maximal storlek på 65536 byte för att skydda mot överbelastningsattacker. Alternativet -L kan användas för att ändra den maximala storleken på inkommande PDU:er.
-M <nmetric> eller --maxmetric=<nmetric>
Varje fetch som tas emot av pmcd från övervakningsklienter är som standard begränsad till högst 32768 mätvärden för att skydda mot överbelastningsattacker genom minnesuttömning. Alternativet -M kan användas för att ändra gränsen till nmetric mätvärden.
-n <pmnsfile> eller --namespace=<pmnsfile>
Normalt läser pmcd in standardnamnrymden Performance Metrics Name Space, PMNS, från $PCP_VAR_DIR/pmns/root. Om alternativet -n anges läses i stället en alternativ namnrymd in från filen pmnsfile.
-N <pmnsfile> eller --uniqnames=<pmnsfile>
Samma funktion som -n, förutom hanteringen av dubbletter av Performance Metric Identifiers, PMID:er, i pmnsfile. Dubblettnamn tillåts med -n, men inte med -N.
-p <port> eller --port=<port>
Ange port att lyssna på. Som standard används port 44321.
-q <timeout>
Protokollet för versionsutbyte mellan pmcd och agent, nytt i PCP 2.0 och infört för bakåtkompatibilitet, använder denna tidsgräns för att ange hur länge pmcd ska vänta innan den antar att inget versionssvar kommer från en agent.
Om tidsgränsen nås antas agenten vara en agent som inte förstår PCP 2.0-protokollet. Standardvärdet är tre sekunder, men alternativet -q gör det möjligt att ange ett annat tidsintervall, som måste vara större än noll. Enheten för timeout är sekunder.
Om -q inte används kan miljövariabeln PMCD_CREDS_TIMEOUT användas för att ange tidsgränsen.
-Q eller --remotecert
Kräv att alla fjärrklientanslutningar tillhandahåller ett certifikat.
-s <sockname> eller --socket=<sockname>
Ange sökvägen till en lokal Unix-domänsocket, för plattformar som stöder denna socketfamilj. Standardvärdet är $PCP_RUN_DIR/pmcd.socket.
-S eller --reqauth
Kräv att alla klientanslutningar tillhandahåller användaruppgifter. Detta innebär att endast Unix-domänsocketar eller autentiserade anslutningar tillåts, vilket kräver stöd för säkra socketar. Om några åtkomstkontrollkrav för användare eller grupper anges i pmcd-konfigurationsfilen aktiveras detta driftläge automatiskt, oavsett om flaggan -S anges eller inte.
-t <timeout>
För att förhindra att felaktigt fungerande klienter eller agenter hänger hela Performance Metrics Collection System, PMCS, använder pmcd tidsgränser för PDU-utbyten med klienter och agenter som körs som processer. Som standard är tidsgränsen fem sekunder.
Alternativet -t gör det möjligt att ange en annan tidsgräns i sekunder. Om timeout är noll stängs tidsgränser av. Det är nästan omöjligt att använda en debugger interaktivt på en agent om tidsgränserna inte har stängts av för dess överordnade pmcd.
När pmcd körs kan tidsgränsen ändras dynamiskt genom att lagra ett heltalsvärde, tidsgränsen i sekunder, i mätvärdet pmcd.control.timeout med pmstore(1).
-T <traceflag> eller --trace=<traceflag>
För att hjälpa till med feldiagnostik för agenter och/eller klienter till pmcd som inte beter sig korrekt stöds en intern händelsespårningsmekanism i pmcd.
Värdet för traceflag tolkas som ett bitfält med följande styrfunktioner:
1     aktivera spårning av klientanslutningar
2     aktivera PDU-spårning
256   obuffrad händelsespårning
Som standard buffras händelsespårning med en cirkulär buffert som skrivs över när nya händelser registreras. Standardbufferten rymmer de senaste 20 händelserna, men detta antal kan åsidosättas genom att använda pmstore(1) för att ändra mätvärdet pmcd.control.tracebufs.
På motsvarande sätt kan händelsespårningen, när pmcd körs, ändras dynamiskt genom att lagra 1, aktivera, eller 0, inaktivera, i mätvärdena pmcd.control.traceconn, pmcd.control.tracepdu och pmcd.control.tracenobuf. Dessa mätvärden motsvarar bitfälten som hör till argumentet traceflag för alternativet -T.
I buffrat läge dumpas händelsespårningsbufferten när en agentanslutning avslutas av pmcd, eller när ett värde lagras i mätvärdet pmcd.control.dumptrace med pmstore(1).
I obuffrat läge rapporteras varje händelse när den inträffar.
-U <username> eller --username=<USER>
Användarkonto som pmcd ska köras under. Standardvärdet i aktuella versioner av PCP är det opriviligierade kontot pcp, men i äldre versioner användes superanvändarkontot root som standard.
-v eller --verify
Verifiera konfigurationsfilen för pmcd, rapportera eventuella fel och avsluta med en status som anger om verifieringen lyckades eller misslyckades.
-x <file>
Innan pmcd-logfile kan öppnas kan pmcd stöta på ett fatalt fel som hindrar den från att starta. Som standard skickas utdata som beskriver detta fel till /dev/tty, men den kan omdirigeras till file.
-? eller --help
Visa användningsmeddelande och avsluta.

KONFIGURATION

Vid start letar pmcd efter en konfigurationsfil med namnet $PCP_PMCDCONF_PATH. Denna fil anger vilka agenter som täcker vilka prestandamätvärdesdomäner och hur pmcd ska kontakta agenterna. Ett valfritt avsnitt med åtkomstkontroller kan följa efter agentkonfigurationen.

Varning: pmcd startas vanligtvis som en del av startsekvensen och körs inledningsvis som root. Konfigurationsfilen kan innehålla skalkommandon som skapar agenter, och dessa kommer att köras av root. För att förhindra säkerhetsproblem bör konfigurationsfilen endast vara skrivbar av root. Användning av absoluta sökvägar rekommenderas också.

Skiftläget för reserverade ord i konfigurationsfilen saknar betydelse, men i övrigt bevaras skiftläget.

Tomma rader och kommentarer är tillåtna, och till och med rekommenderade, i konfigurationsfilen. En kommentar börjar med tecknet # och slutar vid radens slut. En rad kan fortsättas genom att se till att det sista tecknet på raden är ett omvänt snedstreck, \.

En kommentar på en fortsättningsrad slutar vid slutet av den fortsatta raden. Mellanslag kan ingå i lexikala element genom att hela elementet omges med dubbla citattecken. Ett dubbelt citattecken som föregås av ett omvänt snedstreck är alltid ett bokstavligt dubbelt citattecken. Ett # inom dubbla citattecken eller föregånget av ett omvänt snedstreck behandlas bokstavligt i stället för som en kommentarsavgränsare.

Lexikala element och separatorer beskrivs vidare i följande avsnitt.

AGENTKONFIGURATION

Varje rad i agentkonfigurationsdelen av konfigurationsfilen innehåller uppgifter om hur pmcd ska ansluta till en av sina agenter och anger vilken mätvärdesdomän agenten hanterar. En agent kan kopplas som en DSO, via en socket eller via ett par pipes.

Varje rad i agentkonfigurationsdelen måste vara antingen en agentspecifikation, en kommentar eller en tom rad. Lexikala element separeras med blanktecken, men en enskild agentspecifikation får inte delas över flera rader om inte ett omvänt snedstreck används för att fortsätta raden.

Varje agentspecifikation måste börja med en textetikett, en sträng, följd av ett heltal i intervallet 1 till 510. Etiketten är en tagg som används för att hänvisa till agenten, och heltalet anger den domän för vilken agenten tillhandahåller data. Denna domänidentifierare motsvarar domändelen av de PMID:er som hanteras av agenten. Varje agent måste ha en unik etikett och domänidentifierare.

För DSO-agenter ska en rad ha formen:

label domain-no dso entry-point path

Där:

label
är en sträng som identifierar agenten.
domain-no
är ett osignerat heltal som anger agentens domän i intervallet 1 till 510.
entry-point
är namnet på en initieringsfunktion som anropas när DSO:n läses in.
path
anger platsen för DSO:n och förväntas vara en absolut sökväg. pmcd kan endast läsa in DSO-agenter som har samma simabi, Subprogram Interface Model ABI, eller anropskonventioner, som den själv. Versionen av simabi för en körande pmcd kan bestämmas genom att hämta pmcd.simabi. Alternativt kan kommandot file(1) användas för att bestämma simabi-versionen från pmcd-körfilen.
För en relativ path definierar miljövariabeln PMCD_PATH en kolonseparerad lista med kataloger som ska sökas när agentens DSO ska hittas. Standardmässig sökväg är:
$PCP_SHARE_DIR/lib:/usr/pcp/lib

För agenter som tillhandahåller socketanslutningar ska en rad ha formen:

label domain-no socket addr_family address [ command ]

Där:

label
är en sträng som identifierar agenten.
domain-no
är ett osignerat heltal som anger agentens domän i intervallet 1 till 510.
addr_family
anger om socketen finns i domänen AF_INET, AF_INET6 eller AF_UNIX. Motsvarande värden för denna parameter är inet, ipv6 respektive unix.
address
anger socketens adress inom den tidigare angivna addr_family. För unix-socketar ska adressen vara namnet på en agents socket på den lokala värden. För inet- och ipv6-socketar kan adressen vara antingen ett portnummer eller ett portnamn som kan användas för att ansluta till en agent på den lokala värden. Det finns ingen syntax för att ange en agent på en fjärrvärd, eftersom pmcd endast hanterar agenter på samma maskin.
command
är en valfri parameter som används för att ange en kommandorad som startar agenten när pmcd initieras. Om command saknas antar pmcd att den angivna agenten redan har skapats. command anses börja vid det första icke-blanktecknet efter socketadressen och sluta vid nästa radslut som inte föregås av ett omvänt snedstreck. Efter fork(2) skickas command oförändrat till execve(2) för att instansiera agenten.

För agenter som kommunicerar med pmcd via stdin/stdout ska en rad ha formen:

label domain-no pipe protocol command

Där:

label
är en sträng som identifierar agenten.
domain-no
är ett osignerat heltal som anger agentens domän.
protocol
Värdet för denna parameter ska vara binary.
Dessutom kan protocol inkludera nyckelordet notready för att ange att agenten ska markeras som inte redo att behandla begäranden från pmcd. Agenten kommer uttryckligen att meddela pmcd när den är redo att behandla begäranden genom att skicka en PM_ERR_PMDAREADY-PDU. För mer information om detta protokoll, inklusive en beskrivning av de IPC-parametrar som kan anges i en PMDA-Install-skript med parametern ipc_prot, se relevant avsnitt i PMDA(3).
command
anger en kommandorad som startar agenten när pmcd initieras. Observera att command är obligatoriskt för pipe-baserade agenter. command anses börja vid det första icke-blanktecknet efter parametern protocol och sluta vid nästa radslut som inte föregås av ett omvänt snedstreck. Efter fork(2) skickas command oförändrat till execve(2) för att instansiera agenten.

KONFIGURATION AV ÅTKOMSTKONTROLL

Åtkomstkontrollavsnittet i konfigurationsfilen är valfritt, men om det finns måste det följa efter agentkonfigurationsdata. Skiftläget för reserverade ord ignoreras, men i övrigt bevaras skiftläget.

Lexikala element i åtkomstkontrollavsnittet separeras av blanktecken eller specialtecknen hakparenteser, [ och ], klamrar, { och }, kolon, :, semikolon, ;, och kommatecken, ,. Specialtecknen behandlas inte som specialtecken i agentkonfigurationsavsnittet. Lexikala element kan citeras med dubbla citattecken vid behov.

Åtkomstkontrollavsnittet i filen måste börja med en rad av formen:

[access]

Utöver, eller i stället för, åtkomstavsnittet i pmcd-konfigurationsfilen läses åtkomstkontrollspecifikationer även från en fil med samma namn som pmcd-konfigurationsfilen, men med .access tillagt i slutet. Denna valfria fil får inte innehålla nyckelordet [access].

Inledande och avslutande blanktecken kan förekomma runt och inom hakparenteserna, och skiftläget för nyckelordet access ignoreras. Ingen annan text får förekomma på raden utom en avslutande kommentar.

Efter denna rad ska resten av konfigurationsfilen innehålla rader som tillåter eller förbjuder operationer från vissa värdar eller grupper av värdar.

Det finns två typer av operationer som sker via pmcd:

fetch
tillåter hämtning av information från pmcd. Det kan vara information om ett mätvärde, till exempel dess beskrivning, instansdomän, etiketter eller hjälptext, eller ett värde för ett mätvärde. Se pminfo(1) för mer information.
store
tillåter att pmcd används för att lagra mätvärden i agenter som tillåter lagringsoperationer. Detta kan vara själva värdet för mätvärdet, till exempel återställning av en räknare till noll. Alternativt kan det vara ett värde som används av PMDA:n för att införa en ändring i någon aspekt av övervakningen av detta mätvärde, till exempel händelsefiltrering på serversidan. Detta kan till och med gälla endast för det aktiva klientverktyget som utför lagringsoperationen, och inte andra. Se pmstore(1) för mer information.

Åtkomst till pmcd kan beviljas på tre sätt: efter användare, efter användargrupp eller på värdnivå. I det senare fallet får alla användare på en värd samma åtkomstnivå, om inte åtkomstkontrollmekanismen för användare eller grupper också används.

Användarnamn och gruppnamn verifieras med lokala filer /etc/passwd och /etc/groups, eller en alternativ katalogtjänst, med rutinerna getpwent(3) och getgrent(3).

Värdar kan identifieras med namn, IP-adress, IPv6-adress eller med de särskilda värdspecifikationerna "unix:" eller "local:". "unix:" avser pmcd:s Unix-domänsocket på plattformar som stöder detta. "local:" motsvarar att ange både "unix:" och localhost.

Jokertecken kan också anges genom att avsluta värdidentifieraren med det enskilda jokertecknet * som den sist angivna komponenten i en adress. Jokertecknet ".*" avser alla inet-, alltså IPv4-, adresser. Jokertecknet ":*" avser alla IPv6-adresser.

Om ett IPv6-jokertecken innehåller en ::-komponent avser det avslutande * endast adressens sista 16 bitar. Annars avser det de återstående ospecificerade bitarna av adressen.

Jokertecknet * avser alla användare, grupper eller värdadresser, inklusive "unix:". Namn på användare, grupper eller värdar får inte innehålla jokertecken.

Följande är giltiga värdidentifierare:

boing
localhost
giggle.melbourne.sgi.com
129.127.112.2
129.127.114.*
129.*
.*
fe80::223:14ff:feaf:b62c
fe80::223:14ff:feaf:*
fe80:*
:*
"unix:"
"local:"
*

Följande är inte giltiga värdidentifierare:

*.melbourne
129.127.*.*
129.*.114.9
129.127*
fe80::223:14ff:*:*
fe80::223:14ff:*:b62c
fe80*

Det första exemplet tillåts inte eftersom endast numeriska IP-adresser får innehålla jokertecken. Det andra och femte exemplet är ogiltiga eftersom det finns mer än ett jokertecken. Det tredje och sjätte innehåller ett inbäddat jokertecken. Det fjärde och sjunde har ett jokertecken som inte är den sista komponenten av adressen.

Namnet localhost behandlas särskilt för att göra beteendet vid värdjokertecken konsekvent. I stället för att vara 127.0.0.1 och ::1 mappas det till de primära inet- och IPv6-adresser som är kopplade till namnet på värden där pmcd körs. Var försiktig med detta när pmcd körs på multihomade värdar.

Åtkomst för användare, grupper eller värdar tillåts eller förbjuds genom satser av formen:

allow users userlist : operations ;
disallow users userlist : operations ;
allow groups grouplist : operations ;
disallow groups grouplist : operations ;
allow hosts hostlist : operations ;
disallow hosts hostlist : operations ;
list
userlist, grouplist och hostlist är kommaseparerade listor med en eller flera användare, grupper eller värdidentifierare.
operations
är en kommaseparerad lista med operationstyperna som beskrivs ovan, all, som tillåter eller förbjuder alla operationer, eller all except operations, som tillåter eller förbjuder alla operationer utom de listade.

Både plural- och singularformer av nyckelorden users, groups och hosts tillåts. Om detta nyckelord utelämnas används hosts som standard. Detta beteende finns endast för bakåtkompatibilitet. Det är bättre att vara uttrycklig.

När ingen specifik allow- eller disallow-sats gäller för en operation är standardvärdet att tillåta operationen från alla användare, grupper och värdar. I det triviala fallet där det inte finns något åtkomstkontrollavsnitt i konfigurationsfilen tillåts alla operationer från alla användare, grupper och värdar.

Om en ny anslutning till pmcd försöks av en användare, grupp eller värd som inte har rätt att utföra några operationer, stängs anslutningen omedelbart efter att ett felsvar, PM_ERR_PERMISSION, har skickats till klienten som försökte ansluta.

Satser med samma nivå av jokertecken som anger identiska värdar får inte motsäga varandra. Om en värd med namnet clank till exempel har IP-adressen 129.127.112.2 skulle följande två regler vara felaktiga:

allow host clank : fetch, store;
disallow host 129.127.112.2 : all except fetch;

De hänvisar båda till samma värd, men är oeniga om huruvida operationen fetch är tillåten från den värden.

Satser med mer specifika värdspecifikationer åsidosätter mindre specifika enligt nivån av jokertecken. Exempelvis åsidosätter en regel av formen:

allow host clank : all;

följande:

disallow host 129.127.112.* : all except fetch;

eftersom den första innehåller ett specifikt värdnamn, motsvarande en fullständigt angiven IP-adress, medan den senare har ett jokertecken. I sin tur skulle den senare åsidosätta:

disallow host * : all;

Det går att begränsa antalet anslutningar från en användare, grupp eller värd till pmcd. Detta kan göras genom att lägga till en klausul av formen:

maximum n connections

i operations-listan i en allow-sats. En sådan klausul får inte användas i en disallow-sats. Här är n det maximala antalet anslutningar som accepteras från den användare, grupp eller värd som matchar identifierarna i satsen.

En åtkomstkontrollsats med en lista av användar-, grupp- eller värdidentifierare motsvarar en uppsättning åtkomstkontrollsatser, där varje sats anger en av identifierarna i listan och alla har samma åtkomstkontroller, både behörigheter och anslutningsgränser.

En grupp bör användas om du vill att användare ska bidra till en gemensam anslutningsgräns. Ett jokertecken bör användas om du vill att värdar ska bidra till en gemensam anslutningsgräns.

När en ny klient begär en anslutning och pmcd har fastställt att klienten har behörighet att ansluta, söker den i listan över matchande åtkomstkontrollsatser efter den mest specifika matchningen som innehåller en anslutningsgräns. För korthetens skull kallas detta den begränsande satsen.

Om det inte finns någon begränsande sats beviljas klienten en anslutning. Om det finns en begränsande sats och antalet pmcd-klienter med användar-ID, grupp-ID eller IP-adresser som matchar identifieraren i den begränsande satsen är mindre än anslutningsgränsen i satsen, tillåts anslutningen. Annars har anslutningsgränsen nåtts och klienten nekas anslutning.

Gruppåtkomstkontroller och jokertecken i värdidentifierare innebär att när pmcd faktiskt accepterar en anslutning från en klient kan anslutningen bidra till det aktuella anslutningsantalet för mer än en åtkomstkontrollsats. Klientens värd kan matcha mer än en åtkomstkontrollsats, och på samma sätt kan användar-ID:t ingå i mer än en grupp. Detta kan ha betydelse för senare anslutningsbegäranden.

Observera att pmcd går in i ett läge där den i praktiken körs med högre säkerhetsnivå så snart ett åtkomstkontrollavsnitt för användare eller grupper läggs till i konfigurationen. I detta läge tillåts endast autentiserade anslutningar, antingen från en SASL-autentiserad anslutning eller från en Unix-domänsocket, som implicit överför klientuppgifter. Detta är samma läge som aktiveras uttryckligen med alternativet -S.

Förutsatt att behörighet tillåts kan man avgöra om pmcd körs i detta läge genom att fråga värdet för mätvärdet pmcd.feature.creds_required.

Observera också att eftersom semantiken med mest specifik matchning används vid kontroll av anslutningsgränsen, ges i det värdbaserade åtkomstkontrollfallet prioritet till klienter med mer specifika värdidentifierare. Det går också att överskrida anslutningsgränser i vissa situationer.

Betrakta följande:

allow host clank : all, maximum 5 connections;
allow host * : all except store, maximum 2 connections;

Detta säger att endast två klientanslutningar åt gången tillåts för alla värdar utom clank, som tillåts fem. Om en klient från värden boing är den första som ansluter till pmcd, kontrolleras dess anslutning mot den andra satsen, eftersom det är den mest specifika matchningen med en anslutningsgräns. Eftersom det inte finns några andra klienter accepteras anslutningen och bidrar endast till gränsen för den andra satsen.

Om nästa klient ansluter från clank kontrolleras dess anslutning mot gränsen i den första satsen. Det finns inga andra anslutningar från clank, så anslutningen accepteras. När denna anslutning har accepterats räknas den mot gränserna i båda satserna, eftersom clank matchar värdidentifieraren i båda satserna.

Kom ihåg att beslutet att acceptera en ny anslutning fattas endast med hjälp av den mest specifika matchande åtkomstkontrollsatsen med anslutningsgräns. Nu har anslutningsgränsen för den andra satsen nåtts. Alla anslutningar från andra värdar än clank kommer att nekas.

Om pmcd i stället inte hade några klienter och såg tre efterföljande anslutningar från boing, skulle de två första accepteras och den tredje nekas. Därefter, om en anslutning begärdes från clank, skulle den accepteras. Den matchar den första satsen, som är mer specifik än den andra, så anslutningsgränsen i den första används för att avgöra att klienten har rätt att ansluta. Nu finns tre anslutningar som bidrar till den andra satsens anslutningsgräns. Även om anslutningsgränsen för den andra satsen har överskridits behålls de tidigare anslutningarna från boing.

Anslutningsgränsen kontrolleras endast när en klient försöker ansluta, inte genom att omvärderas varje gång en ny klient ansluter till pmcd.

Detta mjuka system är utformat för att göra det möjligt att införa rimliga gränser enligt principen först till kvarn, med specifika undantag.

Som exemplet ovan visar respekteras en klients anslutning när den väl har accepterats. Omkonfigurering av pmcd, se nästa avsnitt, omvärderar dock alla anslutningsantal och gör att klientanslutningar kopplas ned om anslutningsgränser har överskridits.

AGENTSTÄNGSEL

Det är ibland önskvärt att förhindra sampling under en PMDA:s livstid, till exempel om sådan sampling påverkar känsliga faser i ett schemalagt jobb. Ett tillfälligt stängsel kan då höjas för att blockera all PMAPI-klientåtkomst till en eller flera agenter. Denna funktion tillhandahålls av den inbyggda PMCD-PMDA:n och kommandot pmstore(1), exempelvis:

# pmstore -i nfsclient,kvm pmcd.agent.fenced 1

Om den valfria kommaseparerade listan med agentnamn utelämnas stängslas alla agenter. För att återgå till normal drift kan stängslet sänkas så här:

# pmstore -i nfsclient,kvm pmcd.agent.fenced 0

Att sänka stängslet för alla PMDA:er på en gång görs med:

# pmstore pmcd.agent.fenced 0

Förhöjda behörigheter krävs för att lagra till mätvärdet pmcd.agent.fenced. Mer information finns i hjälptexten för detta mätvärde, som kan nås med alternativet -T, --helptext till pminfo(1).

OMKONFIGURERA PMCD

Om konfigurationsfilen har ändrats, om en agent inte svarar därför att den har avslutats, eller om PMNS har ändrats, kan pmcd omkonfigureras genom att skicka SIGHUP till den, exempelvis:

# pmsignal -a -s HUP pmcd

När pmcd tar emot SIGHUP kontrollerar den konfigurationsfilen efter ändringar. Om filen har ändrats tolkas den om och innehållet blir den nya konfigurationen. Om det finns fel i konfigurationsfilen behålls den befintliga konfigurationen och filens innehåll ignoreras. Fel rapporteras i pmcd-loggfilen.

Den kontrollerar också PMNS-filen och eventuella etikettfiler efter ändringar. Om någon av dessa filer har ändrats laddas PMNS och/eller kontextetiketter om. Användning av tail(1) på loggfilen rekommenderas när pmcd omkonfigureras.

Om konfigurationen för en agent har ändrats, det vill säga om någon parameter utom agentens etikett är annorlunda, startas agenten om. Agenter vars konfiguration inte ändras startas inte om. Befintliga agenter som inte finns i den nya konfigurationen avslutas. Avslutade agenter som fortfarande finns listade startas om.

Ibland är det nödvändigt att starta om en agent som fortfarande körs men fungerar felaktigt. Stoppa helt enkelt agenten, exempelvis med SIGTERM från pmsignal(1), och skicka sedan SIGHUP till pmcd. Detta gör att agenten startas om.

STARTA OCH STOPPA PMCD

Normalt startas pmcd automatiskt vid systemstart och stoppas när systemet stängs av. Under vissa omständigheter är det nödvändigt att starta eller stoppa pmcd manuellt. För att göra detta måste man bli superanvändare och skriva:

# $PCP_RC_DIR/pmcd start

för att starta pmcd, eller:

# $PCP_RC_DIR/pmcd stop

för att stoppa pmcd.

Att starta pmcd när den redan körs är samma sak som att stoppa den och sedan starta den igen.

Ibland kan det vara nödvändigt att starta om pmcd under en annan fas av startprocessen. Tidskrävande delar av startprocessen läggs ofta i bakgrunden för att systemet ska bli tillgängligt snabbare, till exempel montering av mycket stora databaser.

Om en agent som körs av pmcd kräver att en sådan uppgift är klar innan den kan fungera korrekt, är det nödvändigt att starta om eller omkonfigurera pmcd efter att uppgiften slutförts. Tänk exempelvis på fallet där en databas monteras i bakgrunden under uppstart. Om PMDA:n som tillhandahåller mätvärden om databasen inte kan fungera förrän databasen är monterad och tillgänglig, men pmcd startas innan databasen är redo, kommer PMDA:n att misslyckas. pmcd kommer dock fortfarande att betjäna begäranden om mätvärden från andra domäner.

Om databasen initieras genom att ett skalskript körs kan man lägga till en rad i slutet av skriptet som omkonfigurerar pmcd genom att skicka SIGHUP till den. Detta startar om PMDA:n om den avslutades därför att den inte kunde ansluta till databasen. Om PMDA:n inte avslutades i en sådan situation är det nödvändigt att starta om pmcd, eftersom pmcd inte startar om PMDA:n om den fortfarande körs.

Normalt lyssnar pmcd efter klientanslutningar på TCP/IP-port 44321, registrerad hos http://www.iana.org/. Antingen miljövariabeln PMCD_PORT eller kommandoradsalternativet -p kan användas för att ange alternativa portnummer när pmcd startas. I båda fallen är specifikationen en kommaseparerad lista med ett eller flera numeriska portnummer.

Om båda metoder används, eller flera -p-alternativ förekommer på kommandoraden, kommer pmcd att lyssna på unionen av portarna som anges via alla -p-alternativ och miljövariabeln PMCD_PORT.

Om icke-standardportar används med pmcd bör man se till att PMCD_PORT också är satt i miljön för alla klientprogram som ska ansluta till pmcd, eller att den utökade värdspecifikationssyntaxen används. Se PCPIntro(1) för detaljer.

VARNINGAR

pmcd avslutar inte uttryckligen sina barnprocesser, alltså agenterna. Den stänger bara deras pipes. Om en agent aldrig kontrollerar om en pipe har stängts kanske den inte avslutas.

Konfigurationsfilstolkaren läser endast rader som är kortare än 1200 tecken. Detta är avsett att förhindra olyckor med binära filer.

Tidsgränserna som styrs av alternativet -t gäller IPC mellan pmcd och de PMDA:er som den startar. Detta är oberoende av inställningarna för miljövariablerna PMCD_CONNECT_TIMEOUT och PMCD_REQUEST_TIMEOUT, se PCPIntro(1). Dessa kan användas för att styra tidsgränser för klientprogram som försöker ansluta till pmcd respektive försöker ta emot information från pmcd.

DIAGNOSTIK

Om pmcd redan körs visas meddelandet:

Error: OpenRequestSocket bind: Address may already be in use

Detta kan också visas om pmcd stängdes av med en utestående begäran från en klient. I så fall har en begäransocket lämnats i tillståndet TIME_WAIT, och tills systemet stänger den efter en viss tidsgräns går det inte att köra pmcd.

Utöver standardflaggorna för PCP-felsökning, se pmdbg(1), använder pmcd för närvarande alternativen appl0 för spårning av I/O och avslutning av agenter, appl1 för spårning av åtkomstkontroll och appl2 för spårning av skannern och parsern för konfigurationsfilen.

FILER

$PCP_PMCDCONF_PATH
Standardkonfigurationsfil.
$PCP_PMCDCONF_PATH.access
Valfri fil med åtkomstkontrollspecifikationer.
$PCP_PMCDOPTIONS_PATH
Kommandoradsalternativ till pmcd när den startas från $PCP_RC_DIR/pmcd. Alla rader med kommandoradsalternativ ska börja med ett bindestreck som första tecken.
$PCP_SYSCONFIG_DIR/pmcd
Miljövariabler som sätts när pmcd körs. Endast inställningar av formen PMCD_VARIABLE=value eller PCP_VARIABLE=value respekteras.
$PCP_SYSCONF_DIR/labels.conf
Inställningar relaterade till etiketter som används globalt i hela PMCS.
$PCP_SYSCONF_DIR/labels
Katalog med filer som innehåller globala mätvärdesetiketter som sätts för varje klientkontext som skapas av pmcd. Filnamn som börjar med . ignoreras, och filer som slutar med .json är formaterade som JSONB med namn:värde-par. Den sammanslagna uppsättningen kan frågas via mätvärdet pmcd.labels. Kontextetiketter tillämpas universellt på alla mätvärden.
$PCP_SYSCONF_DIR/labels/optional
Katalog med filer som innehåller globala mätvärdesetiketter som sätts för varje klientkontext som skapas av pmcd, men som markeras som valfria. Dessa etiketter är exakt samma som andra kontextetiketter, förutom att de inte används i beräkningar av tidsserieidentifierare.
./pmcd.log
Eller $PCP_LOG_DIR/pmcd/pmcd.log när den startas automatiskt. Alla meddelanden och diagnostik skickas hit.
$PCP_RUN_DIR/pmcd.pid
Innehåller en ASCII-decimal representation av process-ID:t för pmcd när den körs.
/etc/pcp/tls.conf
OpenSSL-konfigurationsfil för certifikatinformation, använd för valfria Secure Socket Layer-anslutningar.
/etc/passwd
Användarnamn, användaridentifierare och primära gruppidentifierare som används för åtkomstkontrollspecifikationer.
/etc/groups
Gruppnamn, gruppidentifierare och gruppmedlemmar som används för åtkomstkontrollspecifikationer.

MILJÖ

Följande variabler sätts i $PCP_SYSCONFIG_DIR/pmcd.

Utöver PCP-miljövariablerna som beskrivs i avsnittet PCP-MILJÖ nedan känns även variabeln PMCD_PORT igen som TCP/IP-porten för inkommande anslutningar. Standardvärdet är 44321. Variabeln PMCD_SOCKET känns också igen som den sökväg som ska användas för Unix-domänsocketen.

Om miljövariabeln PMCD_LOCAL sätts till värdet 1 körs pmcd i ett läge som endast tillåter localhost, där den endast binder till loopback-gränssnittet. Mätvärdet pmcd.feature.local kan frågas för att avgöra om pmcd körs i detta läge.

Variabeln PMCD_MAXPENDING kan sättas för att ange den maximala längd som kön med väntande klientanslutningar får växa till.

Variabeln PMCD_ROOT_AGENT styr om pmcd eller pmdaroot, när det finns tillgängligt, ska starta efterföljande PMDA:er. När den sätts till ett värde skilt från noll väljer pmcd att låta pmdaroot starta och stoppa PMDA:er.

Variabeln PMCD_RESTART_AGENTS avgör hur pmcd beter sig när barn-PMDA:er har observerats avslutas. Detta är ett typiskt svar vid mycket stora, vanligtvis domänframkallade, PDU-fördröjningar. När variabeln sätts till ett värde skilt från noll försöker pmcd starta om sådana PMDA:er en gång per minut. När den sätts till noll används det ursprungliga beteendet, som bara loggar felet.

PCP-MILJÖ

Miljövariabler med prefixet PCP_ används för att parameterisera fil- och katalognamn som används av PCP.

På varje installation innehåller filen /etc/pcp.conf de lokala värdena för dessa variabler.

Variabeln $PCP_CONF kan användas för att ange en alternativ konfigurationsfil, enligt beskrivningen i pcp.conf(5).

För miljövariabler som påverkar PCP-verktyg, se pmGetOptions(3).

FELSÖKNINGSALTERNATIV

Alternativet -D eller --debug aktiverar utskrift av ytterligare diagnostik till stderr för att hjälpa till att analysera problem. Informationen är ibland kryptisk och främst avsedd att ge vägledning till utvecklare snarare än slutanvändare.

debug är en kommaseparerad lista med felsökningsalternativ. Använd pmdbg(1) med alternativet -l för att få en lista över tillgängliga felsökningsalternativ och deras betydelse.

Felsökningsalternativ som är specifika för pmcd är:

Alternativ   Beskrivning
appl0        PDU-nivåoperationer
appl1        åtkomstkontrollspecifikationer från konfigurationsfilen
appl2        lexikal skanner i konfigurationsfilens parser
appl3        klientanslutningar och frånkopplingar
appl4        tidsstämplar för parsning av konfigurationsfilen
appl5        attributoperationer
appl6        globala tillståndsändringar och PMDA-tillståndsändringar

SE ÄVEN

KOLOFON

Den här sidan är en del av projektet PCPPerformance Co-Pilot.

Information om projektet finns på:

Om du har en felrapport för denna manualsida, skicka den till:

  • pcp@groups.io

Denna sida hämtades från projektets uppströms Git-arkiv:

Sidan hämtades den 16 januari 2026. Vid den tidpunkten var datumet för den senaste commit som hittades i arkivet den 16 januari 2026.

Om du upptäcker renderingsproblem i denna HTML-version av sidan, känner till en bättre eller mer uppdaterad källa, eller har rättelser eller förbättringar av informationen i denna kolofon, som inte är en del av den ursprungliga manualsidan, skicka e-post till:

  • man-pages@man7.org

Sidor som hänvisar till denna sida

Sidinformation

HTML-renderingen skapades den 16 januari 2026 av Michael Kerrisk, författare till The Linux Programming Interface.

Mer information om Linux- och UNIX-systemprogrammeringskurser finns på:

Hosting tillhandahålls av jambit GmbH.

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/pmcd.1.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.