Grupy procesów, sesje i kontrola pracy

W tym rozdziale zapoznamy się z grupami procesów, sesjami i kontrolą zadań.

Process Group- Grupa procesów to zbiór jednego lub więcej procesów. Grupa procesów składa się z jednego lub większej liczby procesów współdzielących ten sam identyfikator grupy procesów (PGID). Identyfikator grupy procesów (PGID) jest tego samego typu (pid_t), co identyfikator procesu. Grupa procesów ma lidera grupy procesów, który jest procesem tworzącym grupę i którego identyfikator procesu staje się identyfikatorem grupy procesów.

Sessions - To zbiór różnych grup procesów.

Job Control- Pozwala to użytkownikowi powłoki na jednoczesne wykonywanie wielu poleceń (lub zadań), jednego na pierwszym planie i wszystkich pozostałych w tle. Możliwe jest również przenoszenie zadań z pierwszego planu na drugi i odwrotnie.

Zrozummy to przy pomocy przykładowych programów używających powłoki (BASH).

  • Skrypt powłoki (w BASH) do wykonywania podstawowych poleceń (data, echo, sleep i cal) o nazwie basic_commands.sh

  • Skrypt powłoki (w BASH) do wykonywania podstawowych poleceń (ps, echo)

#!/bin/bash
#basic_commands.sh

date
echo "Now sleeping for 250 seconds, so that testing job control functionality is smooth"
sleep 250
cal
#!/bin/bash
#process_status.sh

ps
echo "Now sleeping for 200 seconds, so that testing job control functionality is smooth"
sleep 200
ps

Użyj polecenia chmod, aby nadać plikowi uprawnienia do wykonywania. Domyślnie normalny plik otrzyma tylko uprawnienia do odczytu i zapisu, a nie do wykonywania.

Aby zatrzymać bieżący proces, musisz wprowadzić CTRL + Z. W ten sposób otrzymasz numer pracy. Zadanie można wznowić na pierwszym planie lub w tle. W razie potrzeby, aby wznowić zadanie na pierwszym planie, użyj polecenia „fg”. W razie potrzeby, aby wznowić pracę w tle, użyj polecenia „bg”. Używając tego, uruchomiłby tylko ostatni zatrzymany proces. A jeśli chcesz rozpocząć inny proces niż ostatnio zatrzymany proces? Po prostu użyj numeru zadania po fg lub bg (powiedz bg% 2 lub bg% 3 itd.). Jeśli uruchomione zadanie jest w tle, możesz uruchamiać inne zadania na pierwszym planie. Aby uzyskać listę zadań, użyj polecenia, jobs. Możliwe jest również zakończenie procesu za pomocą CTRL + C lub komendy kill. Możesz podać numer zadania, używając komendy kill.

Sprawdź następujące dane wyjściowe, które demonstrują zatrzymywanie zadań, przenoszenie zadań z pierwszego planu na tło i odwrotnie, kończenie zadań itp.

chmod u+x basic_commands.sh
chmod u+x process_status.sh

./basic_commands.sh
Wed Jul 5 18:30:27 IST 2017
Now sleeping for 250 seconds, so that testing job control functionality is smooth
^Z
[1]+ Stopped ./basic_commands.sh
./process_status.sh
PID   TTY   TIME     CMD
2295  pts/1 00:00:00 bash
4222  pts/1 00:00:00 basic_commands.
4224  pts/1 00:00:00 sleep
4225  pts/1 00:00:00 process_status.
4226  pts/1 00:00:00 ps
Now sleeping for 200 seconds, so that testing job control functionality is smooth
^Z
[2]+ Stopped      ./process_status.sh
jobs
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh
fg
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
fg %2
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
fg %1
./basic_commands.sh
^Z
[1]+ Stopped      ./basic_commands.sh

jobs
[1]+ Stopped      ./basic_commands.sh
[2]- Stopped      ./process_status.sh

bg %2
[2]- ./process_status.sh &
fg
./basic_commands.sh
^Z
[1]+ Stopped      ./basic_commands.sh
jobs
[1]+ Stopped      ./basic_commands.sh
[2]- Running      ./process_status.sh &
fg %2
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
jobs
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh
kill %1 %2
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh

[1]- Terminated   ./basic_commands.sh
[2]+ Terminated   ./process_status.sh