Cara Menjalankan Bash Script Saat Booting Linux (Autostart) dengan systemd: Panduan Lengkap
Menjalankan bash script secara otomatis saat Linux booting adalah salah satu skill dasar yang wajib dikuasai oleh siapa pun yang belajar Linux System Administration, DevOps, atau pengelolaan server. Pada kondisi nyata di lapangan, banyak kebutuhan yang mengharuskan sebuah skrip berjalan otomatis tanpa perlu dieksekusi manual setelah login.
Contoh kebutuhan paling umum adalah menjalankan skrip backup, sinkronisasi file, mounting network storage, memulai service aplikasi custom, melakukan health-check, menjalankan bot monitoring, atau menyalakan proses worker tertentu di server.

Di Linux modern, metode terbaik dan paling direkomendasikan untuk autostart script adalah menggunakan systemd. Hampir semua distro Linux populer saat ini—seperti Ubuntu, Debian, CentOS Stream, Rocky Linux, AlmaLinux, Fedora, hingga Arch Linux—menggunakan systemd sebagai init system dan service manager.
Artikel ini akan membahas cara menjalankan bash script saat booting Linux dengan benar menggunakan systemd, termasuk pembuatan service file, konfigurasi permission, debugging, dan best practice agar skrip stabil berjalan di background.
Kenapa Harus systemd untuk Autostart Script?
Banyak pemula mencoba menjalankan skrip autostart melalui cara lama seperti /etc/rc.local, cron @reboot, atau menaruh perintah di .bashrc. Walaupun beberapa cara tersebut bisa bekerja, systemd tetap unggul karena:
- Lebih stabil dan standar di Linux modern
- Mudah dimonitor dan dikontrol (
start,stop,restart,status) - Bisa dibuat dependency (misalnya tunggu network online dulu)
- Memiliki logging otomatis melalui journalctl
- Bisa restart otomatis jika script crash
Jika tujuan Anda adalah menjalankan bash script untuk kebutuhan server dan produksi, systemd adalah metode yang paling aman dan profesional.
Persiapan: Pastikan Script Bisa Jalan Manual
Sebelum membuat service systemd, langkah pertama adalah memastikan skrip Anda benar-benar bisa dieksekusi manual.
Misalnya Anda punya file script bernama:
sync.sh
Idealnya script disimpan di lokasi yang “rapi” dan standar seperti:
/usr/local/bin//opt/scripts//home/user/scripts/(untuk testing)
Contoh lokasi yang disarankan:
sudo nano /usr/local/bin/sync.sh
Isi contoh script sederhana:
#!/bin/bash
echo "Sync service started at $(date)" >> /var/log/sync.log
Setelah itu beri permission executable:
sudo chmod +x /usr/local/bin/sync.sh
Lalu uji jalankan:
sudo /usr/local/bin/sync.sh
Jika file log muncul, berarti script sudah valid.
Cara Menjalankan Bash Script Saat Booting Linux Menggunakan systemd
Untuk membuat script berjalan otomatis saat booting, Anda perlu membuat systemd service file.
Lokasi service file bisa di:
/etc/systemd/system/→ untuk service custom buatan user/admin (paling disarankan)/lib/systemd/system/→ biasanya untuk service bawaan paket distro
Untuk kebutuhan Anda, gunakan:
✅ /etc/systemd/system/
1) Membuat File Service systemd
Misalnya Anda ingin service bernama:
sync.service
Buat file:
sudo nano /etc/systemd/system/sync.service
Isi service file dasar:
[Unit]
Description=My Shell Script for Sync
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/sync.sh
[Install]
WantedBy=multi-user.target
Penjelasan Isi systemd Service File (Supaya Tidak Asal Copy-Paste)
Bagian [Unit]
- Description=
Nama deskripsi service (bebas). - After=network.target
Menandakan service baru dijalankan setelah target network dimulai.
Ini penting kalau script Anda butuh internet atau akses jaringan.
Jika script Anda butuh network benar-benar aktif (misalnya ping, curl, akses NFS), lebih aman gunakan:
After=network-online.target
Wants=network-online.target
Bagian [Service]
- Type=simple
Artinya service dianggap berjalan selama prosesExecStartmasih aktif. - ExecStart=
Menunjukkan file script yang dieksekusi saat service dimulai.
Catatan penting:
Pastikan path script benar dan script memiliki shebang #!/bin/bash.
Bagian [Install]
- WantedBy=multi-user.target
Artinya service akan dijalankan saat Linux masuk mode multi-user (mode server normal).
2) Reload systemd Agar Service Baru Terdeteksi
Setelah membuat file service, jalankan:
sudo systemctl daemon-reload
Ini wajib, karena systemd tidak otomatis membaca file baru tanpa reload.
3) Mengaktifkan Service Agar Autostart Saat Booting
Gunakan perintah:
sudo systemctl enable sync.service
Perintah ini akan membuat symbolic link agar service dijalankan otomatis saat boot.
4) Menjalankan Service Tanpa Perlu Restart Server
Agar service langsung aktif sekarang juga:
sudo systemctl start sync.service
5) Mengecek Status Service
Untuk memastikan service berjalan:
sudo systemctl status sync.service
Jika berhasil, Anda akan melihat status seperti:
- active (running)
- loaded
- enabled
Cara Melihat Log Service systemd (Sangat Penting untuk Troubleshooting)
Salah satu keunggulan systemd adalah logging terpusat. Anda bisa membaca log service dengan:
journalctl -u sync.service
Jika ingin melihat log real-time:
journalctl -u sync.service -f
Ini sangat berguna ketika script Anda error saat booting.
Best Practice: Script Jalan Terus (Daemon Mode) atau Sekali Jalan?
Ada dua tipe kebutuhan autostart:
1) Script dijalankan sekali saat boot
Contoh: mounting disk, setting iptables, menyalakan konfigurasi.
Untuk tipe ini, Anda bisa gunakan:
Type=oneshot
RemainAfterExit=yes
Contoh:
[Service]
Type=oneshot
ExecStart=/usr/local/bin/sync.sh
RemainAfterExit=yes
2) Script berjalan terus menerus (background process)
Contoh: monitoring loop, worker, bot, listener.
Untuk tipe ini, Anda perlu memastikan script tidak selesai lalu exit.
Contoh script loop:
#!/bin/bash
while true; do
echo "Service running at $(date)" >> /var/log/sync.log
sleep 10
done
Membuat Service Auto-Restart Jika Script Crash
Di lingkungan server, script bisa berhenti karena error. Untuk itu, tambahkan konfigurasi restart otomatis:
[Service]
Type=simple
ExecStart=/usr/local/bin/sync.sh
Restart=always
RestartSec=3
Artinya jika script exit, systemd akan menjalankannya lagi setelah 3 detik.
Menjalankan Script Sebagai User Tertentu (Bukan Root)
Secara default, systemd menjalankan service sebagai root jika service dibuat di /etc/systemd/system/.
Jika Anda ingin menjalankan script sebagai user tertentu, tambahkan:
User=ubuntu
Group=ubuntu
Contoh:
[Service]
Type=simple
User=ubuntu
Group=ubuntu
ExecStart=/usr/local/bin/sync.sh
Restart=always
RestartSec=3
Ini penting untuk keamanan, terutama jika script Anda tidak membutuhkan akses root.
Menentukan Working Directory (Lokasi Kerja Script)
Kadang script gagal karena ia mengakses file relatif, misalnya:
./data.txt
Saat dijalankan oleh systemd, working directory default bukan folder script. Untuk mengatasinya:
WorkingDirectory=/usr/local/bin
Mengatur Environment Variable di Service
Jika script Anda butuh environment variable seperti API_KEY atau PATH khusus, tambahkan:
Environment="API_KEY=xxxxxx"
Environment="MODE=production"
Atau gunakan file environment:
EnvironmentFile=/etc/default/sync
Contoh Service systemd yang Lebih Lengkap (Rekomendasi)
Berikut contoh yang lebih “siap produksi”:
[Unit]
Description=Sync Script Service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/sync.sh
Restart=always
RestartSec=5
User=root
WorkingDirectory=/usr/local/bin
StandardOutput=append:/var/log/sync-service.log
StandardError=append:/var/log/sync-service-error.log
[Install]
WantedBy=multi-user.target
Cara Menghentikan dan Menonaktifkan Autostart
Jika Anda ingin menghentikan service:
sudo systemctl stop sync.service
Jika ingin menonaktifkan autostart:
sudo systemctl disable sync.service
Jika ingin menghapus total:
- Hapus file service:
sudo rm /etc/systemd/system/sync.service - Reload systemd:
sudo systemctl daemon-reload
Penyebab Umum Script Tidak Jalan Saat Booting
Berikut masalah yang paling sering terjadi:
1) Script belum executable
Solusi:
sudo chmod +x /usr/local/bin/sync.sh
2) Path script salah
Pastikan ExecStart= menggunakan path absolut.
3) Script butuh network tapi service jalan terlalu cepat
Solusi:
Gunakan network-online.target.
4) Script butuh permission root
Solusi:
Jalankan sebagai root atau atur permission file.
5) Script butuh bash tapi shebang salah
Gunakan:
#!/bin/bash
6) Script bergantung pada PATH
Solusi:
Gunakan path absolut untuk semua command dalam script.
Misalnya:
/usr/bin/curl/usr/bin/python3/bin/mkdir
Kesimpulan

Menjalankan bash script saat booting Linux (autostart) adalah kebutuhan umum dalam administrasi server. Metode terbaik dan paling direkomendasikan di Linux modern adalah menggunakan systemd dengan membuat service file di /etc/systemd/system/.
Dengan systemd, Anda bisa mengontrol script seperti service profesional: bisa start/stop, auto-restart, logging rapi, dependency network, dan menjalankan script sebagai user tertentu. Ini jauh lebih aman dan stabil dibanding metode lama seperti rc.local atau cron @reboot.
Jika Anda ingin membangun sistem Linux yang serius—baik untuk server produksi, VPS, maupun lab otomasi—maka memahami systemd adalah investasi skill yang sangat besar.



