উইন্ডো ম্যানেজার থেকে শুরু হওয়া কোনও অ্যাপ্লিকেশন থেকে আউটপুট কোথায় যায়?


10

আপনি যদি কোনও টার্মিনাল থেকে অ্যাপ্লিকেশন শুরু করেন আপনি আউটপুটটি স্টডআউট এবং স্ট্ডার দেখতে পাবেন, তবে উইন্ডো ম্যানেজার থেকে যদি কোনও অ্যাপ্লিকেশন শুরু হয়, তবে সাধারণত এই ফাইলগুলির আউটপুট কোথায় যায়? থেকে / দেব / নাল?


1
পরামর্শ: ps fauxকোন টিটিটি / পিটিএস প্রক্রিয়াটির সাথে জড়িত তা পরীক্ষা করতে ব্যবহার করুন । কেউ না হলে "?" এটি সম্ভবত অকার্যকর মধ্যে হারিয়ে যায়। (এটি কেবল একটি ধারণা, আমি ভুল হতে পারি)
অবধি

@ কোয়াইও: মানটি একটি প্রশ্ন চিহ্ন (?), সুতরাং আপনি যেমনটি বলেছেন, এটি সম্ভবত শূন্যতার মধ্যে হারিয়ে যায়।
আগস্ট কার্লস্ট্রোম

2
আপনি যদি ~/.xsession-errors
জিডিএম বা কেডিএম

উত্তর:


8

উইন্ডো ম্যানেজার থেকে শুরু হওয়া একটি অ্যাপ্লিকেশন আউটপুট উইন্ডো ম্যানেজার থেকে আউটপুট হিসাবে একই জায়গায় যায়। (যদি না অ্যাপ্লিকেশন এটি পুনঃনির্দেশ না করে তবে সাধারণ জিইউআই অ্যাপ্লিকেশনগুলি তা করে না))

ফাইল ডেস্ক্রিপ্টর 1 (স্ট্যান্ডার্ড আউটপুট) এবং ফাইল বর্ণনাকারী 2 (স্ট্যান্ডার্ড ত্রুটি) এ এটি কী খোলায় তা দেখে আপনি জানতে পারেন যে ডাব্লুএম এর আউটপুটটি কোথায় যায়; সাধারণত উভয় একই ফাইলে যাবে। আপনার উইন্ডো ম্যানেজারের প্রক্রিয়া আইডিটি সন্ধান করুন (উদাহরণস্বরূপ চেষ্টা করুন pgrep metacityবা pidof metacityমেটাাসিটি যদি আপনার উইন্ডো ম্যানেজার হয় - আপনি যদি আপনার উইন্ডো ম্যানেজারের প্রক্রিয়াটির নামটি জানেন না, ps fবা দ্বারা রিপোর্ট করা প্রসেস ট্রিগুলির মূলটি দেখুন pstree)। ধরুন আপনার উইন্ডো ম্যানেজারটির প্রসেস আইডি 1234, রান করুন

lsof -p1234

এবং ফাইল বর্ণনাকারী 1 এবং 2 এর সাথে সম্পর্কিত লাইনগুলি সন্ধান করুন বা

অথবা

ls -l /proc/1234/fd

আপনি সম্পর্কিত ফাইল বর্ণনাকারীর ফিল্টারিং স্বয়ংক্রিয় করতে পারেন:

lsof -p1234 | awk '$4 ~ /^[12][^0-9]/'
ls -l /proc/1234/fd/[12]

(দ্রষ্টব্য: সব কমান্ড উপরে লিনাক্সের জন্য হয়। pgrepঅন্যান্য unices মধ্যে সাধারণ, এবং lsofপ্রায় কাছাকাছি কোন জায়গায় ইনস্টল করা যেতে পারে; psঅপশন এবং /procসামগ্রীগুলি আলাদা unices জুড়ে ভিন্ন।)

সাধারণ পরিস্থিতিতে যেখানে আপনি টার্মিনাল এমুলেটরে চালিত শেল থেকে কমান্ডগুলি চালাচ্ছেন (এক্সটার্ম, কনসোল, জিনোম-টার্মিনাল, ইত্যাদি, তবে স্ক্রিন বা টিএমউक्स জুড়ে ব্যবহৃত হয় না) তবে আপনি সহজেই টার্মিনাল এমুলেটরটির আউটপুট কোথায় তা পরীক্ষা করতে পারবেন can টার্মিনাল এমুলেটরটি আপনার শেলের মূল প্রক্রিয়া হিসাবে চলছে। টার্মিনাল এমুলেটর অতিরিক্ত সুযোগ-সুবিধাগুলি নিয়ে চলতে থাকলে এটি কাজ করে না, যা কিছু সিস্টেমে টার্মিনাল এমুলেটরটি লগ-ইন করা ব্যবহারকারী তালিকায় (utmp) লিখতে দেয়।

lsof -p$PPID
ls -l /proc/$PPID/fd

অনেকগুলি বিতরণ এক্স সেশনের আউটপুটকে নির্দেশ করে ~/.xsession-errors


আমার ক্ষেত্রে ডাব্লুএম থেকে শুরু হওয়া সন্তানের পিতা-মাতা শ্রেণিবিন্যাস হ'ল ব্ল্যাকবক্স <- লাইটডিএম <- লাইটডিএম <- আর এবং সমস্ত টিটি-এর মান "?"। আমি তখন অনুমান করি যে আউটপুট কোথাও যায় না।
আগস্ট কার্লস্ট্রম

