রিবুট, শাটডাউন এবং পাওয়ারঅফ্ট সিমলিংকগুলি সিস্টেমেটকেলে কেন?


28

আর্চ লিনাক্স, যদি আমি কি ls -lমধ্যে /sbin, আমি দেখতে পারেন reboot, shutdownএবং poweroffসব symlinks হয় /usr/bin/systemctl। তবে জারি করা reboot, shutdownএবং systemctlআদেশগুলি স্পষ্টতই সবার একই রকম আচরণ করে না।

হয় ls -lআমাকে symlinks সংক্রান্ত পূর্ণ তথ্য দেখানো না? উদাহরণস্বরূপ, আমি কীভাবে জানতে পারি যে আসল সিমলিংকটি rebootকী?


1
এ সম্পর্কে আরও তথ্যের জন্য, unix.stackexchange.com/a/196014/5132 দেখুন
জেডিবিপি

উত্তর:


42

অনেকগুলি প্রোগ্রাম এই কৌশলটি ব্যবহার করে যেখানে একটি একক এক্সিকিউটেবল থাকে যা এটি কার্যকর করা হয় তার উপর নির্ভর করে তার আচরণকে পরিবর্তন করে।

প্রোগ্রামের ভিতরে সাধারণত একটি কাঠামো থাকে যা কেস / স্যুইচ স্টেটমেন্ট নামে পরিচিত যা নির্বাহী নামটি সঙ্গে ডাকা হয়েছিল তা নির্ধারণ করে এবং তারপরে সেই নির্বাহী নামের জন্য উপযুক্ত কার্যকারিতা কল করবে। নামটি সাধারণত প্রোগ্রামটি প্রাপ্ত প্রথম যুক্তি। উদাহরণস্বরূপ, আপনি Cযখন লিখবেন:

int main(int argc, char** argv)

argv[0]বলা হয় এক্সিকিউটেবলের নাম। কমপক্ষে, এটি সমস্ত শাঁসের জন্য এটি স্ট্যান্ডার্ড আচরণ, এবং সমস্ত এক্সিকিউটেবল যা আর্গুমেন্ট ব্যবহার করে সে সম্পর্কে এটি সচেতন হওয়া উচিত।

পার্ল উদাহরণ

পার্লের সাথে একত্রিত একটি স্বতন্ত্র উদাহরণ এখানে কৌশলটিও দেখায়।

এখানে আসল স্ক্রিপ্ট, কল করুন mycmd.pl:

#!/usr/bin/perl

use feature ':5.10';

(my $arg = $0) =~ s#./##;

my $msg = "I was called as: ";

given ($arg) {
  $msg .= $arg  when 'ls';
  $msg .= $arg  when 'find';
  $msg .= $arg  when 'pwd';
  default { $msg = "Error: I don't know who I am 8-)"; }
}

say $msg;
exit 0;

ফাইল সিস্টেম সেটআপ করা হল:

$ ls -l
total 4
lrwxrwxrwx 1 saml saml   8 May 24 20:49 find -> mycmd.pl
lrwxrwxrwx 1 saml saml   8 May 24 20:34 ls -> mycmd.pl
-rwxrwxr-x 1 saml saml 275 May 24 20:49 mycmd.pl
lrwxrwxrwx 1 saml saml   8 May 24 20:49 pwd -> mycmd.pl

এখন যখন আমি আমার আদেশগুলি পরিচালনা করি:

$ ./find 
I was called as: find

$ ./ls
I was called as: ls

$ ./pwd
I was called as: pwd

$ ./mycmd.pl 
Error: I don't know who I am 8-)

আরও দেখুন:ssh-argv0
জর্ডানম

4
এটি বাস্তবে ব্যস্তবক্স কীভাবে কাজ করে। এটিতে একটি একক বাইনারি রয়েছে যা বেশিরভাগ সাধারণ জিএনইউ ইউটিলিটি হিসাবে কাজ করে।
ভুয়া নাম

1
প্রতি যুক্তিগুলি mainবিপরীত হয়। argcসামনে আসে argv
বাকুরিউ

4
সি তে, আপনি স্ট্রিং সহ একটি স্যুইচ বিবৃতি দিতে পারবেন না।
ব্যাচইএক্স

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