# Modul 1

{% embed url="<https://github.com/arsitektur-jaringan-komputer/Modul-Sisop/blob/master/Modul1/>" %}

{% hint style="info" %}
Nama: <mark style="color:green;">Nabil Irawan</mark>

Kelas: <mark style="color:yellow;">Sistem Operasi (A)</mark>
{% endhint %}

| Soal                                  | Topik                                              |
| ------------------------------------- | -------------------------------------------------- |
| Soal 1: Navigasi dan Permission       | Perintah dan Navigasi, Konsep User dan Permission  |
| Soal 2: Shell Script Sederhana        | Shell Script Sederhana, Variabel, Input dan Output |
| Soal 3: Perulangan dalam Shell Script | Perulangan, Operator                               |
| Soal 4: Cron Jobs                     | Pembuatan Cron Jobs                                |
| Soal 5: Pemrosesan Teks dengan AWK    | Menjalankan Program AWK, BEGIN dan END             |

## Soal 1: Navigasi dan Permission

### Perintah dan Navigasi, Konsep User dan Permission

#### Deskripsi

> Buatlah sebuah direktori bernama `praktikum_linux`, lalu masuk ke dalamnya dan buat file kosong bernama `script.sh`.\
> Setelah itu, ubah permission file `script.sh` agar hanya pemiliknya yang bisa membaca dan menulis file, sedangkan user lain tidak bisa mengaksesnya.

#### Jawaban

Untuk membuat sebuah direktori bernama `praktikum_linux`, lalu masuk ke dalamnya dan membuat file kosong bernama `script.sh`, kita dapat menggunakan one line command berikut:

```sh
mkdir praktikum_linux && cd praktikum_linux && touch script.sh
```

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2FGS16DoosEUdcjL2uCPAm%2FScreenshot%202025-03-09%20212757.png?alt=media&#x26;token=ed23e791-9cdd-459a-b17f-50790cc98d07" alt=""><figcaption></figcaption></figure>

Lalu untuk mengubah permission file `script.sh` agar hanya pemiliknya yang bisa membaca dan menulis file, sedangkan user lain tidak bisa mengaksesnya, dapat menggunakan command berikut:

```sh
chmod 600 script.sh
```

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2F10BweZ9F6qD4OlGZkoeC%2FScreenshot%202025-03-09%20212937.png?alt=media&#x26;token=d0489a86-214d-41fe-9be8-93bd6a9b709a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2Fku7V94q70mMJnzXemZyc%2FScreenshot%202025-03-09%20213404.png?alt=media&#x26;token=16535e67-bd46-4cca-b50d-cdc5fd200d2f" alt=""><figcaption><p>Proof</p></figcaption></figure>

{% hint style="success" %}
**Solved!**
{% endhint %}

## Soal 2: Shell Script Sederhana

### Shell Script Sederhana, Variabel, Input dan Output

#### Deskripsi

> Buatlah shell script bernama `hello.sh` yang meminta pengguna memasukkan nama, lalu mencetak output:
>
> ```bash
> Halo, <nama>! Selamat datang di praktikum Linux.
> ```
>
> di mana `<nama>` adalah input yang dimasukkan oleh pengguna.

#### Jawaban

Membuat shell script, di sini saya menggunakan nano:

```sh
nano hello.sh
```

Kemudian masukkan:

```bash
#!/bin/bash

echo "Input nama: "
read nama

echo "Halo, $nama! Selamat datang di praktikum Linux."
```

Untuk menyimpan, gunakan `CTRL+X`, kemudian `Y`, terakhir `ENTER`.

Shell script tersebut tidak dapat langsung dijalankan, tetapi perlu diberikan akses untuk execute menggunakan:

```sh
chmod +x hello.sh
```

Terakhir, untuk mengeksekusi gunakan `./hello.sh`.

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2FeUvmlF8jp6HHlsMnIOYi%2FScreenshot%202025-03-09%20214941.png?alt=media&#x26;token=41825cd9-72a5-4f2f-92c6-74d1b3cd9358" alt=""><figcaption><p>Proof</p></figcaption></figure>