@ অগাস্টকার্লস্ট্রোম তারপরে pidof blackboxবা pgrep blackboxউইন্ডো ম্যানেজারের পিআইডি পেতে, বা সরাসরি lsof -p$(pidof blackbox)। এটির সাথে টিটিসের কোনও সম্পর্ক নেই।
গিলস 'অশুভ হওয়া বন্ধ করুন'

1
আহ, অবশ্যই কমান্ডটি ls -l /proc/<blackbox-id>/fdআমাকে বলে যে স্টাডাউট যায় /dev/nullএবং স্ট্ডার যায় ~/.xsession-errors
আগস্ট কার্লস্ট্রোম

1

উইন্ডো ম্যানেজারটি এক্স সার্ভারের সন্তানের, তাই এটি এবং এর শিশুদের আউটপুট এক্স সার্ভারের একই জায়গায় যায় to

আপনি যদি একমাত্র ব্যবহারকারী হন এবং আপনি গ্রাফিকভাবে লগইন করেন তবে কিছু সিস্টেম এক্স সার্ভার উদাহরণটিকে আউটপুট কনসোল থেকে স্থানান্তরিত করে, যার অর্থ আপনি সেই ভিটিতে স্যুইচ করতে পারেন এবং এটি দেখতে পারেন। উপাখ্যান্তভাবে, বিন্যাসটি সাধারণত alt-ctrl-f1এটি এক্স দৃষ্টান্তের জন্য আউটপুট কনসোল এবং alt-ctrl-f7এটি এক্স প্রদর্শন হয় তবে আপনি যতগুলি খুঁজে পেতে পারেন তা পরীক্ষা করতে পারেন। প্রথম 6 টি সাধারণত লগইনগুলিকে স্পান করে তবে এমন আরও অনেকগুলি সম্ভাব্য রয়েছে যা খালি বা পাইপ আউটপুট সহ প্রদর্শিত হবে না এবং প্রদর্শিত হবে না। ডিআইএস থেকে তাদের মধ্যে কিছুতে আউটপুট থাকতে পারে, এক্স থেকে আউটপুট নিয়ে এটিকে গুলিয়ে ফেলবেন না my আমার অভিজ্ঞতায় এক্স এবং শিশুরা সর্বদা উল্লেখযোগ্য পরিমাণে সতর্কতা এবং বার্তা দেয় (অনুপস্থিত ফন্ট, অবহেলিত কল, ইত্যাদি) calls

আপনি যদি কোনও জিইউআইয়ের মাধ্যমে লগইন না করেন তবে আপনি যে ভিটি এক্সটি শুরু করেছিলেন তা হ'ল এটি একটি সমস্যা, কারণ আপনি প্রস্থান না করা অবধি আপনি এটি দেখতে পাবেন না। আমি জিইউআই লগইন করে বিশ্বাস করি, এক্সডিএম (গ্রাফিকাল লগইন) একটি সুবিধাপ্রাপ্ত প্রক্রিয়া হিসাবে চালিত হয় যার অর্থ এটি আউটপুটটি পাইপ করতে পারে /dev/tty7startx 1>&2> /dev/tty7আপনার কাছে সঠিক সুপারভাইজার সুবিধা থাকলে আপনিও ( ) করতে পারেন।


1
ক্ষেত্রে startxবা xinitসরাসরি ক্ষেত্রে কেউ উইন্ডোজ ম্যানেজারকে কাঙ্ক্ষিত উইন্ডো ম্যানেজারের ~/.xinitrcআগে পুনর্নির্দেশ করার জন্য সর্বদা টুইট করতে পারে exec। আমি নিজে কখনও এই ধরণের আউটপুট মিস করিনি। জিইউআই অ্যাপ্লিকেশন কী উত্পাদন করছে তা আগ্রহী হলে আমি এটিকে টার্মিনাল থেকে চালাই। কিন্তু আসলে এটি সহায়ক তাই আমি stdout- এ এবং দ্বারা stderr পুনঃনির্দেশিত থাকেন হতে পারে ~/.xinitrcজন্য ~/.xinitrc.out
মিরোস্লাভ কোকিকার

0

আপনি যদি সাধারণভাবে গ্রহণ করেন তবে একটি প্রোগ্রাম ধারাবাহিকটি করে অন্যটি আরম্ভ করে man 2 forkএবং man 2 execveতারপরে সেই প্রক্রিয়াতে ডিফল্ট ফাইল বর্ণনাকারী খোলা থাকে।

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

যেমন আমার ক্ষেত্রে

  • Ctrl + P টিপুন ( xmonadউইন্ডো ম্যানেজার দ্বারা পরিচালিত ) শুরু হবেdmenu_run
  • dmenu_runআমার ইনপুট পরিচালনা করবে এবং কিছু অ্যাপ্লিকেশন শুরু করবে (উদা। xkill)

আউটপুট /dev/tty1কারণ হবে

  • xkill দ্বারা শুরু হয়েছিল dmenu_run
  • dmenu_run দ্বারা শুরু হয়েছিল xmonad
  • xmonad দ্বারা শুরু হয়েছিল X
  • X দ্বারা শুরু হয়েছিল startx
  • startx প্রথম ভার্চুয়াল কনসোল থেকে ম্যানুয়ালি আমার দ্বারা শুরু হয়েছিল /dev/tty1

কেবলমাত্র একটি রেফারেন্সের জন্য, যদি আপনি আউটপুট / ত্রুটিটি কোথায় যায় তা সন্ধান করতে চান বা কোনও নির্দিষ্ট প্রক্রিয়া (পরিচিত পিআইডি সহ) জন্য ফাইল বর্ণনাকারী কী রয়েছে তা আরও ভালভাবে বলতে পারেন, করুন

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