দেবিয়ান সিস্টেমড নেটওয়ার্ক- অনলাইন অনলাইন.তারেট কাজ করছে না?


24

আমি ডেবিয়ান জেসিতে একটি সিস্টেমড সার্ভিস তৈরি করার চেষ্টা করছি। আমার এটি শেষ হওয়ার পরে শুরু করা দরকার network-online.target

সমস্যাটি network-online.targetএকই সাথে অগ্নিদগ্ধ network.targetএবং সেই সময়ে আমার ইন্টারফেসগুলি এখনও কনফিগার করা হয়নি, সবে শুরু DHCP কোয়েরি।

দেখে মনে হচ্ছে এই সমস্যাটি ডেবিয়ানের জন্য নির্দিষ্ট কারণ এটি উত্তরাধিকারী নেটওয়ার্ক কনফিগারেশন ব্যবহার করে।

কীভাবে এই সমস্যাটিকে বাইপাস করবেন বা কীভাবে network-online.targetকাজ করবেন?


এর আউটপুট কি systemctl list-dependencies network-online.target? এছাড়াও, নোট করুন যে network-online.targetপ্রয়োজনের অর্থ এই নয় যে ইন্টারনেট অ্যাক্সেস রয়েছে। আরও তথ্যের জন্য এই পৃষ্ঠাটি দেখুন ।
saiarcot895

কমান্ডের আউটপুটটি হ'ল: network-online.target ● └─systemd-networkd-wait-online.service আমি সেই পৃষ্ঠাটি ইতিমধ্যে পড়েছি, আমি সেখানে প্রাথমিক ধারণাটি বুঝতে পারি, তবে এখনও নেটওয়ার্ক সমালোচনামূলক পরিষেবাগুলি শুরু করতে পারে এমন কোনও সংজ্ঞায়িত বিন্দু না পাওয়া খুব আশ্চর্যের বিষয় is কমপক্ষে এটি সঠিক ডিএইচসিপি কার্যভারের জন্য অপেক্ষা করতে পারে।
10robinho

এর অর্থ হ'ল network-online.targetনির্ভর করে systemd-networkd-wait-online.serviceযে কেবল এটি প্রস্তুত আছে saying এটি প্রস্তুত প্রস্তুত করে নেটওয়ার্কম্যানেজারের উপর নির্ভর করে না, বা ifupসমস্ত লিঙ্কগুলি সফলভাবে সামনে এনেছে কিনা তা পরীক্ষা করে (যদি আপনি নিজের নেটওয়ার্কটি কনফিগার করার জন্য এই পদ্ধতিটি ব্যবহার করেন)। উবুন্টু, অপরপক্ষে, নির্ভর করে উপর ifupএবং NetworkManager দ্বারা, কিন্তু না জন্য systemd-networkd-wait-online.
saiarcot895

আপনি কীভাবে আপনার নেটওয়ার্কটি কনফিগার করছেন /etc/network/interfaces:, সিস্টেমড .networkফাইল বা নেটওয়ার্ক ম্যানেজার?
saiarcot895

আপনার ঠিক আছে, network-online.targetএবং network.targetঠিক পরে ট্রিগার করা হয় ifup। আমি ডিবিয়ান ডিফল্ট ব্যবহার করি, তাই /etc/network/interfacesdhcp ঠিকানার সাথে। দেখে মনে হচ্ছে নেটওয়ার্কযুক্ত আরও ভাল সমাধান হতে পারে তবে এটি বাস্তবায়ন সোজা নয়।
10robinho

উত্তর:


18

যেহেতু আপনি ব্যবহার করছেন /etc/network/interfaces, আপনার প্রতিটি ইন্টারফেসের অবস্থান নিরীক্ষণের জন্য একটি সিস্টেমড পরিষেবা প্রয়োজন। আপনি /lib/systemd/system/ifup-wait-all-auto.service( ifupdownউবুন্টু 15.04- এ প্যাকেজটি ইনস্টল করেছেন ) তা পরীক্ষা করে দেখুন। যদি তা না /etc/systemd/system/ifup-wait-all-auto.serviceহয় তবে নিম্নলিখিতটি তৈরি করুন এবং পেস্ট করুন:

