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 van `systemd-run`
- `--service`: Onafhankelijke achtergronduitvoering, blijft bestaan na beëindiging van `systemd-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.