Vraag:
Als ik Terminal.app afsluit, worden de processen die het heeft gestart ermee gestopt?
Rick Lecoat
2018-01-04 13:21:16 UTC
view on stackexchange narkive permalink

Als ik Terminal gebruik om een tijdrovend proces te starten (in dit geval het verwijderen van een groot .sparsebundle-bestand op mijn Time Capsule, wat uren kan duren) en als ik de Terminal-app zelf afsluit voordat dat proces is voltooid,stopt dat lopende proces (het verwijderen) ook?Of fungeert Terminal gewoon als de 'trigger' en verloopt het proces autonoom, ongeacht of Terminal.app actief is of niet?

Het feit dat het u vraagt voordat een actief terminalvenster wordt gesloten, zorgt ervoor dat het lijkt alsof het gebeurt in Terminal.app
Een antwoord:
David Anderson
2018-01-04 15:59:12 UTC
view on stackexchange narkive permalink

Om de opdracht te laten doorgaan na het sluiten van het Terminal-toepassingsvenster, moet u het volgende doen.

  1. Laat het commando voorafgaan door nohup . Hierdoor kan de opdracht worden voortgezet nadat het Terminal-toepassingsvenster is gesloten. Hierdoor kan het commando ook doorgaan na het afsluiten van de Terminal-applicatie.
  2. Stuur standaarduitgang en standaardfout door naar dezelfde of verschillende bestanden. Dit geeft de uitvoer ergens naartoe, anders wordt de standaard gebruikt. (Zie de man-pagina hieronder).
  3. Voeg een & toe aan het einde van de opdrachtregel. Dit voert het commando uit op de achtergrond, anders krijg je pas een commando-prompt als het commando klaar is.

Als ik bijvoorbeeld het find -commando zou willen gebruiken om naar het bestand readgpt te zoeken en de resultaten af ​​te drukken naar een Terminal-toepassingsvenster, zou ik het gegeven commando uitvoeren hieronder. Opmerking: hier geef ik niet om de foutmeldingen, dus heb ik de standaardfout omgeleid naar / dev / null .

  find / -name readgpt -print 2> / dev / null
 

Als ik nu het Terminal-toepassingsvenster zou willen sluiten en de resultaten later zou willen bekijken, zou ik de onderstaande opdracht uitvoeren.

  nohup find / -name readgpt -print > ~ / Documents / results.txt 2> / dev / null &
 

Nadat u het bovenstaande heeft ingevoerd, krijgt u een jobnummer tussen haakjes gevolgd door een procesnummer. Hieronder wordt een voorbeeld gegeven.

  [1] 1456
 

U kunt de status van dit proces opvragen door het ps commando in te voeren, zoals hieronder getoond.

  Marlin: ~ davidanderson $ ps 1456
  PID TT STAT TIJD OPDRACHT
 1456 s001 U 0: 06.83 find / -name readgpt -print
 

U kunt dit proces beëindigen door het kill commando in te voeren, zoals hieronder getoond.

  Marlin: ~ davidanderson $ kill 1456
[1] + Beëindigd: 15 nohup find / -name readgpt -print > ~ / Documents / results.txt 2> / dev / null
 

Opmerking: als u het kill -commando invoert in een venster dat verschilt van het venster dat is gebruikt om het proces te maken, zal er waarschijnlijk geen uitvoer zijn.

De man-pagina voor het nohup commando wordt hieronder gegeven.

  NOHUP (1) BSD Algemene commando's Handleiding NOHUP (1)

NAAM
     nohup - roep een hulpprogramma aan dat immuun is voor hangups

KORTE INHOUD
     nohup [-] hulpprogramma [argumenten]

OMSCHRIJVING
     Het nohup-hulpprogramma roept het hulpprogramma aan met zijn argumenten en hierbij
     tijd stelt het signaal SIGHUP in dat moet worden genegeerd. Als de standaard output
     is een terminal, wordt de standaarduitvoer toegevoegd aan het bestand nohup.out
     in de huidige directory. Als de standaardfout een terminal is, is het dat ook
     gericht naar dezelfde plaats als de standaarduitvoer.

     Sommige shells bieden mogelijk een ingebouwd nohup-commando dat vergelijkbaar is met of
     identiek aan dit hulpprogramma. Raadpleeg de ingebouwde (1) handleiding.

MILIEU
     De volgende variabelen worden door nohup gebruikt:

     HOME Als het uitvoerbestand nohup.out niet kan worden gemaakt in het huidige
           directory, gebruikt het nohup-hulpprogramma de directory met de naam HOME
           om het bestand te maken.

     PATH Wordt gebruikt om het aangevraagde hulpprogramma te lokaliseren als de naam nr. Bevat
           '/' tekens.

VERLAT STATUS
     Het hulpprogramma nohup wordt afgesloten met een van de volgende waarden:

     126 Het hulpprogramma is gevonden, maar kan niet worden aangeroepen.

     127 Het hulpprogramma is niet gevonden of er is een fout opgetreden in
             nohup.

     Anders zal de exit-status van nohup die van nut zijn.

ZIE OOK
     ingebouwd (1), csh (1), signaal (3)

STANDAARDEN
     Het hulpprogramma nohup is naar verwachting IEEE Std 1003.2 (`` POSIX.2 '')
     verenigbaar.

INSECTEN
     Twee of meer instanties van nohup kunnen aan hetzelfde bestand worden toegevoegd, dat
     zorgt voor een verwarrende output.
BSD 19 juli 2001 BSD
 


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...