অন্য শেলের মধ্যে কমান্ডগুলি কীভাবে দেখবেন?


9

অন্য শেলটিতে কী আদেশগুলি কার্যকর করা হচ্ছে তা দেখার কি কোনও উপায় আছে? উভয় শেলগুলি বাশ, এবং আমার কাছে রুট অ্যাক্সেস রয়েছে, যদি তা গুরুত্বপূর্ণ। আমি কোনও অতিরিক্ত সফ্টওয়্যার ইনস্টল করতে পারি না এবং আমি চাই না যে অন্যান্য শেলটি রান স্ক্রিনের মতো বিশেষ কিছু করতে হবে।

পরিস্থিতি: আমি দূরবর্তীভাবে একটি লিনাক্স মেশিনে লগইন করেছি এবং এটি সহকর্মীও। আমি তার শেলটিতে যে কমান্ডগুলি চালাচ্ছি তা দেখতে চাই। আমি জানি যে আমি কোনও সংমিশ্রণ ব্যবহার করতে watchএবং psযে কোনও কমান্ড চালাতে এক সেকেন্ডের চেয়ে বেশি সময় নেয় তা দেখতে পেয়েছি, তবে আমি বিশ্বাস করি না যে এটি খুব ছোট কমান্ডের সাহায্য করবে।


5
বিল্টিন কমান্ড যেমন kill, এবং cdউপ-প্রক্রিয়াগুলিকে স্প্যান করে না এবং পিএস আউটপুটে কখনই উপস্থিত হয় না।
জর্ডানম

@ জোর্ডানম ধন্যবাদ, এটি একটি ভাল বিষয়। এমনকি কেবল যে আদেশগুলি দিয়ে কাঁটাচামচ / নির্বাহের কারণ হয়, এটি সম্ভবত যথেষ্ট ভাল।
টম প্যানিং

উত্তর:


7

আপনি যেহেতু মূল, তাই আপনি সর্বদা পারেন strace -f -e execve -p her_bash_pid-fকারণ তার শেল আগে একটি নতুন প্রক্রিয়া মাল হবে প্রয়োজনীয় exec, কিন্তু এই মানে হল যে আপনি কিছু যে চাইল্ড প্রসেস পাশাপাশি চালানো দেখতে পাবেন।


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

এটি ওপেন সোর্স; আপনার যদি সত্যিই প্রয়োজন হয় তবে আপনি সর্বদা সেই বৈশিষ্ট্যটি যুক্ত করতে পারেন। :) বা স্ট্রেস আউটপুটকে পার্সিং করে কিছুটা আরও বুদ্ধিমান স্ক্রিপ্ট যুক্ত করুন যা কোনও পিআইডি হয়ে গেলে তা উপেক্ষা করে exec
জিম প্যারিস

5

যদি আপনার সহকর্মী তাদের বাশ শেলের জন্য কিছু ইতিহাস সেটিংস পরিবর্তন করতে পারেন তবে আপনি লেজ -f /home/user/.bash_history থেকে এই তথ্যটি পেতে পারেন। শেল থেকে বেরিয়ে আসার পরিবর্তে আপনার প্রতিটি কমান্ডের পরে .bash_history রচনার জন্য সেটিংসটি এখানে থাকবে:

export PROMPT_COMMAND="history -a"
shopt -s histappend

আমি স্ক্রিন সেশনটিকে যদিও "আদর্শ" সমাধান হিসাবে বিবেচনা করব।


5

দ্রুত গবেষণা (এবং কিছু চিন্তাভাবনার) পরে আমি আপনাকে সম্ভাব্য বিকল্পগুলির নিম্নলিখিত তালিকাটি দিতে পারি:

  • তার bash_history পড়ুন। তবে এটি সাধারণত লগআউটে লেখা হয়। জিজ্ঞাসুবন্টু ডট কমের সেই আচরণ পরিবর্তন করার বিষয়ে একটি পোস্ট রয়েছে ( সম্পাদনা করুন : @ জর্ডানমে দৃশ্যত একই ধারণা ছিল এবং এটি পোস্ট করা আরও দ্রুত ছিল ...)।
  • যদি সে কোনও শারীরিক টার্মিনাল (/ dev / ttyX) এ থাকে তবে আপনি প্রোগ্রামটি ব্যবহার করতে পারেন conspy
  • তার ব্যবহার করুন screen। আপনি যদি কেবল তার সহায়তা করতে এবং গুপ্তচরবৃত্তি না করতে চান তবে সে তার সেশনটি পর্দার ভিতরে চালাতে ইচ্ছুক হতে পারে। আপনি তারপরে কেবল তার অধিবেশনটিতে সংযুক্ত করতে পারেনsudo -u herUsername screen -x
  • আপনি একটি শেল র‌্যাপার স্ক্রিপ্ট লিখতে পারেন যা আপনার পছন্দের লগফাইলে কমান্ডগুলিকে লগ করে। আপনাকে তার শেলটি সেই স্ক্রিপ্টে সেট করতে হবে (এটি কেবল একটি ধারণা, এটি সম্ভবত কাজ করে বা নাও করতে পারে)।
  • ব্যবহার cat /dev/pts/X | tee /dev/pts/Xকরা আমার মনে প্রথম জিনিস ছিল। চেষ্টা করার পরেও আসলে কাজ করে না এবং এটি একটি খুব নোংরা সমাধান। প্রতিটি অক্ষর কেবল সংযুক্ত টার্মিনালের একটিতে মুদ্রিত হয় (এটি teeপাশাপাশি কল করার কারণ )। এটি চেষ্টা করার সময় আমি প্রতিটি দ্বিতীয় চরিত্রের গুপ্তচর করতে পারি। একটু কল্পনা দিয়ে আপনি অনুমান করতে পারবেন তিনি কী করছেন ...

