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.shUntuk memverifikasi bahwa izin diterapkan dengan benar:
ls -l script.shAnda harus melihat output serupa dengan:
-rwxr-xr-x 1 user user 1024 Jun 10 14:32 script.shFlag 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.shatau
/usr/local/bin/script.shMenggunakan 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.shatau, untuk skrip yang sesuai dengan POSIX:
sh script.shPerbedaan Antara bash dan sh
| Perintah | Interpreter | Mendukung Fitur Spesifik Bash |
|---|---|---|
bash script.sh | GNU Bash | Ya |
sh script.sh | POSIX 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.shatau teruskan skrip langsung ke bash dengan hak yang ditingkatkan:
sudo bash script.shPertimbangan 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 processMetode 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 -eSintaks 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
| Jadwal | Ekspresi Cron | Contoh Kasus Penggunaan |
|---|---|---|
| Setiap hari pukul 2:00 AM | 0 2 * * * | Backup database malam hari |
| Setiap Senin pukul 6:00 AM | 0 6 * * 1 | Rotasi log mingguan |
| Setiap jam | 0 * * * * | Pemeriksaan pemantauan uptime |
| Setiap 15 menit | */15 * * * * | Penyegaran cache |
| Saat sistem boot ulang | @reboot | Mulai layanan atau script saat boot |
Contoh: Backup Harian Otomatis
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1Ini 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.shatau setara dengan:
. script.shIni biasanya digunakan untuk memuat variabel lingkungan, mengaktifkan virtual environments, atau menerapkan perubahan konfigurasi ke sesi saat ini.
Pemecahan Masalah Kesalahan Umum
| Pesan Kesalahan | Penyebab Kemungkinan | Solusi |
|---|---|---|
Permission denied | File tidak memiliki izin eksekusi | Jalankan chmod +x script.sh |
No such file or directory | Path salah atau file hilang | Verifikasi path dengan ls dan pwd |
bad interpreter: No such file or directory | Baris shebang salah (misalnya, akhir baris Windows) | Jalankan dos2unix script.sh untuk memperbaiki akhir baris |
command not found | Script tidak dalam $PATH dan tidak ada awalan ./ | Gunakan ./script.sh atau path absolut lengkap |
syntax error near unexpected token | Script ditulis untuk bash tetapi dijalankan dengan sh | Gunakan 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/bashatau untuk portabilitas maksimal:
#!/usr/bin/env bash2. 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.shatau 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
| Direktori | Penggunaan 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>&17. 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
screenatautmuxmemungkinkan 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
| Metode | Perintah | Kasus Penggunaan |
|---|---|---|
| Jalankan dengan izin | chmod +x script.sh && ./script.sh | Eksekusi standar |
| Jalankan dengan bash | bash script.sh | Tidak perlu izin eksekusi |
| Jalankan dengan sh | sh script.sh | Skrip kompatibel POSIX |
| Jalankan sebagai root | sudo ./script.sh | Skrip yang memerlukan hak istimewa yang ditingkatkan |
| Jalankan di latar belakang | ./script.sh & | Eksekusi non-blocking |
| Jalankan secara persisten | nohup ./script.sh & | Bertahan setelah logout SSH |
| Jadwalkan dengan cron | crontab -e | Tugas otomatis berulang |
| Source skrip | source script.sh | Terapkan 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.
untuk semua layanan hosting