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 klawiszyCtrl+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 klawiszyCtrl+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 klawiszyCtrl+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 klawiszyCtrl+Q
wznowi wyjście na ekran, jeśli zostało wcześniej zatrzymane przy użyciuCtrl+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:
- ChatGPT (w sumie on napisał artykuł, ja go przerobiłem, bo mega dużo rzeczy się nie zgadzało lub było napisane jak pijany krasnolud kopie w kopalni)
- Artykuł sprzed paru lat, co mnie zainspirował
- Moja wiedza dostępna na reszcie bloga