ভুল: কনস্পিটি টিটিসের সাথে কাজ করে না
জিব্রি

3

জিএনইউ স্ক্রিনটি এখন অবধি সেরা প্রশংসা আইএমও। জিএনইউ স্ক্রিন (বা tmux) উপলভ্য না হলে আপনার সহকর্মী চালিয়ে যান script -f

এবং তারপরে আপনি কী সে কী করছে তা দেখতে পারেন tail -fn +0 /path/to/typescript


0

ইউনিক্সের স্ক্রিন টার্মিনালটি ভাগ করতে, যাতে আপনি রিয়েল-টাইমে আপনার সহকর্মীর ইনপুট এবং আউটপুট দেখতে পারেন, ইউনিক্স screenকমান্ডটি ব্যবহার করুন ।

  1. আপনি এবং সহকর্মী ssh এ একই ইউনিক্স ব্যবহারকারী হিসাবে লগ ইন করুন
  2. আপনি কমান্ড টাইপ করুন

    screen -d -m -S myscreenname

    screen -x myscreenname

    (অবশ্যই স্ক্রিনের নামটি আপনি যা চান তাই দিয়ে মাইস্ক্রিনামটি প্রতিস্থাপন করুন)।

  3. সহকর্মী আদেশটি টাইপ করে

    screen -x myscreenname

  4. আপনার ইউনিক্স টার্মিনালগুলি ভাগ করে নেওয়ার জন্য, যে কোনও ব্যক্তি কমান্ডটি টাইপ করতে পারেন

    exit

স্ক্রিনের দুর্দান্ত বৈশিষ্ট্যটি হ'ল আপনি নিজের ইউনিক্স টার্মিনাল থেকে আদেশগুলি টাইপ করতে পারেন এবং সহকর্মী তার স্ক্রিনে আউটপুট দেখতে পারবেন। এটি জুটি-প্রশাসন এবং পরামর্শদাতা জুনিয়র ইউনিক্স প্রশাসকদের করার একটি দুর্দান্ত উপায়।


0

@ জর্ডানমের উত্তরটি সম্পূর্ণ করতে ... আপনি যদি উভয়ই একই ব্যবহারকারীর অ্যাকাউন্টটি ব্যবহার করেন, অর্থাত্ আউটপুট

echo $HOSTNAME
echo $USER 

আপনার এবং আপনার সহকর্মীর জন্য একই তবে আমরা কিছু মজা করতে পারি।

আমরা অন্য টার্মিনালে তাত্ক্ষণিকভাবে উপলভ্য হওয়ার জন্য একটি টার্মিনালে ইনভয়েড কমান্ডের জন্য সক্ষম করতে পারি

আপনি যদি historyআপনার টার্মিনালে প্রার্থনা করেন তবে আপনি আপনার পূর্ববর্তী আদেশগুলি দেখতে পাবেন। ডিফল্টরূপে, বাশ প্রতিটি সেশনের শেষে এটিতে একটি ইতিহাস লিখে ~/.bash_history fileএকটি আপডেট সংস্করণ দিয়ে বিদ্যমান ফাইলটি ওভাররাইট করে। এর অর্থ হ'ল আপনি যদি একাধিক ব্যাশ সেশনগুলি দিয়ে লগ ইন করেন তবে প্রস্থান করার জন্য কেবলমাত্র শেষেরটির ইতিহাস সংরক্ষণ করা হবে।

-------------------------------------------------- -----

আপনার সম্পাদনা করুন ~/.bashrcএবং এটি যুক্ত করুন

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

কোথায়

history -aথেকে appends ~/.bash_historyফাইল অবিলম্বে পরিবর্তে অধিবেশন শেষে

history -c বর্তমান অধিবেশন ইতিহাস সাফ করে

history -r~/.bash_historyআমাদের অধিবেশন ইতিহাসে ফিরে আসা ফাইলটি পড়ে

দ্রষ্টব্য: পরামিতি যে কমান্ড মৃত্যুদন্ড কার্যকর করা হয় রয়েছে সামনে প্রম্পট প্রতিটি নতুন কমান্ড। সুতরাং কমান্ড 1 কেবলমাত্র ইতিহাসে সংরক্ষণ করা হবে যখন কমান্ড 2 কার্যকর হবেPROMPT_COMMAND

ইতিহাস দেখার সময় আপনি সুবিধার জন্য প্রতিটি কমান্ডের পাশে একটি টাইমস্ট্যাম্প চাপতেও পারেন। আবার, আপনার সম্পাদনা করুন ~/.bashrcএবং সংযোজন

export HISTTIMEFORMAT="%d/%m/%y %T "

এছাড়াও আপনি যদি একাধিক টার্মিনাল ব্যবহার করতে চান এবং আপনার কমান্ডগুলির ইতিহাস উপলব্ধ করতে চান তবে একটি দুর্দান্ত হ্যাক :)

অধিক তথ্য

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