Hvordan jeg bruger Linux-terminalen uden at røre ved den: Min hemmelighed til ekstrem automatisering

Indeks
  1. Hvad skal automatiseres og hvorfor
    1. Hvis du skal gøre det mere end én gang, automatiser det
  2. Hvordan automatiserer man med cron
    1. Den klassiske måde at planlægge opgaver på Linux
  3. Hvordan automatiserer man med systemd, og hvorfor det er bedre
    1. Giver alt hvad cron gør, og så meget mere
  4. Kontrol af systemd med en GUI
    1. Brug en af disse apps for nem adgang til automatiseringer
    2. For uforlignelig fleksibilitet er systemd vejen

Denne tekst forklarer, hvordan man kan automatisere opgaver i Linux-terminalen ved hjælp af scripts, cron og systemd, og præsenterer brugervenlige løsninger til effektiv opgavestyring.

Linux-terminalen er en kraftfuld måde at køre programmer på din computer fra kommandolinjen. Ved at bruge scripts kan du nemt gentage almindelige opgaver, selv når der anvendes kompleks programmeringslogik.

Men arbejde med automatiseringer kan være besværligt, især hvis du ikke er fan af terminalen. Heldigvis tilbyder Linux et par bekvemme løsninger til opgavestyring, hvad enten du har brug for at planlægge gentagne programmer eller køre dem efter behov.

Hvad skal automatiseres og hvorfor

Hvis du skal gøre det mere end én gang, automatiser det

For det første, hvad kunne du egentlig tænke dig at automatisere, og hvorfor?

En af de ting, jeg er elendig til, er at rydde op i min Downloads-mappe; over tid vokser den, og så ender jeg med blot at slette alt manuelt:

