Overzicht
systemd-run voert commando's uit onder controle van systemd, waardoor de commando's als onafhankelijke systemd-eenheden functioneren. Dit maakt het mogelijk om de krachtige functies van systemd te benutten, zoals procesgroepbeheer, resourcebeperkingen en logboekintegratie.
Belangrijkste kenmerken
- Aanmaken van tijdelijke scope- of service-eenheden
- Instellen van resourcebeperkingen en prioriteiten voor programma's
- Achtergronduitvoering na beëindiging van de shell-sessie (service-eenheid)
- Geïntegreerde logging via het systemd-journaal
- Uitvoeren van commando's binnen containers en virtuele machines
Belangrijkste opties
systemd-run biedt diverse opties om de omgeving van het uit te voeren programma en de eigenschappen van de systemd-eenheid te regelen.
Eenheidstype en naam
Uitvoeringscontrole en omgeving
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`systemd-run` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Diverse gebruiksvoorbeelden van het systemd-run commando.
Commando uitvoeren als standaard scope-eenheid
systemd-run --scope echo "Hello from systemd-run"
Voert een eenvoudig commando uit als een tijdelijke scope-eenheid. Dit commando wordt uitgevoerd totdat systemd-run wordt beëindigd.
Commando uitvoeren als achtergrondservice-eenheid
systemd-run --service --unit=my-long-task.service sleep 300
Creëert een achtergrondservice die blijft draaien, zelfs nadat de shell-sessie is beëindigd. De servicenaam wordt gespecificeerd met `--unit`.
CPU-prioriteit en geheugenlimiet instellen
systemd-run --nice=10 --property=MemoryLimit=500M stress --cpu 4
Stelt de CPU-prioriteit van het uit te voeren programma lager in (nice=10) en beperkt het geheugengebruik tot 500MB.
Commando uitvoeren vanuit een specifieke werkdirectory
systemd-run --working-directory=/tmp bash -c 'pwd; touch testfile.txt'
Stelt in dat het commando wordt uitgevoerd vanuit de `/tmp` directory.
Pijplijncommando uitvoeren via shell
systemd-run --shell echo "Hello" | cat
Gebruik de `--shell` optie als u shell-functies zoals pijplijnen (|) of omleidingen (>) wilt gebruiken.
Commando uitvoeren als gebruikers-eenheid
systemd-run --user --scope echo "User-specific task"
Voert de eenheid uit in de systemd-instantie van de huidige gebruiker. Dit heeft geen invloed op het hele systeem.
Tips & Aandachtspunten
Handige tips en aandachtspunten bij het gebruik van systemd-run.
Scope vs. Service-eenheden
Scope-eenheden (--scope) zijn alleen geldig tijdens de uitvoering van het systemd-run commando en zijn afhankelijk van het moederproces. Service-eenheden (--service) draaien onafhankelijk op de achtergrond, zelfs nadat het systemd-run commando is beëindigd. Voor achtergrondtaken is het gebruikelijk om --service te gebruiken.
--scope: Afhankelijk van het moederproces, beëindigd bij beëindiging vansystemd-run--service: Onafhankelijke achtergronduitvoering, blijft bestaan na beëindiging vansystemd-run
Status van eenheden controleren en beheren
De status van door systemd-run gecreëerde eenheden kan worden gecontroleerd met het systemctl commando. Service-eenheden kunnen worden gestopt met systemctl stop, enz.
- Status controleren:
systemctl status <unit_name> - Service stoppen:
systemctl stop <unit_name> - Logs controleren:
journalctl -u <unit_name>
Gebruik van resourcebeperkingen
Met de --property optie kunt u diverse resources zoals CPU, geheugen en I/O beperken. Dit is zeer effectief voor het verhogen van de systeembetrouwbaarheid en het voorkomen dat specifieke processen buitensporig veel resources verbruiken.
--shell bij gebruik van shell-functies
Als het commando speciale shell-functies bevat zoals pijplijnen (|), omleidingen (>), of achtergronduitvoering (&), moet u absoluut de --shell optie gebruiken om ervoor te zorgen dat het commando via de shell wordt geïnterpreteerd. Anders wordt het commando mogelijk niet correct uitgevoerd.