হোস্টনামেক্টল কমান্ডের বিন্দুটি কী?


17

সম্পাদনা / ইত্যাদি / হোস্টনামের বিরোধিতা হিসাবে বা যেখানে প্রাসঙ্গিক?

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


2
আপনি সম্ভবত একা নন --- সিস্টেমড অনেকগুলি নতুন ইন্টারফেস প্রবর্তন করেছে এবং এর কারণে এটি "এমন পুরানো উপায় যেখানে সমস্ত কিছু একটি পাঠ্য ফাইল ছিল" পছন্দ করে তাদের কাছ থেকে অনেক ঝাঁকুনি পেয়েছিল।
ফেডেরিকো পোলোনি

1
@ ফেডেরিকো পোলোনি বা যেখানে সমস্ত কিছুই কোনও পাঠ্য ফাইল ছিল না, যেমন ডিএনএস কোয়েরিগুলি বিনা কারণে এক্সএমএলে রূপান্তরিত করা হয়েছিল।
ক্রাইলিস

ডিএনএস-> এক্সএমএল। দুঃখিত, আপনি একটি উদাহরণ নিয়ে আসতে হবে দয়া করে। আইএমও এক্সএমএল হল শয়তান, বিটিডাব্লু এর আবিষ্কার।
গ্রাহাম নিকোলস

উত্তর:


22

পটভূমি

hostnamectl সিস্টেমডের অংশ, এবং একটি মানক উপায়ে সার্ভারের হোস্টনাম সেট করার জন্য ডিল করার জন্য একটি উপযুক্ত এপিআই সরবরাহ করে।

$ rpm -qf $(type -P hostnamectl)
systemd-219-57.el7.x86_64

পূর্বে প্রতিটি ডিস্ট্রো যা সিস্টেমেড ব্যবহার করে না, তাদের এটির জন্য নিজস্ব পদ্ধতি ছিল যা প্রচুর অপ্রয়োজনীয় জটিলতার জন্য তৈরি করে।

DESCRIPTION
  hostnamectl may be used to query and change the system hostname and
  related settings.

  This tool distinguishes three different hostnames: the high-level 
  "pretty" hostname which might include all kinds of special characters 
  (e.g. "Lennart's Laptop"), the static hostname which is used to
  initialize the kernel hostname at boot (e.g. "lennarts-laptop"), and the 
  transient hostname which is a default received from network 
  configuration. If a static hostname is set, and is valid (something
   other than localhost), then the transient hostname is not used.

   Note that the pretty hostname has little restrictions on the characters 
   used, while the static and transient hostnames are limited to the 
   usually accepted characters of Internet domain names.

   The static hostname is stored in /etc/hostname, see hostname(5) for 
   more information. The pretty hostname, chassis type, and icon name are 
   stored in /etc/machine-info, see machine-info(5).

   Use systemd-firstboot(1) to initialize the system host name for mounted 
   (but not booted) system images.

hostnamectl বুট করার জন্য একক লোকেশনে প্রচুর স্বতন্ত্র ডেটা একসাথে টানতে:

$ hostnamectl
   Static hostname: centos7
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 1ec1e304541e429e8876ba9b8942a14a
           Boot ID: 37c39a452464482da8d261f0ee46dfa5
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.21.1.el7.x86_64
      Architecture: x86-64

