Bash-opdrachten op de juiste manier uitvoeren op de achtergrond [Linux]
Iedereen is er geweest: je bent op zoek naar een terminalprogramma en houdt het in bedrijf. Het probleem is dat dit programma oud is of geen functie bevat waarmee het als een daemon op de achtergrond kan worden uitgevoerd. Gelukkig zijn er verschillende manieren om programma's op de achtergrond toch te laten werken.
Bash kan dit allemaal op zichzelf doen en extra programma's hoeven niet te worden geïnstalleerd. Dit artikel gaat op verschillende manieren over dat je terminalprogramma's naar de achtergrond kunt duwen en ze daar kunt houden. Elke vermelde methode is goed voor zijn eigen geval voor speciaal gebruik.
Een commando beëindigen met &
Als u een opdracht naar de achtergrond wilt duwen, is het gebruik van &
aan het einde een eenvoudige manier om dat te doen. Er zit echter een vangst in. Gebruik &
verbreekt de verbinding niet van u; het duwt het gewoon op de achtergrond zodat je een terminal kunt blijven gebruiken.
commando &
Wanneer de terminalsessie is gesloten, eindigt het commando. Het gebruik van &
is goed als je een tijdje iets moet verwijderen, maar verwacht niet dat dit voor altijd zal doorgaan.
& Na een opdracht, verloochen het dan
Een opdracht uitvoeren met alleen &
duwt het naar achteren en houdt het actief zolang het terminalvenster open is. Als u echter wilt dat deze opdracht constant blijft, zelfs als uw terminalsessie eindigt, kunt u de opdracht disown
gebruiken.
Om deze methode te gebruiken, begint u met het toevoegen van &
.
commando &
Zoals hierboven vermeld, gebruikt &
duwt u deze opdracht op de achtergrond maar maakt deze niet los van uw gebruiker. U kunt dit controleren door jobs
in de terminal te typen. Het toont de opdracht die op de achtergrond wordt uitgevoerd.
Type gewoon disown
in de shell, en het doet precies dat (en u kunt dit opnieuw verifiëren met de opdracht jobs
).
& Na een opdracht met / dev / null
Als u &
na een opdracht toevoegt, wordt een opdracht op de achtergrond gedrukt, maar als gevolg hiervan blijft de achtergrondopdracht berichten afdrukken naar de terminal terwijl u deze gebruikt. Als u dit wilt voorkomen, kunt u overwegen de opdracht om te leiden naar /dev/null
.
opdracht &> / dev / null &
Dit voorkomt niet dat de opdracht wordt gesloten wanneer de terminal wordt gesloten. Zoals hierboven vermeld, is het echter mogelijk om disown
te gebruiken om het lopende commando weg te halen van de gebruiker.
Nohup, met & en / dev / null
In tegenstelling tot de vorige commando's, kun je met nohup een commando op de achtergrond uitvoeren en het draaiende houden. Hoe? Nohup omzeilt het HUP-signaal (signaal ophangen), waardoor het mogelijk wordt om opdrachten op de achtergrond uit te voeren, zelfs wanneer de terminal uit staat. Combineer deze opdracht met omleiding naar /dev/null
(om te voorkomen dat nohup een nohup.out-bestand maakt) en alles gaat naar de achtergrond met één opdracht.
nohup commando &> / dev / null &
Conclusie
De meeste terminalprogramma's op Linux hebben tegenwoordig ingebouwde functies zodat ze met weinig moeite op de achtergrond kunnen worden uitgevoerd. Daarnaast kunnen moderne init-systemen (zoals systemd) gebruikers in staat stellen om programma's zoals services te starten tijdens het opstarten of wanneer.
Toch missen sommige programma's op Linux de mogelijkheid om als een daemon te draaien of te integreren met moderne init-systemen. Dit is een echt ongemak, maar is begrijpelijk, omdat niet alle ontwikkelaars de vaardigheden of tijd hebben om nieuwe functies toe te voegen.
Gelukkig zijn opdrachten als nohup
of disown
nog steeds een realiteit en kunnen ze de kloof in het verplaatsen van programma's als deze nog steeds naar de achtergrond dichten. Ze zijn niet perfect of chique, maar ze krijgen de klus geklaard als dat nodig is.
Hoe verplaats je lopende terminalprogramma's naar de achtergrond? Vertel het ons hieronder!
Image Credit: één terminal-vier schermen