আমি যে হোস্টনামটি সেট করেছি সেটি `হোস্টনেম` কোথায় সঞ্চয় করে?


15

এটি বেশ বিস্ময়কর। hostnameকমান্ডটি কোথা থেকে হোস্টনামটি সঞ্চয় এবং পাঠ করে তা কি কেউ জানেন ?

আমি ভেবেছিলাম এটি / ইত্যাদি / হোস্টনাম ছিল তবে এই লিনাক্স সিস্টেমে এমন কোনও ফাইল নেই যা আমি ব্যবহার করছি। আমি স্ট্রেসটি কোথায় ছিল তা সন্ধান করার চেষ্টা করে চেষ্টা করেছি তবে কোনও পাঠানো কলই এই তথ্যটি ফেরেনি:

$ strace hostname 2>&1 | grep read
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340^\0\0\0\0\0\0"..., 832) = 832
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\30\2\0\0\0\0\0"..., 832) = 832
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 248
read(3, "", 1024)                       = 0

তারপরে আমি লক্ষ্য করেছি যে এটি আনসাইম সিস্টেমে এই তথ্য ফিরিয়ে দিয়েছে:

uname({sys="Linux", node="server-name", ...}) = 0

/ ইত্যাদি / এ পুনরাবৃত্তিমূলক গ্রেপ কিছুই দেয় না:

grep "server-name" -r /etc 

কোথায় নাম রাখে এই তথ্য? শুধু স্মৃতিতে?


1
আপনি কোন লিনাক্স ডিস্ট্রো ব্যবহার করছেন?
amir jj

উত্তর:


9

এই সম্পর্কিত ইউএন্ডএল প্রশ্নোত্তর শিরোনামটি একবার দেখুন: নাম থেকে কোথা থেকে এর তথ্য পাওয়া যায়? । সিস্টেম চলমান অবস্থায় হোস্টনামের মতো তথ্য লিনাক্স কার্নেলের মধ্যে একটি ডেটা স্ট্রাকচারের মধ্যে থাকে। একটি সিস্টেম বুটের সময় এই তথ্যটি বিভিন্ন পদ্ধতির মাধ্যমে পুনরুদ্ধার করা যায় যা সাধারণত ডিস্ট্রো নির্দিষ্ট।

আপনি যদি man 2 unameম্যান পেজটি দেখেন তবে সেখানে উল্লিখিত একটি ডেটা কাঠামো রয়েছে:

           struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

এই কাঠামোর ২ য় উপাদান nodename[]হল লিনাক্স কার্নেলের মধ্যে হোস্টনাম সংরক্ষণ করা হয় এমন এক জায়গা।

জন্য / proc

আপনি যদি একবার /proc/sys/kernel/hostnameখেয়াল করেন তবে হোস্টের নামটিও এখানে প্রকাশিত হবে। এটি ভার্চুয়াল অবস্থান, /procতবে এটি আপনাকে হোস্টনামটি অ্যাক্সেস করার জন্য একটি বিকল্প পদ্ধতি দেয়। সিস্টেমের ডোমেন নামটিও এখানে রয়েছে /proc/sys/kernel/domainname

দ্রষ্টব্য: আগ্রহের বিষয়, এই মানগুলি ইউটিএস নেমস্পেস নির্দিষ্ট

উদাহরণ

$ sudo hostname
oldhost
$ sudo unshare --uts /bin/bash
$ sudo echo newhost > /proc/sys/kernel/hostname 
$ hostname
newhost
$ exit
$ hostname
oldhost

হোস্টের নাম ব্যবহার করে ip

সিস্টেমডের সাথে সিস্টেমে আপনি hostnamectlহোস্টনামটি পেতে / সেট করতে ক্লিপ সরঞ্জামটি ব্যবহার করতে পারেন । এটি এটি পুনরায় বুটের মধ্যে স্থায়ীভাবে পরিবর্তন করবে।

$ sudo hostnamectl set-hostname --static somehostname

এর মাধ্যমে আপনি এর মানটিও খুঁজে পেতে পারেন sysctl:

$ sudo sysctl -a | grep kernel.hostname
kernel.hostname = myhostname