তথ্য এখানে থেকে আসছে /etc/*release, uname -aসার্ভারের হোস্টনেম সহ, ইত্যাদি।

ফাইল গুলো কি?

ঘটনাচক্রে, সবকিছু এখনও ফাইলে রয়েছে, hostnamectlকেবল আমাদের কীভাবে এই ফাইলগুলির সাথে ইন্টারেক্ট করতে হবে বা তাদের প্রতিটি অবস্থান জানতে হবে তা সরল করে দিচ্ছে।

এর প্রমাণ হিসাবে আপনি এটি ব্যবহার করতে পারেন strace -s 2000 hostnamectlএবং এটি থেকে কোন ফাইলটি টানছে তা দেখতে পারেন :

$ strace -s 2000 hostnamectl |& grep ^open | tail -5
open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/self/stat", O_RDONLY|O_CLOEXEC) = 3
open("/etc/machine-id", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 4
open("/proc/sys/kernel/random/boot_id", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 4

systemd হল-hostname.service?

চমকপ্রদ পর্যবেক্ষকের জন্য, আপনার উপরের দিকে লক্ষ্য করা উচিত straceযে সমস্ত ফাইল উপস্থিত নেই। hostnamectlআসলে এমন একটি পরিষেবাদির সাথে ইন্টারঅ্যাক্ট করা systemd-hostnamectl.serviceযা প্রকৃতপক্ষে বেশিরভাগ অ্যাডমিনদের সাথে পরিচিত এমন বেশিরভাগ ফাইলের সাথে "ইন্টারেক্টিভ" করে /etc/hostname

অতএব আপনি চালানোর সময় আপনি hostnamectlপরিষেবাটি থেকে বিশদটি পান। এটি একটি অনডম্যান্ড সার্ভিস, তাই আপনি সারাক্ষণ চলমান দেখবেন না। শুধুমাত্র যখন hostnamectlরান। আপনি যদি watchকমান্ড চালনা করেন তবে এটি দেখতে পাবেন এবং তারপরে hostnamectlএকাধিকবার চালানো শুরু করুন :

$ watch "ps -eaf|grep [h]ostname"
root      3162     1  0 10:35 ?        00:00:00 /usr/lib/systemd/systemd-hostnamed

এর উত্সটি এখানে রয়েছে: https://github.com/systemd/systemd/blob/master/src/hostname/hostname.c এবং যদি আপনি এটি দেখে থাকেন তবে আপনি এর উল্লেখগুলি দেখতে পাবেন /etc/hostnameetc.

তথ্যসূত্র


সরাসরি ফাইল (গুলি) পড়ার একটি উদাহরণের জন্য unix.stackexchange.com/a/454785/5132 দেখুন ।
জেডিবিপি

ব্যবহারের পরিবর্তে আউটপুট গ্রেপ করার কোনও কারণ আছে -e open,openat?
ydaetskcoR

@ ydaetskcoR - কোনও প্রযুক্তিগত কারণ নেই, অলস ছিল এবং strace8- তে স্যুইচগুলি সন্ধান করে না )। যদিও সত্য বলতে সত্যই আমার এখনও grepআউটপুটটি যেভাবে দেখাতে চেয়েছিল তা পাওয়ার দরকার ছিল, খ / সি সি straceএখনও hostnamectlসেন্টিমিডির আউটপুট দেখিয়ে দিত, তাই আমার পথটি আরও ছোট ছিল।
slm

"... একটি মানক উপায়ে কোনও সার্ভারের হোস্টনাম সেট করার জন্য ডিল করার জন্য একটি উপযুক্ত API সরবরাহ করে।" অন্য কথায়, তারা আরও একটি স্ট্যান্ডার্ড যুক্ত করেছে। :-) একটিও লক্ষ্য করতে পারে যে এটির প্রতিষ্ঠার পর থেকে প্রকল্পটি থেকে কমপক্ষে অর্ধ ডজন কাঁটাচামচ রয়েছে যার অর্থ সম্ভবত অর্ধ ডজন আরও অতিরিক্ত "মান" means
আনকাএলবি

আমি আপনাকে সেই +1 rpm -qf $(type -P hostnamectl)স্মরণীয় প্রতিরূপের জন্য একটি +1 দিচ্ছি!
মার্ক বর্গারডিং

1

এটি এখনও একটি পাঠ্য ফাইল, আপনি এখনও এটি সম্পাদনা করতে পারেন, এবং কোনও সমস্যা হবে না।

পাঠ্য ফাইলটি মানক করা হয়েছে /etc/hostname


রক্ষণাবেক্ষণকারীদের মতে, সার্ভিসগুলি সিস্টেমড-হোস্টনাম, সিস্টেম-টাইমডেটেড ইত্যাদি অনেকগুলি জিএনআইএম এর মতো বিদ্যমান জিইউআই (গুলি) জন্য নির্মিত হয়েছিল। systemd- হোস্টনাম একটি GUI অনুরোধ হোস্টনামের পরিবর্তে রুট হিসাবে চালানো (পোলকিট নীতির উপর নির্ভর করে) পরিবর্তন করতে দেয়। Dbus পরিবর্তনগুলি সাবস্ক্রাইব করার জন্য একটি পদ্ধতিও সরবরাহ করে যা জিইউআই প্রয়োজনীয়তার সাথে উপযুক্ত। এই ক্ষেত্রে মোট এক অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হতে পারে :)। আমি জানি না, টাইমজোন পুনর্গঠন শোনার জন্য ঘড়িগুলি সিস্টেমড-সময়সীমার ব্যবহার করে?

জিইউআই ব্যাকএন্ড অনুশীলন করতে হোস্টনামেক্টলকে স্টাব হিসাবে ভাবেন, যা দরকারী সি এল এল ইউটিলিটি হতে পারে বা নাও পারে। systemd- হোস্টনাম বিশেষভাবে পুরো বৈশিষ্ট্যগুলি যুক্ত করার উদ্দেশ্যে নয় যা জিইউআই কোড ব্যবহার করে না।


Systemd- হোস্টনাম পরিষেবা বিতরণের মধ্যে পার্থক্য নিয়ে বিমূর্ত করার উদ্দেশ্যে নয় । আপস্ট্রিম সিস্টেমটি একটি একক কনফিগারেশন ফাইলে স্ট্যান্ডার্ড করা হয়েছে /etc/hostname, যেখানে আগে যেমন ডিবিয়ান বনাম রেডহাট ভিত্তিক বিতরণগুলিতে বিভিন্ন কনফিগারেশন ফাইল ছিল।

এটি ধরে নেয় যে হোস্টনামেক্টল সিস্টেমড-হোস্টনামের মানক প্রয়োগের সাথে কথা বলছে। তবে এএফআইএকে নেই এমন কোনও বর্তমান বিতরণ যা ফাইলের নাম ব্যবহার করে তা প্যাচ করে।

আমি উল্লেখ করতে চাই যে /etc/hostnameবুট সময়ে লোডিং সিস্টেমড পিআইডি 1 এর প্রথম দিকে সঞ্চালিত হয় এটি সিস্টেমড-হোস্টনাম চালানোর উপর নির্ভর করে না।


আমি আপনি কল্পনা পারে এক নিরীহ পার্থক্য লক্ষ্য, যদি আপনি একটি সিস্টেম সেটিংস গুই খোলা এবং একই সময়ে হোস্টনাম দেখাচ্ছে আছে। আপনি যদি সম্পাদনা করেন /etc/hostnameএবং তারপরে hostname --file /etc/hostnameচলমান সিস্টেমে পরিবর্তনটি প্রয়োগ করতে ব্যবহার করেন তবে জিইউআই প্রদর্শনটি তাত্ক্ষণিকভাবে আপডেট হবে না। systemd- হোস্টনেম এটি রক্ষণাবেক্ষণ করা হোস্টনামের সমস্ত সংস্করণে পরিবর্তনের জন্য dbus বিজ্ঞপ্তি সরবরাহ করে, সুতরাং GUI আধুনিক লিনাক্স কার্নেলগুলিতে প্রদত্ত সিস্টেম হোস্টনামের বিজ্ঞপ্তিগুলি শুনতে শুনতে বিরক্ত করবে না।

(গতানুগতিকভাবে রানটাইম জিনিসটিতে হোস্টের নাম পরিবর্তন করা খারাপ ধারণা। এটি এক্স এর মতো সফ্টওয়্যার নিয়ে সমস্যা সৃষ্টি করতে পারে I'm আমি বিশ্বাস করি এই সমস্যাটি সিস্টেমড দ্বারা সমাধান করা হয়নি Perhaps সম্ভবত এটি সিস্টেমড ব্যবহার করে এমন বিতরণগুলির দ্বারা সমাধান করা হয়েছে) ।

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