{% hint style="success" %}
**Solved!**
{% endhint %}

## Soal 3: Perulangan dalam Shell Script

### Perulangan, Operator

#### Deskripsi

> Buatlah script bernama `loop.sh` yang mencetak angka dari 1 hingga 5 dengan format berikut:
>
> ```bash
> Angka ke-1
> Angka ke-2
> Angka ke-3
> Angka ke-4
> Angka ke-5
> ```
>
> Gunakan perulangan `for` untuk menyelesaikan soal ini.

#### Jawaban

Buat dengan `nano loop.sh`:

```bash
#!/bin/bash

for i in {1..5}
do
  echo "Angka ke-$i"
done
```

Kemudian `chmod +x loop.sh` dan eksekusi `./loop.sh`.

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2FvQh0XSGmYqTtaZzU50a2%2FScreenshot%202025-03-09%20215700.png?alt=media&#x26;token=88a91010-ab64-4383-b943-5c409bde794e" alt=""><figcaption><p>Proof</p></figcaption></figure>

{% hint style="success" %}
**Solved!**
{% endhint %}

## Soal 4: Cron Jobs

### Pembuatan Cron Jobs

#### Deskripsi

> Buatlah cron job yang akan menampilkan teks:
>
> ```bash
> Waktunya belajar Linux!
> ```
>
> setiap 5 menit dan menyimpannya ke dalam file `cron_log.txt` di direktori home pengguna.

#### Jawaban

Gunakan `crontab -e`, kemudian masukkan:

```sh
*/5 * * * * echo "Waktunya belajar Linux!" >> ~/cron_log.txt
```

Untuk memastikan perubahan, gunakan `crontab -l`.

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2FaiwWhxElUaOIeGMuBGBM%2FScreenshot%202025-03-09%20221118.png?alt=media&#x26;token=22f3d1cc-6213-48e2-95b8-3bd49fffe5d0" alt=""><figcaption><p>Proof</p></figcaption></figure>

{% hint style="success" %}
**Solved!**
{% endhint %}

## Soal 5: Pemrosesan Teks dengan AWK

### Menjalankan Program AWK, BEGIN dan END

#### Deskripsi

> Buatlah file `data.txt` dengan isi sebagai berikut:
>
> ```
> Nama Nilai
> Andi 80
> Budi 75
> Citra 90
> Dewi 85
> ```
>
> Lalu, buat perintah AWK yang menampilkan output berikut:
>
> ```bash
> Daftar Nilai Mahasiswa:
> Andi: 80
> Budi: 75
> Citra: 90
> Dewi: 85
> Rata-rata Nilai: 82.5
> ```
>
> Gunakan `BEGIN` untuk mencetak judul, proses untuk membaca data, dan `END` untuk menghitung rata-rata nilai.

#### Jawaban

Buat file data.txt terlebih dahulu dengan `nano data.txt`. Supaya mempermudah, saya menaruh command awk di file `awk.txt`.

```awk
BEGIN {
    print "Daftar Nilai Mahasiswa:"
}
{
    if (NR > 1) {
        print $1 ": " $2
        total += $2
        count++
    }
}
END {
    rata_rata = total / count
    print "Rata-rata Nilai: " rata_rata
}
```

Kemudian untuk menjalankannya tinggal menggunakan command `awk -f awk.txt data.txt`.

<figure><img src="https://1171059021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDs2RvECxJcIRt2CHIzzu%2Fuploads%2Fx2DB7qdivKOBXW9Y7PdY%2FScreenshot%202025-03-09%20222935.png?alt=media&#x26;token=40b9a046-02a2-4af0-9f3e-deb549d46811" alt=""><figcaption><p>Proof</p></figcaption></figure>

{% hint style="success" %}
**Solved!**
{% endhint %}
