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.serviceBirç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.