Ubuntu, CentOS ve AlmaLinux'ta rc.local'ı nasıl etkinleştirip yeniden başlatmada çalıştırabilirsiniz?
Bu yazıda, Linux dağıtımlarında rc.local dosyasını etkinleştirmenin adım adım yöntemini inceleyeceğiz.

Ubuntu, CentOS ve AlmaLinux'ta rc.local'ı nasıl etkinleştirip yeniden başlatmada çalıştırabilirsiniz?

Bu makale, Ubuntu, CentOS ve AlmaLinux sistemlerinde rc.local'ı etkinleştirme konusunda adım adım bir kılavuzdur. Bu eğitim sayesinde sistem yöneticileri ve DevOps ekipleri, sistem açılışında komut dosyalarını kolayca çalıştırabilirler.
0 Hisse senetleri
0
0
0
0

 

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

  1. Dosya oluştur /etc/rc.local İstenilen shebang ve komutları ekleyin.
  2. Dosyaya çalıştırma izni veriliyor.
  3. Systemd'de rc.local birimini oluşturun veya etkinleştirin (eğer mevcut değilse).
  4. 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 0

Ardı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
EOF

Ve 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 0

Yöneticilik lisansı:

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

Birim 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
EOF

Ve 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 -b
sudo restorecon -v /etc/rc.d/rc.local
# or temporarily change context
sudo chcon -t bin_t /etc/rc.d/rc.local

Komut 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 0

Not: 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.target

Uzun 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
EOF
sudo 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 -b Gü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.

 

Sıkça Sorulan Sorular

Ayrıca Şunları da Beğenebilirsiniz