Süreç Grupları, Oturumlar ve İş Kontrolü

Bu bölümde Süreç Grupları, Oturumlar ve İş Kontrolüne aşina olacağız.

Process Group- Süreç grubu, bir veya daha fazla işlemin toplamıdır. Bir işlem grubu, aynı işlem grubu tanımlayıcısını (PGID) paylaşan bir veya daha fazla işlemden oluşur. Bir işlem grubu kimliği (PGID), işlem kimliği ile aynı tiptedir (pid_t). Bir süreç grubunun, grubu oluşturan ve süreç kimliği grubun süreç grubu kimliği haline gelen süreç olan bir süreç grubu lideri vardır.

Sessions - Çeşitli süreç gruplarının bir koleksiyonudur.

Job Control- Bu, bir kabuk kullanıcısının aynı anda birden çok komutu (veya işi) yürütmesine izin verir, biri ön planda ve tümü arka planda kalır. İşleri ön plandan arka plana veya tersi yönde taşımak da mümkündür.

Bunu shell (BASH) kullanan örnek programların yardımıyla anlayalım.

  • Basic_commands.sh adlı temel komutları (tarih, echo, uyku ve cal) gerçekleştirmek için kabuk betiği (BASH olarak)

  • Temel komutları (ps, echo) gerçekleştirmek için kabuk komut dosyası (BASH olarak)

#!/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

Dosyaya yürütme izinleri vermek için chmod komutunu kullanın. Varsayılan olarak, normal dosya yalnızca okuma ve yazma izinlerini alır ve izinleri yürütmez.

Mevcut çalışan işlemi durdurmak için CTRL + Z girmeniz gerekir. Bu size bir iş numarası verir. İş, ön planda veya arka planda devam ettirilebilir. Gerekirse, ön plandaki işe devam etmek için 'fg' komutunu kullanın. Gerekirse işi arka planda sürdürmek için 'bg' komutunu kullanın. Bunu kullanarak, yalnızca son durdurulan işlemi çalıştırır. Ya son durdurulan işlem dışında başlamak isterseniz? Sadece fg veya bg'den sonra iş numarasını kullanın (örneğin bg% 2 veya bg% 3, vb.). Çalışan iş arka plandaysa, ön plandaki diğer görevleri de çalıştırabilirsiniz. İşlerin listesini almak için komut, işler kullanın. İşlemi CTRL + C veya kill komutu ile sonlandırmak da mümkündür. Kill komutunu kullanırken iş numarasını iletebilirsiniz.

İşlerin durdurulmasını, işlerin ön plandan arka plana taşınmasını ve bunun tersini, işlerin sonlandırılmasını vb. Gösteren aşağıdaki çıktıyı kontrol edin.

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