Wychodzenie z dziesiątek tego samego procesu w OS X Terminal

1

Ilekroć testuję klasę Pythona, nad którą pracuję, często inicjuję i ponownie inicjuję Pythona, aby odświeżyć aktualizacje, które wprowadzam do kodu. Kiedy zamykam okno Terminal później, pojawia się okno z informacją, że zaraz zakończę wiele uruchomionych instancji Pythona.

wprowadź opis zdjęcia tutaj

Czy to błąd ze strony terminalu, czy naprawdę to wszystko uruchamiam? I Ctrl-Z za każdym razem, ale zawsze mówi

[8]+  Stopped            Python     

gdzie 8 jest przyrostowe i często przechodzi w lata 20 i 30. Czy robię coś głupiego?

Artur Sapek
źródło
Cześć. Zainicjuję go pythoni zakończę klawiszem Ctrl-Z.
Artur Sapek
Dodano, jak faktycznie zamknąć Python do mojej odpowiedzi.
Daniel Beck
Teraz nie powoduj zamieszania, kochanie, mam Python, Python, Python, Python, Eggs, Bash, Python i Python. (cue viking refren)
stib

Odpowiedzi:

3

Nie zamykasz (ani nie kończysz ) programu, naciskając Ctrl-Z, ale go zawieszasz. Naciśnij Ctrl-D( koniec transmisji ), aby wyjść z Pythona.

Po zawieszeniu uruchomionego procesu wchodzisz do pythoninnego skryptu uruchamiania pośredniego, aby „wznowić” program. Ale to uruchamia osobną instancję programu!

Musisz wprowadzić albo %n(z nwyświetloną liczbą, więc np. %8), Aby wznowić zawieszony proces z indeksem zadania nlub fgwznowić ostatnio zawieszony proces.

Jeśli Ctrl-Zsię fgwycofasz, indeks też się nie zwiększy.

W rzeczywistości działa mnóstwo osobnych pythoninstancji. Wyświetl je, wpisując jobs.

manStrona na to bash, jak twój shell zarządza tymi zadaniami.

Daniel Beck
źródło
Możesz także spojrzeć na Inspektora, aby zobaczyć listę procesów dla terminala. Shell> Pokaż Inspektora
Chris Page
Właśnie dowiedziałem się, że możesz wyczyścić wszystkie poprzednie zlecenia zdisown -a
Artur Sapek
@artur na pewno, jeśli chcesz, aby mnóstwo procesów nadal działało. Po prostu odłączasz je od swojej powłoki, nie rezygnujesz z nich.
Daniel Beck
Och, wow dobrze. Masz pomysł, jak je ponownie posiadać? : P
Artur Sapek
@ArturSapek Jeśli zrobiłeś to disownzamiast postępować zgodnie z instrukcjami zawartymi w moim poście, możesz je racjonalnie zrobić kill. ps ax | grep pythonpokaże ich identyfikatory procesów, których możesz użyć jako argumentów kill. Lub, jeśli jest to dość często restartowany komputer stacjonarny, po prostu uruchom ponownie.
Daniel Beck