Wat is Omleiding van invoer en uitvoer (I/O redirection)?

In de shell: wijzigen waar de standaardinvoer, standaarduitvoer en standaardfout van een commando naartoe gaan, naar een bestand of elders in plaats van het scherm of het toetsenbord. > overschrijft een bestand, >> voegt toe aan het einde, < maakt een bestand de standaardinvoer, en 2> stuurt de standaardfout (nummer 2) naar een bestand. 2>&1 stuurt de standaardfout naar waar de standaarduitvoer „op dat moment” naartoe gaat, dus > file 2>&1 en 2>&1 > file geven verschillende resultaten.

Japanse benaming: 入出力のリダイレクト

“Omleiding van invoer en uitvoer (I/O redirection)” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Basis van Linux en de opdrachtregel.

Vakgebied: Basis van Linux en de opdrachtregel

Nu oefenen: vragen over Omleiding van invoer en uitvoer (I/O redirection)

Op een server die via SSH is bereikt, werd een langdurige taak gestart met „./run.sh &”, en toen de verbinding werd verbroken, stopte de taak ook. Wat is de meest geschikte manier om de taak te starten zodat die blijft draaien nadat de verbinding is verbroken?

  1. A./run.sh > run.log 2>&1 &
  2. Bnice -n 19 ./run.sh > run.log 2>&1 &
  3. Cnohup ./run.sh > run.log 2>&1 &
Antwoord en toelichting tonen

Antwoord: C. nohup ./run.sh > run.log 2>&1 &

Wanneer de verbinding wegvalt, wordt SIGHUP, dat meldt dat de terminal is opgehangen, naar de shell gestuurd, en shells zoals bash sturen SIGHUP ook naar hun jobs. De standaardreactie op SIGHUP is stoppen, dus ook achtergrondjobs stoppen. nohup start het commando zo dat het SIGHUP negeert, en als de uitvoer met een omleiding naar een bestand gaat, blijft de taak draaien nadat de verbinding is verbroken. Als het zonder omleiding van de uitvoer vanuit een terminal wordt gestart, schrijft nohup de uitvoer naar een bestand met de naam nohup.out. Een andere veelgebruikte aanpak is een tool zoals tmux of screen, die de terminalsessie op de server in stand houdt, zodat je je later opnieuw met hetzelfde scherm kunt verbinden.

“Omleiding van invoer en uitvoer (I/O redirection)” in de toelichting

Vragen met “Omleiding van invoer en uitvoer (I/O redirection)” (3)

  1. Welke inhoud toont de laatste cat als de bovenstaande commando's in volgorde worden uitgevoerd?
  2. Zoals hierboven te zien is, wordt in een directory waarin a.txt wel en nofile niet bestaat het laatste commando uitgevoerd. Wat is het resultaat?
  3. Op een server die via SSH is bereikt, werd een langdurige taak gestart met „./run.sh &”, en toen de verbinding werd verbroken, stopte de taak ook. Wat is de meest geschikte manier om de taak te starten zodat die blijft draaien nadat de verbinding is verbroken?

Verwante termen

SSH Shell Bestandsrechten (permissies) cron Git grep Harde link (hard link) inode Omgevingsvariabele (environment variable) Pipe (|)

Naar de woordenlijst