Hemat 15% untuk semua layanan hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode: Skills Memulai
Bagian FAQ
Administrasi Linux

Cara Menjalankan File .sh di Linux: Panduan Lengkap untuk Pemula dan Sysadmin

Shell scripts adalah tulang punggung otomasi Linux. Baik Anda menerapkan aplikasi web, menjadwalkan cadangan, atau mengonfigurasi server yang baru disediakan, file .sh memungkinkan Anda menggabungkan urutan perintah yang kompleks menjadi satu executable yang dapat diulang. Panduan ini memandu Anda melalui setiap metode untuk menjalankan shell scripts di Linux — dari eksekusi dasar hingga proses latar belakang dan penjadwalan cron — dengan praktik terbaik yang berlaku di lingkungan produksi.

Apa Itu File .sh di Linux?

File .sh adalah skrip teks biasa yang ditulis dalam bahasa shell (biasanya Bash atau POSIX sh) yang diinterpretasi dan dieksekusi oleh shell Linux baris demi baris. Skrip shell digunakan untuk:

  • Mengotomatisasi tugas administrasi sistem yang berulang
  • Menerapkan dan mengonfigurasi aplikasi
  • Mengelola pengguna, izin, dan sistem file
  • Menjadwalkan pekerjaan pemeliharaan seperti backup dan rotasi log
  • Bootstrap server baru setelah provisioning

Jika Anda mengelola lingkungan VPS Hosting atau Dedicated Server, skrip shell adalah keterampilan yang sangat diperlukan yang akan menghemat Anda berjam-jam pekerjaan manual setiap minggu.

Prasyarat

Sebelum menjalankan file .sh apa pun, pastikan Anda memiliki:

  • Akses ke terminal Linux (lokal atau melalui SSH)
  • Akun pengguna dengan izin yang sesuai
  • File skrip sudah ada di sistem (dibuat secara lokal atau ditransfer melalui SCP/SFTP)

Metode 1: Buat File Dapat Dieksekusi dengan chmod

Secara default, file .sh yang baru dibuat atau diunduh tidak memiliki izin eksekusi. Sebelum menjalankan skrip sebagai program, Anda harus secara eksplisit memberikan hak eksekusi menggunakan perintah chmod.

chmod +x script.sh

Untuk memverifikasi bahwa izin diterapkan dengan benar:

ls -l script.sh

Anda harus melihat output serupa dengan:

-rwxr-xr-x 1 user user 1024 Jun 10 14:32 script.sh

Flag x mengonfirmasi bahwa file sekarang dapat dieksekusi oleh pemilik, grup, dan orang lain.

> Tips keamanan: Jika Anda ingin membatasi eksekusi hanya untuk pemilik file, gunakan chmod 700 script.sh sebagai gantinya dari chmod +x.

Metode 2: Jalankan Skrip Menggunakan Jalur Relatif atau Absolut

Setelah file dapat dieksekusi, Anda dapat menjalankannya langsung dari terminal.

Menggunakan Jalur Relatif (Direktori Saat Ini)

Jika skrip berada di direktori kerja saat ini, awali dengan ./:

./script.sh

./ memberi tahu shell untuk mencari di direktori saat ini daripada mencari sistem $PATH.

Menggunakan Jalur Absolut

Jika skrip disimpan di lokasi lain, berikan jalur lengkapnya:

/home/user/scripts/script.sh

atau

/usr/local/bin/script.sh

Menggunakan jalur absolut sangat penting saat menjalankan skrip dari cron jobs atau konteks otomatis lainnya di mana direktori kerja mungkin berbeda.

Metode 3: Jalankan Skrip dengan bash atau sh (Izin Eksekusi Tidak Diperlukan)

Anda dapat menjalankan skrip shell dengan secara eksplisit memanggil interpreter, bahkan jika file tidak memiliki izin eksekusi. Ini sangat berguna untuk dengan cepat menguji skrip sebelum membuatnya secara permanen dapat dieksekusi.

bash script.sh

atau, untuk skrip yang sesuai dengan POSIX:

sh script.sh

Perbedaan Antara bash dan sh

PerintahInterpreterMendukung Fitur Spesifik Bash
bash script.shGNU BashYa
sh script.shPOSIX sh (sering kali dash di Ubuntu)Tidak

Jika skrip Anda menggunakan sintaks spesifik Bash seperti array, [[ ]] conditional, atau process substitution, selalu gunakan bash daripada sh.

Metode 4: Jalankan Skrip sebagai Superuser (sudo)

Beberapa skrip memerlukan hak istimewa tingkat root untuk memodifikasi file sistem, mengelola layanan, menginstal paket, atau mengubah konfigurasi jaringan. Gunakan sudo untuk meningkatkan izin:

sudo ./script.sh

atau teruskan skrip langsung ke bash dengan hak yang ditingkatkan:

