Linux’ta Startup Script Çalıştırma

bash script cpynet

Linux işletim sisteminde başlangıçta bir betik çalıştırmak bazen sunucu uygulamalarını otomatik olarak başlatmak gibi birçok senaryoda kullanışlıdır. Bu makalede, bir betiği başlangıçta çalıştırmak için farklı yöntemleri inceleyeceğiz.

1. Basit Bir Betik Oluşturma

Öncelikle, başlangıçta çalıştırılacak basit bir betik oluşturalım:

#!/bin/sh
echo "Son yeniden başlatma zamanı: $(date)" > /etc/motd

Bu betik, günlük mesajını (Message of the Day) sistemin son yeniden başlatma zamanıyla günceller. Kullanıcılar ilk oturum açtıklarında bu mesajı göreceklerdir.

Betik dosyasını kaydettikten sonra, çalıştırılabilir hale getirelim:

$ chmod +x reboot_message.sh

2. Betiğin Başlangıçta Çalıştırılması

2.1. cron Kullanımı

En kolay yöntemlerden biri cron kullanmaktır. Bunun için crontab dosyasını düzenlememiz gerekecek:

$ crontab -e

@reboot ifadesi kullanılarak betiği başlangıçta çalıştıracak bir satır ekleyelim:

@reboot sh /home/ec2-user/reboot_message.sh

Bu yöntem hızlı ve basit olsa da, her cron sürümü @reboot ifadesini desteklemez.

2.2. rc.local Kullanımı

Bir diğer yöntem ise /etc/rc.d/rc.local dosyasını kullanmaktır. Bu dosya zaten başlangıçta çalıştığı için, betiğimizi çağıran bir satır ekleyebiliriz:

sh /home/ec2-user/reboot_message.sh

Bu yöntemin çalışması için rc.local dosyasının çalıştırılabilir olduğundan emin olmalıyız:

$ chmod +x /etc/rc.d/rc.local

2.3. init.d Kullanımı

/etc/init.d klasöründe, sistemin yönettiği servislerin yaşam döngüsü betikleri bulunur. Burada, betiğimizi başlatacak bir LSB uyumlu betik oluşturabiliriz:

#! /bin/sh
# chkconfig: 345 99 10
case "$1" in
  start)
    # Betiğimizi çalıştırır
    sudo sh /home/ec2-user/reboot_message.sh
    ;;
  *)
    ;;
esac
exit 0

Bu betik start argümanıyla çağrıldığında betiği çalıştıracaktır. chkconfig satırı, betiğin çalıştırılma seviyesini ve önceliğini belirler.

Betiği init.d klasörüne yerleştirdikten sonra başlangıçta çalıştırılması için kaydetmemiz gerekir:

$ chkconfig --add service_wrapper.sh

Debian tabanlı sistemlerde chkconfig mevcut olmadığından, update-rc.d komutu kullanılabilir:

$ update-rc.d service_wrapper.sh defaults

2.4. systemd Kullanımı

Son olarak, systemd ile betik çalıştırma yöntemini inceleyelim. Bunun için /etc/systemd/system altında bir birim dosyası oluşturmalıyız:

[Unit]
Description=Reboot message systemd servisi.

[Service]
Type=simple
ExecStart=/bin/bash /home/ec2-user/reboot_message.sh

[Install]
WantedBy=multi-user.target

Bu dosya farklı bölümlerden oluşur:

  • Unit – Genel meta verileri içerir.
  • Service – Servisin davranışını ve başlatma komutunu açıklar.
  • Install – Servisin başlatmada çalışmasını sağlar ve bağımlılıkları yönetir.

Dosya izinlerini 644 olarak ayarladıktan sonra servisi etkinleştirelim:

$ chmod 644 /etc/systemd/system/reboot_message.service 
$ systemctl enable reboot_message.service

Birçok dağıtım systemd’yi desteklese de, her zaman mevcut olmayabilir.

3. Sonuç

Bu makalede, Linux’ta bir betiği başlangıçta çalıştırmak için farklı yöntemleri inceledik. Mevcut olduğunda genellikle systemd ve cron tercih edilirken, rc.local ve init.d yedek seçenekler olarak kullanılabilir.

Önceki Konu

Windows Recall’ı Devre Dışı Bırakma ve Kaldırma Yöntemleri

Sonraki Konu

Docker Container'dan Host Uygulamalarına Erişim

Bültenimize Abone Olun 📬

En son gönderilerimizin doğrudan e-posta kutunuza gelmesi için e-posta bültenimize abone olun.
Düşüncelerinizi özgür bırakın ✨