Basis van Linux en de opdrachtregel

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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van Linux en de opdrachtregel

  1. Welke tekens worden getoond als de bovenstaande twee regels in een shell worden uitgevoerd?
  2. Wat is de uitvoer van de twee echo-commando's als de bovenstaande commando's in volgorde worden uitgevoerd?
  3. Zoals hierboven te zien is, wordt het script s.sh met argumenten uitgevoerd. Wat is de uitvoer?
  4. In welk geval is de voorwaarde van de bovenstaande if in een shellscript waar?
  5. Welke bestanden staan na de bovenstaande sessie in de directory?