Linux tilbyr et bredt spekter av kommandoer og verktøy som effektiviserer og forenkler systemadministrasjonsoppgaver.
Som systemadministrator innebærer dine oppgaver blant annet å installere og vedlikeholde programvare, håndtere tilgang, overvåke systemytelse, sørge for høy tilgjengelighet, administrere sikkerhetskopiering og gjenoppretting, samt feilsøke og løse problemer. 😜
Denne artikkelen presenterer et utvalg av de mest brukte kommandoene som er uunnværlige for Linux-systemadministratorer i deres daglige arbeid.
uname
Kommandoen uname
, brukt sammen med flagget -a
, gir deg detaljert systeminformasjon. Den viser informasjon om kjernenavn, kjerneversjon, utgivelse, vertsnavn, prosessortype og maskinvareplattform.
[email protected]:~$ uname -a Linux ubuntu18 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Dette betyr:
kernel name:Linux hostname: ubuntu18 kernel release: 5.3.0-1028-azure kernel version: #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 machine hardware name: x86_64 processor: x86_64 hardware-platform: x86_64 operating system: GNU/Linux
df
Med df
-kommandoen kan du sjekke filsystemstørrelse og tilgjengelig diskplass. Uten tilleggsflagg viser denne kommandoen utdata i 1K blokker.
[email protected]:~$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 437208 0 437208 0% /dev tmpfs 91100 692 90408 1% /run /dev/sda1 30309264 2383952 27908928 8% / ....
Alternativet -h
viser resultatet i et mer lesbart format, nemlig i MB og GB.
[email protected]:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 427M 0 427M 0% /dev tmpfs 89M 692K 89M 1% /run /dev/sda1 29G 2.3G 27G 8% / tmpfs 445M 0 445M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 445M 0 445M 0% /sys/fs/cgroup /dev/sda15 105M 3.6M 101M 4% /boot/efi /dev/sdb1 3.9G 16M 3.7G 1% /mnt tmpfs 89M 0 89M 0% /run/user/1001
For å ekskludere spesifikke filsystemer, som for eksempel tmpfs
, fra utdataene, bruk flagget -x
.
[email protected]:~$ df -h -x tmpfs Filesystem Size Used Avail Use% Mounted on udev 427M 0 427M 0% /dev /dev/sda1 29G 2.3G 27G 8% / /dev/sda15 105M 3.6M 101M 4% /boot/efi /dev/sdb1 3.9G 16M 3.7G 1% /mnt
For å vise kun filsystemer av en bestemt type, bruk flagget -t
. Her er et eksempel for å vise bare ext4
-filsystemer:
[email protected]:~$ df -h -t ext4 Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 2.3G 27G 8% / /dev/sdb1 3.9G 16M 3.7G 1% /mnt
Bruk av flagget --total
legger til en linje som viser den totale bruken:
[email protected]:~$ df -h -t ext4 --total Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 2.3G 27G 8% / /dev/sdb1 3.9G 16M 3.7G 1% /mnt total 33G 2.3G 31G 8% -
du
Kommandoen du
brukes til å undersøke diskplassbruken i en gitt katalog. For eksempel, for å se diskplassbruken i mappen /var/log
, bruk flagget -h
for å vise størrelsene i lesbart format.
[email protected]:~$ sudo du -h /var/log 24K /var/log/Microsoft/Azure/NetworkWatcherAgent/Logs 28K /var/log/Microsoft/Azure/NetworkWatcherAgent 32K /var/log/Microsoft/Azure 36K /var/log/Microsoft 60K /var/log/apt 4.0K /var/log/samba 177M /var/log/journal/0f4f926f583b4691af7de11025b19ff6 177M /var/log/journal ... 204M /var/log
Hvis du kun ønsker å se total diskplassbruk, kan du bruke flagget -s
(summary):
[email protected]:~$ sudo du -hs /var/log 204M /var/log
free
Bruk free
-kommandoen for å vise totalt, brukt og ledig systemminne. Flagget -h
gir deg et mer lesbart format.
[email protected]:~$ free -h total used free shared buff/cache available Mem: 889M 272M 100M 712K 517M 443M Swap: 0B 0B 0B
total - Totalt installert minne (memtotal + swaptotal) used - Brukt minne free - Ubrukt minne (memfree + swapfree) buffers - Minne brukt av kjernebuffere cache - Minne brukt av side-cache buff/cache - Summen av buffere og cache available - Estimert minne tilgjengelig for å starte nye applikasjoner, uten swapping
ps
Kommandoen ps
brukes til å se informasjon om prosessene som kjører på systemet. For å se alle prosesser som tilhører brukeren ubuntu
, bruk flagget -u
sammen med brukernavnet:
[email protected]:~$ ps -u ubuntu PID TTY TIME CMD 7804 ? 00:00:00 systemd 7805 ? 00:00:00 (sd-pam) 7940 ? 00:00:00 sshd 7941 pts/0 00:00:00 bash 8111 ? 00:00:00 sshd 8112 pts/1 00:00:00 bash 13868 ? 00:00:00 sshd 13869 pts/2 00:00:00 bash 13885 pts/0 00:00:00 man 13895 pts/0 00:00:00 pager 18111 pts/2 00:00:00 man 18121 pts/2 00:00:00 pager 18485 pts/1 00:00:00 ps
For å se alle prosesser, kjør ps
med flaggene aux
:
[email protected]:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.7 160076 7020 ? Ss Jun29 0:34 /sbin/init root 2 0.0 0.0 0 0 ? S Jun29 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< Jun29 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< Jun29 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< Jun29 0:00 [kworker/0:0H-kb] ....
Forklaring av overskriftene:
Overskrift | Betydning |
PID | Prosessidentifikasjonsnummer |
%CPU | Prosentandel av CPU-tiden prosessen bruker |
%MEM | Prosentandel av RAM prosessen bruker |
VSZ | Virtuelt minne brukt i KB |
RSS | Fysisk minne prosessen bruker i KB |
TTY | Terminal tilknyttet prosessen |
STAT | R – Kjører eller klar til å kjøre, S – Sovende, I – Inaktiv, T – Stoppet, Z – Zombie, D – Venter på disk I/O, X – Dead, W – Byttet ut, N – Lavprioritetsprosess, < – Høyprioritetsprosess |
top
I motsetning til ps
-kommandoen som gir et øyeblikksbilde, gir top
-kommandoen en kontinuerlig oppdatert (standard hvert tredje sekund) liste over systemprosesser, sortert etter prosessaktivitet.
Utdata fra top
består av to hoveddeler: Systeminformasjon øverst og en tabell over prosesser, sortert etter CPU-aktivitet.
top - 14:25:32 up 44 days, 11:37, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 114 total, 1 running, 59 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 910992 total, 101208 free, 274712 used, 535072 buff/cache KiB Swap: 0 total, 0 free, 0 used. 458492 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 50497 ubuntu 20 0 44528 3944 3368 R 0.7 0.4 0:00.15 top 1 root 20 0 160076 7020 4400 S 0.0 0.8 0:34.85 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.08 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:+ 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_+
Noen av feltene i systemoppsummeringen:
opp | Oppetid. Tid siden maskinen sist ble startet. |
gjennomsnittlig belastning | Belastningsgjennomsnitt viser antall prosesser som venter på å kjøre. En verdi lavere enn 1.0 betyr at maskinen ikke er overbelastet. Det er tre verdier; det første er gjennomsnittet for de siste 60 sekundene, det andre er for de siste 5 minuttene, og det tredje er for de siste 15 minuttene. |
%Cpu(er) | Denne linjen beskriver aktiviteten til CPU-en. |
Detaljer om CPU-bruken:
- 0.3 us, bruker – 0.3% av CPU brukes til brukerprosesser.
- 0.0 sy, system – 0.0% av CPU brukes til systemprosesser.
- 0.0 ni, nice – 0.0% av CPU brukes av lavprioriterte prosesser.
- 99.7 id, idle – 99.7% av CPU er inaktiv.
- 0.0 wa, IO wait – 0.0% av CPU venter på I/O.
- 0.0 hi – Tid brukt på maskinvareavbrudd.
- 0.0 si – Tid brukt på programvareavbrudd.
- 0.0 st – Tid stjålet fra denne VM av hypervisoren.
Prosesstabellfeltene er som følger:
PID | Prosessidentifikasjonsnummer |
BRUKER | Prosesseier |
PR | Prioritet |
NI | Nice value (fin verdi) |
VIRT | Virtuelt minne brukt av prosessen (KB) |
RES | Fysisk minne brukt av prosessen |
SHR | Delt minne brukt av prosessen |
S | Prosessstatus. R – Kjører, S – sover, I – Inaktiv, T – Stoppet, Z – zombie, D – venter på disk I/O, W- byttet ut, X – død |
%CPU | CPU-tidsprosessen bruker i prosent |
%MEM | Det fysiske minnet prosessen bruker |
TIME+ | Total CPU-tid brukt av prosessen |
KOMMANDO | Navn på programmet |
Mens top
kjører, kan du gi forskjellige kommandoer. Trykk h
eller ?
for å se tilgjengelige kommandoer. Trykk k
for å avslutte en prosess. Trykk q
for å avslutte top
.
dig
dig
er et kraftig verktøy for DNS-spørringer. Det brukes på følgende måte:
dig <DNS server> <domain> <query-type>
Hvor:
- <DNS-server> er navnet på DNS-serveren du vil spørre
- <domene> er domenenavnet du vil spørre om
- <query-type> er typen post du vil ha informasjon om – A, MX, NS, SOA, etc.
Bruk +short
-flagget for å undertrykke detaljerte utdata.
For å vise A-posten for google.com
, bruk:
[email protected]:~$ dig google.com +short 172.217.164.174
For å vise MX-postene for google.com
, bruk:
[email protected]:~$ dig google.com MX +short 50 alt4.aspmx.l.google.com. 10 aspmx.l.google.com. 20 alt1.aspmx.l.google.com. 40 alt3.aspmx.l.google.com. 30 alt2.aspmx.l.google.com.
For å gjøre oppslag via en offentlig DNS server, kan du bruke DNS-oppslagsverktøy på Internett.
who og w
who
viser hvilke brukere som er logget inn.
[email protected]:~$ who ubuntu pts/0 2020-08-14 17:28 (183.83.211.129) ubuntu pts/1 2020-08-14 17:58 (183.83.211.129)
w
viser hvilke brukere som er logget inn og hvilke prosesser de kjører. Overskriften viser gjeldende tid, systemoppetid, antall brukere som er logget inn og gjennomsnittlig systembelastning.
[email protected]:~$ w 18:07:33 up 46 days, 15:19, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ubuntu pts/0 183.83.211.129 17:28 2.00s 0.10s 0.00s w ubuntu pts/1 183.83.211.129 17:58 9:07 0.05s 0.01s vi
Den andre delen viser brukernavnene, terminalen og den eksterne IP-adressen som de er logget inn fra, innloggingstiden, inaktiv tid, JCPU, PCPU og programmet de kjører. JCPU er tiden brukt av alle prosesser tilknyttet tty, mens PCPU er tiden som brukes av den gjeldende prosessen.
tar
Med GNU tar
kan du arkivere flere filer til en enkelt fil.
For eksempel, lag en katalog myfiles
og tre filer a.txt
, b.txt
og c.txt
i denne katalogen:
[email protected]:~$ mkdir myfiles ; touch myfiles/{a.txt,b.txt,c.txt}
For å lage et arkiv kalt allfiles.tar
som inneholder alle filene i myfiles
-katalogen:
[email protected]:~$ tar -cvf allfiles.tar myfiles myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt
List opp alle filene i gjeldende katalog. Du kan se katalogen myfiles
og arkivet allfiles.tar
:
[email protected]:~$ ls allfiles.tar myfiles
Du kan pakke ut et arkiv med flagget -x
. For å pakke ut allfiles.tar
:
[email protected]:~$ tar -xvf allfiles.tar myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt
Du kan også komprimere arkivet med flagget -z
. Dette vil lage et arkiv som er komprimert med gzip
.
[email protected]:~$ tar -zcvf allfiles.tar.gz myfiles myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt [email protected]:~$ ls allfiles.tar.gz myfiles
For å pakke ut et komprimert arkiv, bruk flagget -z
sammen med -x
.
[email protected]:~$ tar -zxvf allfiles.tar.gz myfiles/ myfiles/c.txt myfiles/a.txt myfiles/b.txt
grep
grep
brukes til å søke etter et mønster i en fil eller en gruppe filer. Den skriver ut alle linjene som matcher mønsteret. For eksempel, for å søke etter linjer som inneholder «ServerRoot» i /etc/apache2/apache2.conf
:
[email protected]:~$ grep ServerRoot /etc/apache2/apache2.conf # ServerRoot: The top of the directory tree under which the server's #ServerRoot "/etc/apache2"
For å søke i alle filer i en katalog, bruk *
. For å inkludere søk i underkataloger, bruk flagget -r
(rekursiv). For å søke etter alle linjer som inneholder mønsteret «VirtualHost» i alle filene i /etc/apache2
:
[email protected]:~$ cd /etc/apache2 [email protected]:/etc/apache2$ grep -r VirtualHost * apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost> apache2.conf:# logged here. If you *do* define an error logfile for a <VirtualHost> conf-available/localized-error-pages.conf:# even on a per-VirtualHost basis. If you include the Alias in the global server conf-available/other-vhosts-access-log.conf:# Define an access log for VirtualHosts that don't define their own logfile ports.conf:# have to change the VirtualHost statement in sites-available/000-default.conf:<VirtualHost *:80> ...
rsync
rsync
er et raskt kommandolinjeverktøy for å synkronisere filer og kataloger mellom to steder. Det kan brukes til både lokal og ekstern kopiering, og er raskt fordi det kun overfører forskjellene mellom kildefilene og de eksisterende filene på destinasjonen.
Det er mye brukt til sikkerhetskopiering og som en forbedret kopikommando for daglig bruk.
Her er et eksempel:
For å kopiere/synkronisere alle filer fra katalogen myfiles
til katalogen backups
:
[email protected]:~$ rsync -avh myfiles/ /backups sending incremental file list ./ a.txt b.txt c.txt sent 218 bytes received 76 bytes 588.00 bytes/sec total size is 0 speedup is 0.00
For å synkronisere alle filer fra katalogen myfiles
til katalogen backups
på en ekstern server, inkluderes remote_user@remote_host
i destinasjonsnavnet. For å rsync myfiles
-mappen til en ekstern server med IP 10.0.0.50
:
[email protected]:~$ rsync -avh myfiles/ [email protected]:/home/vagrant [email protected]'s password: sending incremental file list ./ a.txt b.txt c.txt sent 230 bytes received 76 bytes 47.08 bytes/sec total size is 0 speedup is 0.00
ss
ss
-kommandoen brukes til å vise socket-statistikk, i likhet med det eldre verktøyet netstat
. Bruk flagget -t
for å vise TCP-sockets.
[email protected]:~$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.0.0.4:53852 168.63.129.16:8037 ESTAB 0 0 10.0.0.4:ssh 183.83.211.129:64118 ESTAB 0 0 10.0.0.4:33256 169.254.169.254:http ESTAB 0 1080 10.0.0.4:ssh 222.186.30.35:11527 ESTAB 0 0 10.0.0.4:ssh 183.83.211.129:63049
Dette vil ikke vise sockets som lytter. For å inkludere både lyttende og ikke-lyttende sockets, bruk flaggene -t
og -a
.
[email protected]:~$ ss -t -a State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* LISTEN 0 80 127.0.0.1:mysql 0.0.0.0:* LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 10.0.0.4:53852 168.63.129.16:8037 ESTAB 0 0 10.0.0.4:ssh 183.83.211.129:64118 ESTAB 0 0 10.0.0.4:33256 169.254.169.254:http ESTAB 0 1080 10.0.0.4:ssh 222.186.30.35:11527 ESTAB 0 120 10.0.0.4:ssh 183.83.211.129:63049 LISTEN 0 128 [::]:ssh [::]:* LISTEN 0 128 *:http *:*
locate
locate
-kommandoen bruker en database for å søke etter filer, og kan være mye raskere enn find
-kommandoen. Den er veldig enkel i bruk. For å søke etter en fil som heter apache2.conf
:
[email protected]:~$ locate apache2.conf /etc/apache2/apache2.conf /var/lib/dpkg/info/apache2.conffiles
Du kan bruke flagget -c
hvis du kun ønsker å vite antallet filer som samsvarer med søkemønsteret.
[email protected]:~$ locate -c apache2.conf 2
Noen ganger kan det være nødvendig å oppdatere databasen som brukes av locate
, som er mlocate
. For å oppdatere databasen, bruk kommandoen updatedb
. Dette krever superbrukerrettigheter.
[email protected]:~$ sudo updatedb
find
En av de mest brukte kommandoene i Linux. Bruk den til å søke etter filer basert på filnavn, tillatelser, bruker-ID, gruppe-ID, størrelse, filtype, og andre kriterier.
For å søke etter en fil ved navn i gjeldende katalog, bruk flagget -name
etterfulgt av filnavnet:
[email protected]:~$ find . -name a.txt ./myfiles/a.txt
For å søke etter kataloger, bruk flagget -type d
:
[email protected]:~$ find . -type d . ./.ssh ./myfiles ./.cache ./.gnupg ./.gnupg/private-keys-v1.d ./docker
For å søke etter filer basert på størrelse, for eksempel filer som er større enn 20 MB, bruk flagget -size
:
[email protected]:~$ find . -size +20M ./docker/docker-ce-cli_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb ./docker/docker-ce_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb
systemctl
Nå som systemd har erstattet SysV init-prosessen i de fleste Linux-distribusjoner, brukes systemctl
-kommandoen til å administrere systemtjenester og enheter.
For å starte en tjeneste, for eksempel apache2
:
[email protected]:~$ sudo systemctl start apache2.service
Du kan utelate tjenestesuffikset.
For å stoppe en tjeneste:
[email protected]:~$ sudo systemctl stop apache2
For å se tjenestestatus, bruk kommandoen systemctl status
. Følgende eksempel viser apache2
-status mens tjenesten kjører:
[email protected]:~$ sudo systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2020-08-19 11:34:04 UTC; 2s ago Process: 25346 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Process: 18202 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) Process: 25536 ExecStart=/usr/sbin/apachectl start (code=exited, status