- rc.local'a hala ihtiyacınız var mı?
- Ubuntu'da (18.04, 20.04, 22.04 ve üzeri) rc.local'ı etkinleştirme
- CentOS 7/8 ve AlmaLinux 8/9'da rc.local'ı etkinleştirme
- Pratik örnekler ve pratik ipuçları
- Genel hata ayıklama
- Alternatifler ve en iyi uygulamalar
- Güvenlik ve operasyonel ipuçları
- Bu eğitimin şirketin hizmetleriyle ilişkisi
- Sonuç ve son öneriler
- Sıkça Sorulan Sorular
rc.local'a hala ihtiyacınız var mı?
Bu adım adım kılavuzda, geleneksel bir dosya oluşturmayı öğreneceğiz. rc.yerel Örneğin, yaygın Linux dağıtımlarında Ubuntu, CentOS Ve AlmaLinux Önyükleme sırasında gerekli komut dosyalarını veya komutları etkinleştirin ve çalıştırın.
Rağmen sistemd Varsayılan başlatma yöntemi olarak yaygınlaştı. rc.yerel Sistem açılışında kısa komut dosyalarını hızlı ve kolay bir şekilde çalıştırmak için hala kullanışlıdır. Aşağıda yöntemler, örnekler, güvenlik ipuçları ve modern alternatifler bulunmaktadır.
Ubuntu'da (18.04, 20.04, 22.04 ve üzeri) rc.local'ı etkinleştirme
Yeni Ubuntu sürümlerinde sistemd rc.local aşağıdaki şekilde etkinleştirilebilir. Genel adımlar arasında dosyanın oluşturulması, izinlerin ayarlanması ve systemd uyumluluğu için bir birimin oluşturulması/etkinleştirilmesi yer almaktadır.
Genel adımlar
- Dosya oluştur /etc/rc.local İstenilen shebang ve komutları ekleyin.
- Dosyaya çalıştırma izni veriliyor.
- Systemd'de rc.local birimini oluşturun veya etkinleştirin (eğer mevcut değilse).
- Hizmet yükleniyor, etkinleştiriliyor ve durumu kontrol ediliyor.
Örnek dosya örneği /etc/rc.local (Her zaman en sonda) çıkış 0 Yer):
#!/bin/bash
# Example: start Docker container named myapp
docker start myapp || docker run -d --name myapp myimage
# simple sysctl
/sbin/sysctl -w net.ipv4.ip_forward=1
exit 0Ardından izinleri ayarlayın:
sudo chmod +x /etc/rc.localİlgili birim mevcut değilse, oluşturun:
sudo tee /etc/systemd/system/rc-local.service > /dev/null <<'EOF'
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOFVe son olarak:
sudo systemctl daemon-reload
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
sudo journalctl -u rc-local.service -b
CentOS 7/8 ve AlmaLinux 8/9'da rc.local'ı etkinleştirme
RHEL tabanlı dağıtımların farklı yolları vardır; geleneksel yol genellikle şöyledir: /etc/rc.d/rc.local Genel adımlar Ubuntu'ya benzer, ancak SELinux yoluna ve notlara dikkat edin.
Ortak güzergahlar
- /etc/rc.d/rc.local Geleneksel yol RHEL/CentOS'tadır.
- Bazı sistemlerde bağlantı şu şekilde olabilir: /etc/rc.local Var olmak.
Etkinleştirme adımları (CentOS / AlmaLinux)
Dosya Oluştur/Düzenle:
sudo nano /etc/rc.d/rc.local
#!/bin/bash
# Example: mount NFS or start a container
mount -a
/usr/bin/my-startup-script.sh &
exit 0Yöneticilik lisansı:
sudo chmod +x /etc/rc.d/rc.localBirim mevcut değilse, oluşturun:
sudo tee /etc/systemd/system/rc-local.service > /dev/null <<'EOF'
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionPathExists=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOFVe daha sonra:
sudo systemctl daemon-reload
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
sudo journalctl -u rc-local.service -bsudo restorecon -v /etc/rc.d/rc.local
# or temporarily change context
sudo chcon -t bin_t /etc/rc.d/rc.localKomut dosyalarında mutlak yollar kullanmak da daha iyidir. /usr/bin/docker PATH'e olan bağımlılığı azaltmak için kullanılır.
Pratik örnekler ve pratik ipuçları
Örnek — Docker başlatma betiğini çalıştırma
#!/bin/bash
# start redis container at boot
/usr/bin/docker run -d --name redis-cache --restart unless-stopped redis:6
exit 0Not: Seçeneği kullanın --durdurulmadığı sürece yeniden başlat Docker'ın konteyner geri alma işlemini yönetmesini sağlar.
Örnek — Hizmeti çalıştırmadan önce ağa bağlantı kurma
Eğer betik NFS bağlantıları gerektiriyorsa, systemd birimini uygun bağımlılıklarla değiştirin:
[Unit]
After=network-online.target remote-fs.target
Wants=network-online.target remote-fs.targetUzun süren bir komut dosyasını veya sürekli bir hizmeti çalıştırmak — daha iyi bir yol
Uzun süreli veya hizmet odaklı görevler için, Yeniden Başlatma ve izleme gibi özelliklerden yararlanmak üzere özel bir systemd birimi oluşturmak daha iyidir:
sudo tee /etc/systemd/system/myjob.service > /dev/null <<'EOF'
[Unit]
Description=My Long Running Job
After=network-online.target
[Service]
Type=simple
User=myuser
ExecStart=/usr/local/bin/my-long-script.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOFsudo systemctl daemon-reload
sudo systemctl enable --now myjob.service
Genel hata ayıklama
- Hizmet başarısız durumda: İtibaren
sudo journalctl -u rc-local.service -bGünlük kaydını görüntülemek için kullanın. - İzinler: Dosyanın çalıştırılabilir olduğundan emin olun (
chmod +x) ve bu bütünlük en başta yer alıyor. - Göreceli yollar: İkili dosyalar için her zaman mutlak yollar kullanın.
- Çevresel değişkenler: rc.local'ın sınırlı bir ortamı vardır; PATH gibi değişkenleri açıkça tanımlayın veya tam yolu yazın.
- SELinux: AVC hatalarını kontrol edin ve bağlamı ayarlayın.
- Bağımlılıklar: Eğer komut dosyası ağa veya dosya sistemine bağımlıysa, birim şu şekilde olmalıdır: Sonra= Ve İstekler= Uygun olmalı.
Alternatifler ve en iyi uygulamalar
- Özel systemd birimi: Hizmetler açısından en iyi seçenektir.
- crontab @reboot: Basit kullanıcı görevleri için uygundur:
@reboot /usr/local/bin/myscript.sh - bulut başlatma: Bulut ortamlarında ilk yapılandırma için uygundur.
- Ansible gibi yapılandırma yönetim araçları: Tekrarlanabilir ve yönetilebilir değişiklikler yapmak için kullanılır.
Güvenlik ve operasyonel ipuçları
Hassas komutların yürütülmesinden rc.yerel Bundan kaçının. Komut dosyalarını belirli bir sahiplikle çalıştırmak veya şunu kullanmak daha iyidir. Kullanıcı= Systemd'de kullanılır.
Komut dosyası çıktısını her zaman kaydedin ve sınırlı izinler kullanın. Örnek:/usr/local/bin/myscript.sh >> /var/log/rc.local.log 2>&1
chmod 700 /usr/local/bin/myscript.shÜretim ortamları için, değişiklikleri kritik sunuculara uygulamadan önce bir test ortamında deneyin.
Bu eğitimin şirketin hizmetleriyle ilişkisi
Şirketimizin VPS, bulut sunucu, grafik sunucu (GPU), özel sunucu ve ağ çözümleri de dahil olmak üzere 85'ten fazla küresel lokasyonda sunduğu hizmetler size şunları sağlar:
- Alım satım veya oyun VPS'lerinde başlangıç komut dosyalarını hızlıca çalıştırın.
- GPU sunucularında, ağır hizmetleri başlatmak için systemd birimlerini kullanın, böylece yeniden başlatmanın ardından işlem düzgün bir şekilde başlar.
- Ağ ve DDoS saldırılarına karşı koruma sunucularında, ağ komut dosyalarını ve iptables'ı çalıştırmak için özel systemd birimleri oluşturun.
- Destek ekibi SELinux, mount yolları ve bağımlılıklar konusunda hizmet vermektedir.
Sonuç ve son öneriler
Systemd'ye rağmen, rc.yerel Bu, önyükleme sırasında özel komutlar çalıştırmanın hâlâ basit bir yoludur, ancak kararlılık ve izleme açısından systemd birimlerini kullanmak daha iyidir.
İzinlere, SELinux'a ve hizmet bağımlılıklarına her zaman dikkat edin ve hata ayıklama için günlükleri kullanın.
Belirli bir ihtiyacınız varsa (örneğin, otomatik işlem robotu yürütülmesi, GPU ortamı hazırlığı veya oyun sunucusu ağ yapılandırması), teknik ekibimiz çeşitli yerlerde size yardımcı olmaya hazırdır.