sudo bash script.sh

Pertimbangan Keamanan Penting

  • Jangan pernah menjalankan skrip sebagai root tanpa membacanya terlebih dahulu. Skrip berbahaya atau ditulis dengan buruk dengan akses sudo dapat menyebabkan kerusakan sistem yang tidak dapat diperbaiki.
  • Lebih suka menjalankan skrip dengan izin minimum yang diperlukan.
  • Jika skrip hanya perlu menulis ke direktori tertentu, pertimbangkan untuk menyesuaikan izin direktori daripada menjalankan seluruh skrip sebagai root.

Metode 5: Jalankan Skrip di Latar Belakang

Secara default, menjalankan skrip di terminal memblokir sesi Anda hingga skrip selesai. Untuk tugas yang berjalan lama — seperti transfer file besar, migrasi database, atau pembangunan server — Anda akan ingin mengirim proses ke latar belakang.

Menggunakan Operator &

./script.sh &

Simbol & memisahkan proses ke latar belakang dan segera mengembalikan kontrol ke terminal Anda. Shell mencetak PID (Process ID) pekerjaan latar belakang, yang dapat Anda gunakan untuk memantau atau menghentikannya nanti.

Jaga Skrip Tetap Berjalan Setelah Logout dengan nohup

Jika Anda memutuskan sambungan dari SSH, pekerjaan latar belakang yang diluncurkan dengan & biasanya akan dihentikan. Gunakan nohup untuk mencegah hal ini:

nohup ./script.sh &

Output dialihkan ke nohup.out secara default. Untuk menentukan file log khusus:

nohup ./script.sh > /var/log/myscript.log 2>&1 &

Pantau Pekerjaan Latar Belakang

jobs          # List background jobs in the current session
ps aux | grep script.sh   # Find the process by name
kill PID      # Terminate a specific background process

Metode 6: Jadwalkan Eksekusi Script dengan Cron

Untuk tugas berulang — backup malam hari, pembersihan mingguan, pemeriksaan kesehatan per jam — penjadwal cron bawaan Linux adalah solusi standar.

Buka Editor Crontab

crontab -e

Sintaks Cron

* * * * * /path/to/script.sh
│ │ │ │ │
│ │ │ │ └── Day of week (0–7, Sunday = 0 or 7)
│ │ │ └──── Month (1–12)
│ │ └────── Day of month (1–31)
│ └──────── Hour (0–23)
└────────── Minute (0–59)

Contoh Cron Praktis

JadwalEkspresi CronContoh Kasus Penggunaan
Setiap hari pukul 2:00 AM0 2 * * *Backup database malam hari
Setiap Senin pukul 6:00 AM0 6 * * 1Rotasi log mingguan
Setiap jam0 * * * *Pemeriksaan pemantauan uptime
Setiap 15 menit*/15 * * * *Penyegaran cache
Saat sistem boot ulang@rebootMulai layanan atau script saat boot

Contoh: Backup Harian Otomatis

0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Ini menjalankan backup.sh setiap hari pukul 2:00 AM dan menambahkan output standar dan error ke file log untuk audit.

> Pro tip: Selalu gunakan path absolut dalam entri cron. Cron berjalan dengan lingkungan minimal dan mungkin tidak memiliki akses ke $PATH yang sama seperti shell interaktif Anda.

Metode 7: Source a Script (Jalankan dalam Konteks Shell Saat Ini)

Ada satu metode eksekusi lagi yang perlu diketahui: sourcing a script. Tidak seperti metode di atas, sourcing menjalankan script dalam sesi shell saat ini daripada menghasilkan subshell. Ini berarti variabel atau fungsi apa pun yang ditentukan dalam script tetap ada di lingkungan saat Anda.

source script.sh

atau setara dengan:

. script.sh

Ini biasanya digunakan untuk memuat variabel lingkungan, mengaktifkan virtual environments, atau menerapkan perubahan konfigurasi ke sesi saat ini.

Pemecahan Masalah Kesalahan Umum

Pesan KesalahanPenyebab KemungkinanSolusi
Permission deniedFile tidak memiliki izin eksekusiJalankan chmod +x script.sh
No such file or directoryPath salah atau file hilangVerifikasi path dengan ls dan pwd
bad interpreter: No such file or directoryBaris shebang salah (misalnya, akhir baris Windows)Jalankan dos2unix script.sh untuk memperbaiki akhir baris
command not foundScript tidak dalam $PATH dan tidak ada awalan ./Gunakan ./script.sh atau path absolut lengkap
syntax error near unexpected tokenScript ditulis untuk bash tetapi dijalankan dengan shGunakan bash script.sh secara eksplisit

Praktik Terbaik untuk Menulis dan Menjalankan Shell Scripts

Mengikuti praktik ini akan membuat script Anda lebih aman, lebih mudah dipelihara, dan lebih mudah di-debug — terutama di lingkungan server.