ফেডোরার প্রকাশের জন্য, এই জিজ্ঞাসা.ফিডোরাপ্রজেক্ট.আরউ প্রশ্নোত্তর বিষয়টিকে বেশ পুঙ্খানুপুঙ্খভাবে কভার করে, শিরোনাম: সঠিকভাবে হোস্টনামটি নির্ধারণ করছে - ফেডোরা 20 অ্যামাজন ইসি 2 তে


1
সাধরণ। হোস্টনামেক্টল কেবল একটি সিস্টেম কল কল করে। সিস্টেমটি কীভাবে তথ্য সংরক্ষণ করে যাতে এটি পুনরায় বুট চালিয়ে যায়? এটি আমার প্রশ্ন, ওপিগুলিও না হলে।
ওথিউস

6

hostnameকমান্ডের নাম কোথাও কিন্তু কার্নেল মেমরি সংরক্ষণ করে না।

বুট সময়ে সিস্টেমটির নাম কী তা সিদ্ধান্ত নেয় কীভাবে সিস্টেমটি কনফিগার করা আছে তার উপর নির্ভর করে। বিকল্পগুলি কোনও ফাইল থেকে নাম পড়া থেকে শুরু করে উপযুক্ত নেটওয়ার্ক ইন্টারফেস আনার পরে নাম সেট করতে ডিএনএস বা / ইত্যাদি / হোস্ট ব্যবহার করে।


2
কখনই নয় /etc/hosts(যা ডিএনএস দেখার জন্য রয়েছে - যে সিস্টেমটি তার হোস্টের /etc/hostnameনামটি সেখান থেকে পড়ে তা ওহ এত ভুল) ... তবে সম্ভবত (পুরোপুরি যোগ্যতাসম্পন্ন নাম রয়েছে) বা খুব কমই /etc/sysconfig/network( HOSTNAME=...শেল কমান্ড থাকতে পারে )। একটি অ্যামাজন ইসি 2 উদাহরণে আপনাকে সংশোধনও করতে হতে পারে /etc/cloud/cloud.cfg...
ডেভিড টনহোফার

4

hostname(1)sethostname(3)সিস্টেম কলের কেবল সামনের এক প্রান্ত যা মূলত হোস্ট-নেমটি লিখেছে যেখানে কার্নেল এটি সঞ্চয় করার প্রত্যাশা করে।

আপনি যদি পরিবর্তনটি স্থায়ী হতে চান, সাধারণ ইউনিক্স দর্শনের অনুসারে আপনাকে এটি নিজেই সংরক্ষণ করতে হবে। সুনির্দিষ্ট অবস্থানটি আপনার init সিস্টেমে খুব বেশি নির্ভর করে। উদাহরণস্বরূপ, ওপেনবিএসডি'র সূচনাটি /etc/myname(সময়কাল netstart) থেকে হোস্টের নামটি পড়ে ।

এই সমস্ত আপনার সিস্টেমের ম্যানেজ বা সমর্থনকারী ডকুমেন্টেশনে বর্ণিত হওয়া উচিত।


2

দীর্ঘ সময় * নিক্স সিসাদমিন হিসাবে, আমি সরাসরি আরটিএফএম রেফারেন্স ছাড়াই সুস্পষ্টভাবে জানিয়ে দেব: :)

   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 fallback value 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).

এটি বেশিরভাগ "লিনাক্স" ডিস্ট্রোজের জন্য সত্য holds

--mem


1

রানটাইম এ এটি ইতিমধ্যে অন্যদের দ্বারা উত্তর হিসাবে মেমরিতে সঞ্চয় করা হয়।

একটি রিবুট বেঁচে থাকার জন্য এটি ফাইলটি কোথাও সংরক্ষণ করতে হবে যা লিনাক্স বিতরণ নির্দিষ্ট। আমার ফেডোরা ২০-তে এটি / ইত্যাদি / হোস্ট-নেম

এটি সম্ভবত / ইত্যাদিতে সঞ্চিত। প্রকৃত হোস্টনাম ইত্যাদি অনুসন্ধান করার চেষ্টা করুন

grep -r `hostname` /etc

এই ask.fedoraproject.org প্রশ্ন সব উপায়ে আপনি সেট / ব্যবহার F20 উপর হোস্টনাম পেতে পারে hostnamectlইত্যাদি .: ask.fedoraproject.org/en/question/37413/...
SLM
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.