[Unit]
Description=Wait for all "auto" /etc/network/interfaces to be up for network-online.target
Documentation=man:interfaces(5) man:ifup(8)
DefaultDependencies=no
After=local-fs.target
Before=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutStartSec=2min
ExecStart=/bin/sh -ec '\
  for i in $(ifquery --list --exclude lo --allow auto); do INTERFACES="$INTERFACES$i "; done; \
  [ -n "$INTERFACES" ] || exit 0; \
  while ! ifquery --state $INTERFACES >/dev/null; do sleep 1; done; \
  for i in $INTERFACES; do while [ -e /run/network/ifup-$i.pid ]; do sleep 0.2; done; done'

[Install]
WantedBy=network-online.target

এটি উবুন্টু 15.04 সিস্টেমে উপস্থিত পরিষেবা ফাইল, তবে [Install]কিছুটা সহজ করার জন্য বিভাগটি যুক্ত করা হয়েছে। আমি আশা করছি যে ifupউবুন্টু 15.04 এর আচরণটি ifupদেবিয়ান জেসির আচরণের মতো । যদি তা না হয় তবে কিছু পরিবর্তন প্রয়োজন হবে (বিশেষত শেষ লাইনের সাথে)।

তারপর, চালান sudo systemctl enable ifup-wait-all-auto.service। আপনার কম্পিউটারটি রিবুট করার পরে, আপনার অবশ্যই দেখা উচিত যে network-online.targetইন্টারফেসগুলি আনার পরে (কমপক্ষে) পৌঁছে যায়।


প্রচেষ্টার জন্য ধন্যবাদ, আমাকে এখনই এটি চেষ্টা করতে দিন এবং আমি আপনাকে প্রতিক্রিয়া
জানাব

আমি সামান্য পরিবর্তিত সংস্করণ চলমান শেষ করেছি ExecStart = /bin/bash -c 'while [ -z "$(hostname -I)" ]; do sleep 1; done;'hostnameআইপি ঠিকানা বরাদ্দ করা হয়েছে কিনা তা যাচাই করার উপর নির্ভর করে ।
luka5z

এটি স্পিন ডাক্তার চেষ্টা করবেন না। এটি সে কারণে নয় যে সে / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস ব্যবহার করছে। এটি কারণ সিস্টেমেড এতটাই নিচু এবং কাজটি যেখানে তৈরি হয়েছিল সেখানে সমস্যার সমাধান না করে প্রতিটি ব্যবহারকারীর কাছে অফলোড হয়ে যায়।
ফ্লোরিয়ান হিগল

1
fww, the version এ ifup-wait-all-auto.serviceফেলে দেওয়া হয়েছে : ”ifup-प्रतीक्षा-সমস্ত-অটো.সার্ভিস ড্রপ করুন। এটিকে আরওifupdown0.8.5ubuntu1
কার্যকরভাবে কার্যকর করা হয়েছে নেটওয়র্ক.অনলাইন.টরেট

0

মনোযোগ! এটি কেবল একটি রাস্পবিয়ান জেসিতেই বের করা হয়েছে: / ইত্যাদি / নেটওয়ার্ক ইন্টারফেসে সমস্ত মন্তব্য করা লাইনগুলি সরিয়ে ফেলুন এবং এটি কার্যকর হবে! এটি একটি পার্সিং বাগ বলে মনে হচ্ছে =) আমার নির্দিষ্ট ক্ষেত্রে আমি iface eth0 inet dhcpমন্তব্যগুলি পড়ে গিয়েছিলাম এবং এটি ভুলে গিয়েছিলাম আগেই, তবে রাস্পবিয়ান জেসিতে উন্নীত হওয়ার পরে এবং একটি কার্নেল পুনর্নির্মাণের পরে আমার অত্যন্ত বেআইনী আচরণ হয়েছে: এটি ডিএইচসিপি ব্যবহার করেছিল এবং অস্বীকার করেছিল / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস থেকে একটি টিউনিং করুন। সুতরাং আমি এটিকে কোনও মন্তব্য থেকে সরিয়ে দিয়েছি - কেবলমাত্র কাজ করার লাইন, রিবুট - এবং এটি কার্যকর! কোনও স্ক্রিপ্ট প্যাচিং / সম্পাদনা প্রয়োজন নেই!


