serious ethnic field engineer examining hardware and working on laptop

W świecie systemów operacyjnych job control (zarządzanie procesami) jest istotnym aspektem, który umożliwia użytkownikom kontrolę nad uruchomionymi w tle procesami w powłoce. W tym artykule przyjrzymy się job control w Bash, jednej z najpopularniejszych powłok w systemach UNIX i Linux. Omówimy podstawowe komendy, przykłady zastosowania oraz różne kombinacje dostępne dla zarządzania procesami.

Job control – co to jest?

Job control odnosi się do zdolności powłoki do uruchamiania, zarządzania i monitorowania procesów. Oferuje ona elastyczność w obsłudze procesów uruchomionych w tle, co pozwala użytkownikowi na wykonywanie innych zadań w trakcie oczekiwania na zakończenie danego procesu. Przyjrzyjmy się teraz podstawowym komendom, które umożliwiają zarządzanie procesami.

Job control w Bash dostarcza narzędzi do skutecznego zarządzania procesami. Daje użytkownikowi możliwość uruchamiania zadań w tle, zatrzymywania, wznawiania i zakończenia procesów w sposób wygodny i elastyczny. Jest to szczególnie przydatne podczas pracy z wieloma procesami jednocześnie lub w przypadku wykonywania długotrwałych operacji.

Mając świadomość podstawowych komend i kombinacji job control w Bash, możesz zwiększyć swoją produktywność i efektywnie zarządzać procesami w systemie operacyjnym UNIX lub Linux.

Bash oferuje również bardziej zaawansowane funkcje job control, takie jak grupy zadań, które umożliwiają grupowanie zadań i zarządzanie nimi jako jednostką. Jeśli jesteś zainteresowany dalszym zgłębieniem tematu, zalecam zapoznanie się z dokumentacją Bash oraz eksperymentowanie z różnymi kombinacjami i opcjami dostępnymi w powłoce.

W celu uruchomienia procesu w tle wystarczy dodać znak & na końcu komendy. Na przykład:

$ long_running_command &

Można również w trakcie działania procesu, go zatrzymać. Służy do tego kombinacja klawiszy Ctrl+Z (pozdrawiam kolegę z pracy! Często robi Ctrl+Z zamiast Ctrl+C). Powłoka zawiesza proces i wyświetla jego numer identyfikacyjny oraz status Stopped (Zatrzymany). Na przykład:

$ long_running_command
^Z
[1]+ Stopped long_running_command

Zarządzanie zadaniami

Co w przypadku, gdy tych zadań mamy dużo? Tak jak z ludźmi – zarządzamy nimi.

Do tego służy komenda jobs. Komenda jobs wyświetla listę wszystkich zatrzymanych lub uruchomionych w tle zadań. Numeracja zadań jest oparta na indeksach zwracanych przez powłokę. Na przykład:

$ jobs
[1]+ Stopped long_running_command

Kolejną przydatną funkcją jest przywracanie zadań „na przód”. Do tego mamy komendę fg (skrót od foreground), który przywraca nam zatrzymane zadanie na pierwszy plan. W przypadku, gdy mamy więcej zadań, możemy podać numer zadania z listy zadań, np.:

$ fg
# lub
$ fg %1

Tylko no właśnie — zatrzymane zadanie. Co jeśli jednak chcemy, by zadanie w tle się jednak wykonywało, a nie było w limbo? Komenda bg (od background) pozwala nam wznowić zatrzymane w tle zadanie. Podobnie jak w fg mamy komendy:

$ bg
# lub
$ bg %1

Kolejnym przypadkiem, gdy trzeba coś zarządzać, to ulubiona czynność adminów i pewnych lewicowych grup społecznych (pozdrawiam komunistów, czyli Stalina, Mao, Castro, dyktatorów z Afryki i innych chorych ludzi) – zabić. Komenda kill rozwiąże nam ten problem, gdyż zadanie w tle jest procesem. Komenda kill wysyła nam SIGSTOP lub inny sygnał (np.: SIGKILL). Przykładowo:

$ kill %1      # Zatrzymuje zadanie o numerze identyfikacyjnym 1
$ kill 1234    # Zatrzymuje proces o identyfikatorze PID 1234
$ kill -9 1234 # Dokonuje aktu zabójstwa procesu

Job control ma skróty klawiszowe!

Jak każde narzędzie, musi mieć swoje skróty klawiszowe, by sprawny admin mógł szybciej czynić dobro i zło.

  • Ctrl+C – Przerwanie bieżącego procesu Kombinacja klawiszy Ctrl+C powoduje przerwanie bieżącego procesu w pierwszym planie. Powłoka wysyła procesowi sygnał SIGINT, co zazwyczaj powoduje jego zakończenie.
  • Ctrl+D – Zakończenie procesu wejścia Kombinacja klawiszy Ctrl+D oznacza koniec pliku wejściowego. Jeśli jesteśmy w trakcie wprowadzania danych do powłoki, wciśnięcie tej kombinacji spowoduje zakończenie procesu wejścia.
  • Ctrl+S – Zatrzymanie wyjścia na ekran Kombinacja klawiszy Ctrl+S zatrzymuje wyjście na ekran, co oznacza, że ​​żadne dalsze dane nie będą wyświetlane na ekranie. Może to być przydatne w przypadku, gdy przepływ danych jest zbyt szybki do odczytania.
  • Ctrl+Q – Wznowienie wyjścia na ekran Kombinacja klawiszy Ctrl+Q wznowi wyjście na ekran, jeśli zostało wcześniej zatrzymane przy użyciu Ctrl+S.

Podsumowanie

Wnioskiem jest to, że job control w Bash stanowi potężne narzędzie, które umożliwia użytkownikom elastyczne zarządzanie procesami w systemie operacyjnym. Przyjrzenie się podstawowym komendom i kombinacjom pomoże w zwiększeniu produktywności i efektywności pracy z powłoką Bash.

Źródła:

Dołącz do newslettera, by być na bieżąco!

Jeśli chcesz być na bieżąco z blogiem, otrzymywać świetne porady dot. programowania i administracji serwerami, opinie w temacie gier - dołącz do newslettera!

Raz na jakiś czas wyślę Ci informację nt. bloga, a także będę wysyłać ekskluzywne materiały techniczne!

Nie czekaj i dołącz!

Dołączając do newslettera, akceptujesz naszą politykę prywatności!