Så använder du terminalen på ditt webbhotell för att analysera trafik och diskutrymmesanvändning

Polar55 är ett utvecklarvänligt webbhotell, och därför har du självklart också tillgång till terminalen, både via SSH och direkt i cPanel.

Att använda terminalen kan kännas lite skrämmande, och få vet hur de ska komma igång. Med AI har det dock blivit mycket enklare. Du kan kopiera kommandon från AI-verktyget till terminalen och sedan ge det resultatet. Därefter kan det föreslå ett nytt kommando beroende på vad du vill undersöka.

I den här guiden visar vi några exempel på vad du kan använda terminalen till. Det är dock viktigt att betona att det blir riktigt effektivt först när du låter en AI både skapa dina kommandon och analysera resultaten.

Undersök hög CPU-användning och möjlig bottrafik

Använder ditt webbhotell mycket CPU, eller är din webbplats långsam? Det kan bero på automatiserade botar eller många upprepade förfrågningar till din webbplats.

Med cPanel Terminal kan du undersöka trafiken till dina webbplatser. Du hittar Terminal under Advanced → Terminal i cPanel. Kommandona nedan är skrivskyddade och ändrar ingenting på ditt webbhotell.

Hitta de mest aktiva User-Agents

En User-Agent är den identifieringssträng som en webbläsare eller bot skickar med sin förfrågan. Följande kommando visar vilka User-Agents som har gjort flest förfrågningar med HTTP 200-svar under de senaste 60 minuterna:

