কোন চলমান প্রোগ্রামের পথ খুঁজে পাওয়া সম্ভব?


17

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

ps ax|grep "xmms"8505 ? SLl 2:38 xmms2d -vপথের তথ্য ছাড়াই ফিরে আসে । পিআইডি দেওয়া হয়েছে, আমি এটি খুঁজে পেয়েছি কিনা তা খুঁজে পেতে পারি /usr/bin/xmms2dনাকি /usr/local/bin/xmms2d?

ধন্যবাদ!


2
ps -C xmmsআপনার গ্রেপ অপ্রচলিত করা উচিত।
ব্যবহারকারী অজানা

1
pgrep এটিও করবে।
jlliagre

উত্তর:


22

এটা চেষ্টা কর:

ls -l /proc/8505/exe

অথবা আপনি যদি আউটপুটকে বিশ্লেষণ করতে না চান তবে lsকেবল করুন:

readlink /proc/8505/exe

অথবা

realpath /proc/8505/exe

6

আপনি যদি সোলারিস চালাচ্ছেন, তবে প্রস্তাবিত লিনাক্সের থেকে উপায়টি কিছুটা পৃথক:

$ for i in $(pgrep bash)
do
  printf "%6d %s\n" $i $(readlink /proc/$i/path/a.out)
done
   577 /usr/bin/bash
 11247 /usr/bin/bash
 13921 /usr/bin/bash
 13992 /tmp/bash

চলমান প্রক্রিয়াগুলির বর্তমান কার্যকরী ডিরেক্টরিটি জানতে চাইলে আপনি ব্যবহার করতে পারেন:

pwdx $(pgrep xmms)

উদাহরণ:

$ pwdx $(pgrep ksh)
2904: /home/jlliagre
2906: /home/jlliagre
3844: /tmp

(আমার মন্তব্য মুছে ফেলা হয়েছে কারণ এটি আপনার সম্পাদনার পরে আর প্রয়োগ করা হয়নি :)
কেজেটিল জর্জেনসেন

-1

আমি শেল থেকে মাউসপ্যাড শুরু করি:

mousepad & 
[1] 24289

এটি কোথা থেকে আসে তা পরীক্ষা করুন:

which mousepad 
   /usr/bin/mousepad

পথ দিয়ে এটি শুরু করুন:

/usr/bin/mousepad &

পিএস মাধ্যমে দেখুন:

ps v -C mousepad 
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
24289 pts/3    S      0:00      3    62 85441 10964  1.0 mousepad
24292 pts/3    S      0:00      0    62 85433 10864  1.0 /usr/bin/mousepad

যেমনটি আমরা দেখছি যে পথ ছাড়াই আহ্বান করা হয়েছে সে পথ ছাড়াই প্রদর্শিত হবে, এবং PATH দিয়ে শুরু হয়েছিল, এবং তাই এটি দ্বারা সন্ধান করা হবে

which mousepad

যে হিসাবে সহজ, তাই না? অপেক্ষা কর আমি যদি মেনু থেকে মাউসপ্যাড শুরু করি? ঠিক আছে, এটি PATH সেটিংস ব্যবহার করে বা না করেই নির্দিষ্ট করা যেতে পারে। আমি চেষ্টা করেছিলাম. একটি সাধারণ সূচনা একটি সাধারণ 'মাউসপ্যাড' বাড়ে ps v -C। যেহেতু ~ / বিনটি আমার পাঠের প্রথম অংশ তাই আমি সেখানে একটি ডামি তৈরি করি এবং ভয়েলা, ডামিটি মেনু থেকে শুরু করা হয়।

তবে আপনি যদি এমন কোনও প্রোগ্রাম শুরু করেন যা নিজেকে মুছে ফেলে? যা মুছে ফেলা প্রোগ্রামটি খুঁজে পাবে না এবং কোনও ভুলের প্রতিবেদন করবে, যদি পথে দ্বিতীয়টি থাকে।

সুতরাং এটি একটি জাতি শর্ত। আপনি যদি জানেন যে আপনার প্রোগ্রামগুলি তাদের অবস্থানগুলি অনুসন্ধান করার সময় সেগুলি নিজেকে মুছে না বা সরানো হয় না, ps v -C NAMEএবং which NAMEখুব ভালভাবে কাজ করা উচিত।


এটি কি সবসময় কাজ করবে? ধরুন আমার দুটি পৃথক ডিরেক্টরিতে এক্সিকিউটেবল আছে এবং আমি ./someexecutableদুটিতেই চালাচ্ছি ?
apoorv020

না, অবশ্যই না, কারণ উভয় আপ হিসাবে দেখাবে ./someexecutable বা / বিন / ব্যাশ ./someexecutable
ব্যবহারকারী অজানা

-4

এগিয়ে যান এবং উভয় ফাইল মুছে ফেলুন (জোরপূর্বক বিকল্প ছাড়া)। যে ফাইলটি মুছে ফেলা হয় সেটি হ'ল, এটি চলছিল না !!

সিস্টেম এক্সিকিউটেবল ফাইল লকিং আপনাকে বর্তমানে কার্যকর করা কোনও ফাইল মুছে ফেলার অনুমতি দেবে না।


আপনার উত্তর প্রশ্নের সত্য উত্তর দেয় না।
রিস্তো সালমিনেন

4
এটাও ভুল। আপনি ইস্যু ছাড়াই চলমান এক্সিকিউটেবলকে মুছতে পারেন। আপনি কীভাবে প্যাকেজগুলি যেমন initসর্বদা চালু থাকে তা আপগ্রেড করবেন? আপনি চলমান এক্সিকিউটেবলকে সংশোধন করতে পারবেন না ।
প্যাট্রিক

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