Grup Proses, Sesi & Kontrol Pekerjaan

Di bab ini, kita akan mengenal Grup Proses, Sesi, dan Kontrol Pekerjaan.

Process Group- Grup proses adalah kumpulan dari satu atau lebih proses. Grup proses terdiri dari satu atau lebih proses yang berbagi pengidentifikasi grup proses (PGID) yang sama. ID grup proses (PGID) memiliki jenis yang sama (pid_t) sebagai ID proses. Grup proses memiliki pemimpin grup proses, yang merupakan proses yang membuat grup dan ID prosesnya menjadi ID grup proses dari grup tersebut.

Sessions - Ini adalah kumpulan dari berbagai kelompok proses.

Job Control- Ini memungkinkan pengguna shell untuk secara bersamaan menjalankan beberapa perintah (atau pekerjaan), satu di latar depan dan semua yang tersisa di latar belakang. Juga dimungkinkan untuk memindahkan pekerjaan dari latar depan ke latar belakang dan sebaliknya.

Mari kita pahami ini dengan bantuan program contoh yang menggunakan shell (BASH).

  • Skrip shell (dalam BASH) untuk melakukan perintah dasar (tanggal, gema, tidur dan kal) bernama basic_commands.sh

  • Skrip shell (dalam BASH) untuk melakukan perintah dasar (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

Gunakan perintah chmod untuk memberi file izin eksekusi. Secara default, file normal hanya akan mendapatkan izin baca dan tulis dan tidak menjalankan izin.

Untuk menghentikan proses yang sedang berjalan, Anda harus memasukkan CTRL + Z. Ini memberi Anda nomor pekerjaan. Pekerjaan dapat dilanjutkan di latar depan atau latar belakang. Jika perlu, untuk melanjutkan pekerjaan di latar depan gunakan perintah 'fg'. Jika perlu, untuk melanjutkan pekerjaan di latar belakang, gunakan perintah 'bg'. Dengan menggunakan ini, itu hanya akan menjalankan proses yang terakhir dihentikan. Bagaimana jika Anda ingin memulai selain proses yang terakhir dihentikan? Cukup gunakan nomor pekerjaan setelah fg atau bg (katakanlah bg% 2 atau bg% 3, dll). Jika pekerjaan yang sedang berjalan ada di latar belakang, Anda dapat menjalankan tugas lainnya di latar depan. Untuk mendapatkan daftar pekerjaan, gunakan perintah, pekerjaan. Dimungkinkan juga untuk menghentikan proses baik dengan CTRL + C atau perintah kill. Anda dapat memberikan nomor pekerjaan saat menggunakan perintah kill.

Periksa keluaran berikut yang menunjukkan penghentian pekerjaan, memindahkan pekerjaan dari latar depan ke latar belakang dan sebaliknya, menghentikan pekerjaan, dll.

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