CentOS 6.5'ten 7.0'a yükselttim ve yeni systemd
muhtemelen bana problemler verdiği için çok mutlu değilim . Sadece çok hızlı bir şekilde önyükleme, süreçleri eşzamansız olarak başlatma ve hizmet bağımlılıklarını azaltma gibi görünüyor.
Örneğin crond
, bir yeniden başlatmadan sonra tetiklenen birkaç komut dosyası kurulum var :
@reboot /root/scripts/check_gmail.sh
@reboot /root/scripts/start_gps_listener.sh
Bu, her türlü garip hataya neden olur (sadece birini gösterir):
Warning: stream_socket_client(): unable to connect to tcp://192.168.20.4:4001
(Network is unreachable) in /root/scripts/check_gmail.php on line 137
ERROR: Network is unreachable (101)
Yukarıda bir TCP soketine yazıyorum. crond
Ağın doğru şekilde başlatılmasından önce başlatılan benim için oldukça açık network is unreachable
.
Aynı şey Apache ve MySQL (MariaDB) için de geçerli. MySQL'in başlatılması oldukça yavaştır (çok fazla veri), yani crond
komut dosyaları çağrıldığında MySQL veritabanı çalışmadığından hem Apache'nin hem de başlangıç komut dosyalarının çoğunun başarısız olduğu anlamına gelir .
Bağımlılık kurmaya çalıştım ama hiç şansım yoktu; Ben ekledim network
ve mysql
hizmetleri [Unit]
(ile görüldüğü gibi systemctl list-dependencies
). İdeal olarak tüm hizmetler MySQL çalışana kadar bekler:
vi /lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target network.service mysql.service
vi /lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=syslog.target auditd.service systemd-user-sessions.service time-sync.target network.service mysql.service
Yukarıdaki ile önyükleme yaparken aynı hataları alıyorum. Ayrıca e-postaları alıyorummailq
cron komut dosyalarını işlerken ağ / DNS hazır olmadığından . Başlangıçtan birkaç dakika sonra doğru şekilde gönderilirler.
Hizmetlerin doğru sırayla işlenmesini sağlayarak kimse bu hakkın elde edilmesine yardımcı olabilir mi?Bu çok hızlı bir şekilde önyükleme yapmak gibi görünüyor ve ideal olarak iyi eski bir yol yaptı, "bir serice başlatmak ... bekle ... yeni bir hizmet başlatmak ... bekle ... böyle).
Bunun systemd
benim sorunum olduğundan emin olmadığımı unutmayın - sadece internetten ne okuyabileceğim konusunda benim teorim.
/etc/default/rc*
Requires=network.target
Yukarıdaki birimlere eklemeyi deneyin .
Requires=network.target
için/lib/systemd/system/crond.service
grep -i concurrency /etc/default/rcS
? Başlangıç sistemlerimi karıştırıyor olabilirim ama süreçlerin birbirinin bitmesini bekleyip beklemediğini kontrol ettiğini hatırlıyorum.