আমি মাত্র CentOS 6.5 থেকে 7.0 থেকে আপগ্রেড করেছি এবং নতুন systemd
খুব সম্ভবত আমাকে সমস্যা দিচ্ছে বলে আমি খুব বেশি খুশি নই । মনে হচ্ছে এটি কেবলমাত্র খুব দ্রুত বুট হচ্ছে, অবিচ্ছিন্নভাবে প্রক্রিয়া শুরু করা এবং পরিষেবা নির্ভরতা স্ক্রু করা।
উদাহরণস্বরূপ আমার কয়েকটি স্ক্রিপ্ট সেটআপ রয়েছে crond
যাতে একটি রিবুটের পরে ট্রিগার করা হয়:
@reboot /root/scripts/check_gmail.sh
@reboot /root/scripts/start_gps_listener.sh
এর ফলে সমস্ত ধরণের অদ্ভুত ত্রুটি হয় (কেবল তাদের মধ্যে একটি দেখায়):
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)
উপরের দিকে আমি একটি টিসিপি সকেটে লিখছি। crond
নেটওয়ার্কটি যথাযথভাবে আরম্ভের আগে নেটওয়ার্কটি শুরু হওয়ার আগে এটি আমার পক্ষে বেশ স্পষ্ট network is unreachable
।
একই জিনিস অ্যাপাচি এবং মাইএসকিউএল (মারিয়াডিবি) নিয়ে যায়। মাইএসকিউএল স্টার্টআপের জন্য বেশ ধীর (অনেক বেশি ডেটা) অর্থ crond
হ'ল স্ক্রিপ্টগুলি যখন বলা হচ্ছে তখন মাইএসকিউএল ডাটাবেস চালু না হওয়ায় অ্যাপাচি এবং আমার প্রচুর স্টার্টআপ স্ক্রিপ্ট উভয়ই ব্যর্থ হচ্ছে।
আমি নির্ভরতা সেটআপ করার চেষ্টা করেছি কিন্তু কোনও ভাগ্য ছাড়াই; আমার সাথে সংযুক্ত network
এবং mysql
পরিষেবা রয়েছে [Unit]
(যেমন দেখা যায় systemctl list-dependencies
)। মাইএসকিউএল চালু না হওয়া পর্যন্ত আদর্শভাবে সমস্ত পরিষেবা অপেক্ষায় থাকে:
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
উপরের সাথে বুট করার সময় আমি একই ত্রুটিগুলি পাই। mailq
ক্রোন স্ক্রিপ্টগুলি প্রক্রিয়া করার সময় নেটওয়ার্ক / ডিএনএস প্রস্তুত না হওয়ায় আমি ইমেলগুলি এনেছি । শুরু হওয়ার কয়েক মিনিট পরে সেগুলি সঠিকভাবে প্রেরণ করা হয়।
পরিষেবাগুলি সঠিক ক্রমে চালিত হয়েছে তা নিশ্চিত করে কেউ এই অধিকার পেতে সহায়তা করতে পারে? এটি খুব ভুল বলে মনে হচ্ছে যে এটি এত দ্রুত বুট করা এবং আদর্শভাবে এটি এটি ভাল পুরানো উপায়ে করেছে, "একটি সিরিজ চালু হচ্ছে ... অপেক্ষা করুন ... একটি নতুন পরিষেবা চালু হচ্ছে ... অপেক্ষা করুন ... ইত্যাদি)।
মনে রাখবেন যে আমি নিশ্চিত নই systemd
যে এটি আমার সমস্যা - এটি নেট থেকে আমি কী পড়তে পারি তা কেবল আমার তত্ত্ব।
/etc/default/rc*
Requires=network.target
উপরের ইউনিটগুলিতে যুক্ত করার চেষ্টা করুন ।
Requires=network.target
করার জন্য/lib/systemd/system/crond.service
grep -i concurrency /etc/default/rcS
? আমি আমার ডিআইডি সিস্টেমগুলি মিশ্রিত করতে পারি তবে আমি মনে করি যে প্রক্রিয়াগুলি একে অপরের সমাপ্তির জন্য অপেক্ষা করে কিনা তা নিয়ন্ত্রণ করে।