ইন্টারেস্টিন, আমার এটি চেষ্টা করা দরকার। যদিও এটি খুব বেশি অর্থবহ নয় :)
10robinho

2
এই সম্পর্কে আপনার কোন রেফারেন্স আছে? আমি বাগ রিপোর্ট (গুলি) পড়তে এবং বগি কোডটি দেখতে চাই।
әɹsәɹoɈ

না, আমি কোনও বাগের টিকিট খুলিনি। এটি পুনরুত্পাদন করার জন্য আপনার /etc/network/interfacesফাইলে কিছু মন্তব্য যুক্ত করুন - এটি এখনও থাকলে এটি জ্বলবে।
অ্যালেক্সি ভেসিনিন

0

প্রতি https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ একটি সার্ভিস শুরু করার প্রস্তাবিত উপায় হল নেটওয়ার্কিংয়ের পরে স্তর হল । সার্ভিস ফাইলটিতে " নেটওয়ার্ক - অনলাইন.আরজেট " ব্যবহার করা :

 "After=network-online.target"
 "Wants=network-online.target"

তবে " নেটওয়ার্ক -অনলাইন। স্টেট " ব্যবহার করার পরে এবং আমার পরিষেবা ব্যর্থ হয়েছে কারণ নেটওয়ার্কিং সম্পূর্ণ স্তরের নয়, আমি আবিষ্কার করেছি যে এটিতে একটি বাগ ( https://github.com/coreos/bugs/issues/1966 ) রয়েছে: এর নিশ্চয়তা নেই 100% অপূর্ণযোগ্য হতে হবে।

প্রকৃতপক্ষে, যেখানে " নেটওয়ার্কম্যানেজার " এর মতো গতিশীল নেটওয়ার্কিং কনফিগারেশন সরঞ্জামগুলি ব্যবহার করা হয়, সেখানে নেটওয়ার্কিংয়ের অবস্থা কখনই 100% নির্ভুল বা অনুমানযোগ্য হতে পারে না। দৃশ্যত ত্রুটিটি বর্ণনা করার লিঙ্ক থেকে, " নেটওয়ার্ক -অনলাইন। স্টার্ট " এটি ব্যবহার করা বিভিন্ন অ্যাপ্লিকেশনগুলির উপর নির্ভর করে অসামঞ্জস্য আচরণ করতে পারে।

কার্যকারণ :
আপনাকে পরিষেবার শুরু করার ক্রমটি বিশ্লেষণ করতে হবে এবং " নেটওয়ার্ক -অনলাইন। স্টেট " এর চেয়ে পরে শুরু হওয়া একটি ব্যবহার করতে হবে :

 systemd-analyze plot > /home/pi/graph.svg

এটি একটি পুনরাবৃত্তি প্রক্রিয়া যা পরে এবং পরবর্তী পরিষেবাগুলিতে লক্ষ্যবস্তুগুলি ক্রমবর্ধমানভাবে পরিবর্তন করা হয় যতক্ষণ না আপনি নিশ্চিত করে থাকেন যে কোনওটি নেটওয়ার্কিং স্তরীয় নয় এবং আপনার পরিষেবাটি ত্রুটি ছাড়াই শুরু হয়। আমার নিজের ক্ষেত্রে এমনকি sleep 10আমাকে আমার স্ক্রিপ্টে একটি সিস্টেমডি পরিষেবা কল করতে হয়েছিল।


0

আমি একবার গীথুবকে এমন একটি উত্তর পেয়েছি যা এটির সমাধান করে একটি সার্ভারকে অবিরাম চেষ্টা করার চেষ্টা করে। যখন পিংটি আসে তখনই পরিষেবাটি চালিয়ে যায়:

[Service]
ExecStartPre=/bin/sh -c 'until ping -c1 google.com; do sleep 1; done;'
ExecStart=<your command>

আমি google.comআমার নিজের সার্ভারের সাথে প্রতিস্থাপন করেছি কারণ আমার মূল স্ক্রিপ্টটি আমার সার্ভারের সাথে সংযোগ স্থাপনের প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.