rm -rf ~/Downloads/* 

Selvom dette fungerer OK, er det trættende at skulle gøre det igen og igen, så jeg kan godt lide at automatisere processen. At automatisere en opgave har to hovedfordele: det sparer dig tid, og det giver dig større kontrol over opgaven. At køre et script fra terminalen er så simpelt som at skrive et filnavn eller en kommando og trykke Enter:

# kør en kommando fra din PATH clear-downloads # kør en kommando fra en fil ~/.local/bin/clear-downloads 

Dette er selvfølgelig meget nemmere og hurtigere end at køre de specifikke kommandoer, som disse scripts eller programmer kan indeholde. At bruge et script giver mig også mulighed for at tilføje relateret funktionalitet: Jeg kan f.eks. registrere detaljer om, hvad der er blevet slettet i en log, eller filtrere filer efter størrelse eller alder.

Alt, hvad du kunne tænke dig at gøre mere end én gang, er en kandidat til automatisering. At holde en optegnelse over netværkstrafik, rapportere diskforbrug, opdatere software eller opdatere et RSS-feed er alle gode eksempler.

Hvordan automatiserer man med cron

Den klassiske måde at planlægge opgaver på Linux

I et halvt århundrede har cron været den primære måde at planlægge opgaver til at køre på bestemte tidspunkter. Cron holder sig til det klassiske Unix-princip, at almindelig tekst er overlegen, og enkle formater er bedst:

En crontab-fil indeholder en liste over opgaver, der skal køres, hver i formatet:

m h d o w <kommando at køre> 

I dette format er m (minut), h (time), d (dag i måneden), o (måned) og w (dag i ugen) tal, der definerer, hvornår opgaven skal køres, så du kan indstille en opgave til at køre kl. 10:00 hver fredag med en linje som denne:

* 10 * * 5 /Users/bobby/.local/bin/clear-downloads 

Mens cron har holdt stand, har det sine kritikere. Syntaxen er ikke altid let at huske—eller endda forstå—miljøet, som cron kører i, er ikke åbenlyst, det kan være vanskeligt at fejlsøge, og opgaver er strengt bundet til et klokkeslæt. Cron kan være det rette værktøj til simple jobs, men der findes et meget mere kraftfuldt, forbedret alternativ: systemd.

Hvordan automatiserer man med systemd, og hvorfor det er bedre

Giver alt hvad cron gør, og så meget mere

Systemd-softwaren er en mere moderne tilgang til tjenestestyring, som gør det, cron gør, plus meget mere. Du kan stadig bruge det til at planlægge scripts, men systemd håndterer også systemprocesser, opstartsadministration, begivenhedslogging og netværksopløsning.

En systemd-opgave kræver lidt mere indledende opsætning end en cron-post, men det er meget mere brugervenligt, når du har oprettet det. Som et simpelt eksempel, forestil dig, at du har et script ved /home/bobby/scripts/clear-docs.sh:

#!/bin/sh # Fjern alt. Kan ændres til kun at fjerne et vis antal filer, # kun filer over en vis størrelse, filer ældre end en vis alder, osv. rm --recursive --force --verbose ~/Documents/* 

For at installere dette som en planlagt systemd-opgave (kaldet en timer) skal du oprette en ledsagende fil ved /etc/systemd/system/clear-docs.service:

[Unit] Description=Cleans out the Documents directory as a demo of systemd timers Wants=clear-docs.timer [Service] User=bobby Group=bobby Type=oneshot ExecStart=/home/bobby/scripts/clear-docs.sh [Install] WantedBy=multi-user.target 

Bemærk, at formatet af denne fil er meget lig Windows .ini-fileformatet, med overskriftssektioner i parentes og navne/værdi-par på hver linje.

Wants=-direktivet er godt.

eksempel på, hvordan systemd går meget længere end cron. Det specificerer en afhængighed af en anden enhed, som du kan oprette i en separat fil på /etc/systemd/system/clear-docs.timer:

[Unit] 
Description=Timer for: clear-docs.service 
Requires=clear-docs.service 

[Timer] 
Unit=clear-docs.service 
# Kør timeren hvert time, på timen 
OnCalendar=*-*-* *:00:00 

[Install] 
WantedBy=timers.target 

Denne timerdefinition bruger OnCalendar-direktivet, som ligner det præfiks, som cron bruger til at planlægge hver kommando. Systemd-softwaren giver dog meget større fleksibilitet: du kan indstille automatiseringer til at reagere på relative tidspunkter som "ti minutter efter boot" (OnBootSec=10min) eller endda hændelser, der ikke er relateret til tid, såsom når en bestemt fil ændres.

Med disse filer oprettet kan du nu afslutte opsætningen ved at genstarte systemd og starte din nye service:

sudo systemctl daemon-reload 
sudo systemctl enable clear-docs.timer 
sudo systemctl start clear-docs.timer 

På dette tidspunkt kan du tjekke, at alt kører ved at forespørge timeren:

systemctl status clear-docs.timer 

Bemærk, at de returnerede informationer inkluderer, hvornår timeren startede, og hvornår den næste gang vil blive aktiveret.

Du kan også forespørge servicen, hvilket giver detaljer om scriptfilen og korte logfiler:

Kontrol af systemd med en GUI

Brug en af disse apps for nem adgang til automatiseringer

Når det hårde arbejde er overstået, kan du kontrollere individuelle systemd-tjenester ved hjælp af en frontend-app som Systemd Manager.

Denne GTK-baserede app lader dig se tjenester, aktivere individuelle enheder og redigere automatiseringsfiler. Du kan også tjekke deres logfiler og analysere den tid, det tager at boote dit system.

Til daglig brug foretrækker jeg GNOME-udvidelsen med samme navn, som er et meget enklere alternativ. Det tilføjer en dropdown-menu til din topmenu, med individuelle tjenester, som du kan vælge at inkludere.

Ved at bruge denne udvidelse kan du starte, stoppe og genstarte en service med blot to klik. Den er altid tilgængelig, så du behøver ikke at røre ved din terminal for at køre automatiseringer, selv dem der normalt er planlagt til specifikke tidspunkter. At køre en opgave efter behov kan hjælpe dig med at debugge den, og systemd gør dette meget lettere end cron.

For uforlignelig fleksibilitet er systemd vejen

Ikke alle er fan af systemd, og jeg kan se hvorfor. For dem, der er vokset op med cron, præsenterer det en stejlere indlæringskurve, og dets kompleksitet følger ikke altid Linux-principperne.

Der er dog intet, der kan nægte fordelene ved planlagte opgaver, der kører i et kontrolleret miljø, med avancerede funktioner som indbygget logning. Med understøttende GUI-apps, der tilbyder ét-klick-kontroller og en terminalfri oplevelse, er systemd bestemt værd at din tid.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Go up