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.