1. Selalu Mulai dengan Baris Shebang

Baris pertama setiap script harus mendeklarasikan interpreter:

#!/bin/bash

atau untuk portabilitas maksimal:

#!/usr/bin/env bash

2. Aktifkan Strict Mode

Tambahkan ini di dekat bagian atas setiap script produksi:

set -euo pipefail
  • -e — Keluar segera jika ada perintah yang gagal
  • -u — Perlakukan variabel yang tidak diatur sebagai kesalahan
  • -o pipefail — Tangkap kegagalan dalam perintah yang di-pipe

3. Baca Script Sebelum Menjalankannya

Jangan pernah menjalankan file .sh dari sumber eksternal atau yang tidak terpercaya tanpa meninjau isinya terlebih dahulu:

cat script.sh

atau buka di editor teks. Ini sangat penting saat menjalankan dengan sudo.

4. Gunakan Komentar Secara Melimpah

#!/bin/bash
# backup.sh — Daily backup script for /var/www
# Author: sysadmin@example.com
# Last updated: 2024-06-10

# Define source and destination directories
SOURCE="/var/www"
DEST="/mnt/backup"

5. Atur Script dalam Direktori Khusus

DirektoriPenggunaan yang Direkomendasikan
/usr/local/bin/Script di seluruh sistem yang dapat diakses oleh semua pengguna
~/scripts/ atau ~/bin/Script pengguna pribadi
/opt/scripts/Script otomasi khusus aplikasi
/etc/cron.daily/Script untuk dijalankan setiap hari melalui cron

6. Catat Output Script

Selalu alihkan output ke file log untuk script yang berjalan tanpa pengawasan:

./script.sh >> /var/log/script.log 2>&1

7. Uji Script di Lingkungan yang Aman Terlebih Dahulu

Sebelum menerapkan script ke server produksi, uji di lingkungan staging atau instance VPS yang dapat dibuang di mana kesalahan tidak akan menyebabkan downtime.

Menjalankan Shell Scripts di Server Linux: Pertimbangan Praktis

Saat menjalankan script di server Linux jarak jauh — baik itu di lingkungan bersama atau mesin dedicated — beberapa faktor tambahan perlu dipertimbangkan:

  • Akses SSH: Sebagian besar scripting sisi server terjadi melalui SSH. Tools seperti screen atau tmux memungkinkan Anda mempertahankan sesi persisten sehingga script yang berjalan lama bertahan dari pemutusan koneksi.
  • Izin pengguna: Di lingkungan shared hosting, kemampuan Anda untuk menjalankan script mungkin terbatas. Sebuah VPS dengan cPanel memberikan Anda akses root penuh dan kontrol lengkap atas eksekusi script.
  • Deployment otomatis: Gabungkan shell script dengan cron job untuk mengotomatisasi deployment, pembaruan sertifikat (sangat berguna bersama dengan SSL Certificates), dan tugas pemeliharaan rutin.
  • Variabel lingkungan: Script yang berjalan melalui cron atau SSH mungkin tidak mewarisi lingkungan shell interaktif Anda. Tentukan semua variabel yang diperlukan secara eksplisit dalam script atau source file profil.

Referensi Cepat: Semua Metode Sekilas

MetodePerintahKasus Penggunaan
Jalankan dengan izinchmod +x script.sh && ./script.shEksekusi standar
Jalankan dengan bashbash script.shTidak perlu izin eksekusi
Jalankan dengan shsh script.shSkrip kompatibel POSIX
Jalankan sebagai rootsudo ./script.shSkrip yang memerlukan hak istimewa yang ditingkatkan
Jalankan di latar belakang./script.sh &Eksekusi non-blocking
Jalankan secara persistennohup ./script.sh &Bertahan setelah logout SSH
Jadwalkan dengan croncrontab -eTugas otomatis berulang
Source skripsource script.shTerapkan perubahan ke shell saat ini

Kesimpulan

Menjalankan file .sh di Linux adalah keterampilan fundamental yang membuka kekuatan penuh otomasi sistem. Alur kerja inti sangat sederhana: berikan izin eksekusi dengan chmod +x, kemudian jalankan skrip dengan ./script.sh atau bash script.sh. Untuk lingkungan produksi, gabungkan jalur absolut, mode ketat, logging, dan penjadwalan cron untuk membangun pipeline otomasi yang kuat dan andal.

Jika Anda mengelola skrip di server, kualitas infrastruktur hosting Anda penting. VPS Hosting dan Dedicated Servers AlexHost memberi Anda akses root penuh, uptime stabil, dan performa yang Anda butuhkan untuk menjalankan beban kerja otomasi dengan percaya diri — baik Anda menjadwalkan backup malam hari, menerapkan aplikasi, atau mengelola alur kerja multi-skrip yang kompleks.