grep -hE "$(for i in $(seq 0 59); do LC_ALL=C date -d "$i minutes ago" '+%d/%b/%Y:%H:%M'; done | paste -sd'|' -)" \
~/access-logs/* 2>/dev/null \
| awk -F'"' '$3 ~ /^ 200 / {
    ua=$6;
    if (ua=="") ua="-";
    print ua
}' \
| sort | uniq -c | sort -nr | head -100

Exempel på resultat:

1662 Mozilla/5.0 ... Edg/156.0.0.0
 810 Mozilla/5.0 ... Chrome/156.0.0.0 Mobile
 479 WP Rocket/Preload
  96 Mozilla/5.0 ... bingbot/2.0

Siffran till vänster visar antalet förfrågningar. Om en User-Agent sticker ut tydligt kan du undersöka vilka IP-adresser trafiken kommer från.

Observera: Många förfrågningar är inte nödvändigtvis misstänkta. Exempelvis kan WP Rocket generera många förfrågningar när cachen byggs upp. User-Agents kan dessutom förfalskas. Kommandot visar bara HTTP 200 och inte exempelvis HTTP 403 eller 429.

Hitta IP-adresserna bakom en viss User-Agent

Kopiera den User-Agent du vill undersöka och klistra in den mellan citattecknen efter UA=. Här använder vi Microsoft Edge som exempel:

UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 Edg/156.0.0.0'

grep -hE "$(for i in $(seq 0 59); do LC_ALL=C date -d "$i minutes ago" '+%d/%b/%Y:%H:%M'; done | paste -sd'|' -)" \
~/access-logs/* 2>/dev/null \
| awk -F'"' -v ua="$UA" '
    $3 ~ /^ 200 / && $6 == ua {
        split($1,a," ")
        print a[1]
    }
' \
| sort | uniq -c | sort -nr | head -20

Exempel på resultat:

865 192.0.2.10
591 198.51.100.20
  1 203.0.113.30

Här kan du se att merparten av förfrågningarna kommer från två IP-adresser.

Blockera en IP-adress via cPanel

Om du har undersökt trafiken och bedömer att en IP-adress orsakar problem kan du blockera den via cPanel:

  1. Logga in på cPanel.
  2. Öppna Security → IP Blocker.
  3. Ange den IP-adress du vill blockera.
  4. Klicka på Add.
  5. Upprepa vid behov för fler IP-adresser.

Du kan senare ta bort blockeringen på samma ställe. Tänk på att en IP-adress även kan tillhöra en legitim besökare eller en delad internetanslutning.

Ta reda på vilken domän som får mest trafik

Om du har flera webbplatser på samma cPanel-konto kan du undersöka vilken domän som har fått flest förfrågningar under de senaste 60 minuterna. Det kan hjälpa dig att hitta den webbplats du bör undersöka närmare vid hög CPU-belastning.

python3 - <<'PY'
import glob
import json
import os
import re
import subprocess
from collections import Counter
from datetime import datetime, timedelta

now = datetime.now().astimezone()
start = now - timedelta(minutes=60)

counts = Counter()
domains = {}

# Hämta rätt domänmappning från cPanel
try:
    result = subprocess.run(
        ['uapi', '--output=json', 'DomainInfo', 'domains_data'],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        universal_newlines=True,
        timeout=15
    )

    if result.returncode == 0:
        response = json.loads(result.stdout)
        data = response.get('result', {}).get('data') or {}

        for category in ('addon_domains', 'sub_domains'):
            for item in data.get(category) or []:
                if not isinstance(item, dict):
                    continue

                internal = item.get('servername')
                public = item.get('domain')

                if internal and public:
                    domains[internal] = public

        main = data.get('main_domain') or {}
        if isinstance(main, dict):
            internal = main.get('servername')
            public = main.get('domain')

            if internal and public:
                domains[internal] = public

except (OSError, ValueError, subprocess.TimeoutExpired):
    pass

# Gå igenom åtkomstloggarna för de senaste 60 minuterna
seen = set()

for path in glob.glob(os.path.expanduser('~/access-logs/*')):
    try:
        if not os.path.isfile(path):
            continue

        stat = os.stat(path)
        identity = (stat.st_dev, stat.st_ino)

        # Undvik att läsa samma fil via flera hårda länkar
        if identity in seen:
            continue
        seen.add(identity)

        name = os.path.basename(path)
        name = re.sub(r'-ssl_log$', '', name)

        # Visa rätt domännamn från cPanel
        domain = domains.get(name, name)

        with open(path, errors='replace') as logfile:
            for line in logfile:
                match = re.search(r'\[([^\]]+)\]', line)

                if not match:
                    continue

                try:
                    timestamp = datetime.strptime(
                        match.group(1),
                        '%d/%b/%Y:%H:%M:%S %z'
                    )
                except ValueError:
                    continue

                if start <= timestamp <= now:
                    counts[domain] += 1

    except OSError:
        continue

print('FÖRFRÅGNINGAR PER DOMÄN – SENASTE 60 MINUTERNA')
print()

for domain, count in counts.most_common():
    print('{:8}  {}'.format(count, domain))
PY

Exempel på resultat:

FÖRFRÅGNINGAR PER DOMÄN – SENASTE 60 MINUTERNA

    4821  webbplats-a.se
     936  webbplats-b.se
     124  webbplats-c.se

I exemplet får webbplats-a.se betydligt mer trafik än de övriga webbplatserna.

Många förfrågningar innebär dock inte nödvändigtvis hög CPU-användning. En enda resurskrävande WordPress-förfrågan kan belasta servern mer än många cachade förfrågningar. Siffrorna är därför en fingervisning och inte en direkt mätning av CPU-användningen.

Undersök diskutrymmesanvändningen och hitta de största filerna

Håller diskutrymmet på ditt webbhotell på att ta slut? Med Terminal kan du hitta de största filerna på ditt konto. Det är särskilt användbart för att upptäcka gamla säkerhetskopior, stora loggfiler och andra filer som kanske inte längre behövs.

Hitta de 20 största filerna

find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB  %s\n", $1/1048576, $2}'

Exempel på resultat:

1850.4 MB  /home/user/backups/backup-old.zip
 724.2 MB  /home/user/public_html/wp-content/backup.zip
 312.8 MB  /home/user/public_html/error_log

Ha tålamod: Kommandot kan ta flera minuter att slutföra, särskilt om ditt konto innehåller många filer.

Kommandot är bra för att hitta möjligheter att frigöra utrymme på ditt webbhotell. Det raderar ingenting.

Viktigt: Radera aldrig filer om du inte vet vad de används till. Granska dem gärna i cPanels filhanterare innan du raderar något.

  • 0 användare blev hjälpta av detta svar
Hjälpte svaret dig?

Hittade du ingen lösning?

Om du inte har hittat en lösning genom att söka eller navigera i våra kategorier kan du öppna ett nytt supportärende.

Öppna supportärenden

Relaterade artiklar

Jag kan inte komma åt mina egna sidor, men andra kan

Om du upptäcker att du inte kan logga in på cPanel hos oss eller se dina egna sidor medan andra...

Hur hostar jag min Lovable-webbplats hos Polar55?

Vi har skrivit en guide om hur du kan exportera din Lovable-webbplats från Lovable och ladda upp...

Script för att rensa Node.js-processer som låser ditt webbhotell

Detta skript ska köras som ett cron-jobb på ditt cPanel-webbhotell.Detta är inte den perfekta...

Hur du åtgärdar 503-fel på din webbplats

Ett 503-fel inträffar när det inte finns tillräckligt med resurser för att köra ett skript,...

Så här begränsar du storleken på dina error_log-filer

Varje gång ett PHP-fel uppstår på din sida – oavsett om det bara är en varning eller ett faktiskt...