স্পোনিং প্রক্রিয়ার উত্স কীভাবে সন্ধান করবেন?


12

আমার একটি জাভা প্রক্রিয়া একটি রেডহ্যাট লিনাক্স ইনস্ট্যান্সে চলছে।

সমস্যাটি হ'ল আমি এটি মেরে ফেলার পরে এটি আবার প্রদর্শিত হতে থাকে। আমি কোথায় তাকান তা নিশ্চিত নই। আমি ইতিমধ্যে crontab গিয়েছিলাম, কিন্তু ভাগ্য নেই।

আমি পিপিআইডি দেখেছি, তবে এটি সূচনা করে (1)।

কোন ধারণা কীভাবে আমি উত্সটি খুঁজে পেতে পারি?


1
আপনি আমাদের কিছু চালিয়ে যেতে পারেন? প্রক্রিয়া উদাহরণস্বরূপ কোনও ফাইল লিখুন? ps xfপ্রক্রিয়া ট্রি দেখানোর আউটপুট আমাদের দেখাতে পারেন ? যেহেতু এটি দাঁড়িয়েছে, আমাদের খুব কমই চলছে।
টেরডন

আপনি বলেছিলেন যে আপনি ক্রন্টবায় গিয়েছিলেন ... আপনি কি atসেগুলির কোনও একটি কিনা তাও পরীক্ষা করে দেখেছেন ?.
YoMismo

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

উত্তর:


15

অনেকগুলি সম্ভাবনা রয়েছে (কিছু অন্যান্য উত্তরে উল্লিখিত):

  1. একটি সিস্টেম বা ব্যবহারকারী ক্রোনজব প্রায়শই সম্পাদন করে,
  2. SysV init- /etc/inittabrespawnনির্দেশের সাথে পরিষেবাটির জন্য একটি এন্ট্রি ,
  3. সিস্টেমে, Restartবিকল্পের সাথে একটি ইউনিট ফাইল অন্য মানকে সেট করে no,
  4. আপস্টার্টে, respawnনির্দেশ সহ একটি পরিষেবা কনফিগারেশন ফাইল ,
  5. একটি প্রক্রিয়া পর্যবেক্ষণ সরঞ্জাম যেমন monit, বা
  6. নির্দিষ্ট পরিষেবার জন্য একটি অ্যাডহক ওয়াচডগ প্রক্রিয়া।

একটি আকর্ষণীয় নতুন (লিনাক্স-কেবল) সরঞ্জাম যা প্রক্রিয়াটি শুরু হচ্ছে সেখানে আরও অন্তর্দৃষ্টি প্রদান করতে পারে সিজডিগ

সিসডিগ লিনাক্স কার্নেলের ট্র্যাসপয়েন্ট বৈশিষ্ট্যগুলি ব্যবহার করে যা দ্রুত, সিস্টেম প্রশস্তের পরিমাণে সরবরাহ করতে পারে strace

উদাহরণস্বরূপ, আমি যদি প্রতিটি প্রক্রিয়া শুরু দেখতে চাইতাম তবে আমি lsইস্যু করতে পারি:

sudo sysdig evt.type=execve and evt.arg.exe=ls

যখন lsকোথাও চালানো হবে, আমি এই জাতীয় বার্তা পাব:

245490 16:53:54.090856066 3 ls (10053) < execve res=0 exe=ls args=--color=auto. tid=10053(ls) pid=10053(ls) ptid=9204(bash) cwd=/home/steved fdlimit=1024 pgft_maj=0 pgft_min=37 vm_size=412 vm_rss=4 vm_swap=0 env=...

আমি প্রত্যাবর্তিত পরিবেশের তথ্যগুলি কেটেছিলাম, তবে আপনি দেখতে পাচ্ছেন, পিটিএডে আমি প্রোগ্রামটির নাম এবং পিড দেখতে পাচ্ছি ve execveলিনাক্সে ব্যবহৃত নতুন সিস্টেম কলটি নতুন কমান্ডগুলি কার্যকর করতে ব্যবহৃত হয় (সমস্ত এক্সিকিউটিভ কলগুলি কার্যকর করার জন্য কেবল সামনের অংশ)।


2
sysdig একটি দুর্দান্ত পরামর্শ! বিটিডাব্লু, এটি এখন সীমিত কার্যকারিতা সহ উইন্ডোজ (এবং ম্যাক, আমি মনে করি) এর জন্য উপলব্ধ।
নিওয়েজার্ড

এখানে মনিট কীভাবে সহায়তা করে? আমি ম্যানুয়ালটি পড়তে শুরু করেছি তবে এটি নাগিওসের মতো কোনও বিকল্পের মতো বা ব্যাকআপের মতো দেখাচ্ছে। আমি আপনাকে দেখছি না যে এটি আপনাকে কীভাবে পুনর্নির্মাণের প্রক্রিয়াটি সনাক্ত করতে সহায়তা করবে।
জেফারসন হডসন

7

আমি বিশ্বাস করি আপনি ব্যবহার করতে পারেন pstree। আপনি কমান্ডটি হিসাবে নির্দিষ্ট করতে পারেন,

pstree -p PID

উপরেরটি আপনাকে জাভা অ্যাপ্লিকেশনগুলির সমস্ত পিতামাতার একটি তালিকা দেবে।


1
এটি কোনও উপকারে আসবে না, কারণ ওপি ইতিমধ্যে জানিয়েছে যে তিনি পিপিআইডিটির দিকে তাকিয়েছেন, যা ১।
গুন্ট্রাম ব্লহম মনিকাকে

@ গুটরামব্লহম, সম্পাদনা করার আগে দয়া করে মূল প্রশ্নটি দেখুন। এটি প্রশ্নের প্রথম সংস্করণে উল্লেখ করা হয়নি।
রমেশ

2
দীর্ঘশ্বাস. আরেকটি পোস্টার যিনি তাঁর সম্পাদনাগুলি চিহ্নিত না করেই তাঁর প্রশ্নকে চলন্ত লক্ষ্য হিসাবে পরিণত করেছেন :(
গুন্টরাম ব্লুম মনিকে

5

আপনি এর পিপিআইডি (প্যারেন্ট প্রসেস আইডি) এ একবার দেখতে পারেন:

$ ps -eo pid,ppid,args | grep java

একবার আপনি আপনার জাভা প্রক্রিয়ার পিপিআইডি (দ্বিতীয় কলাম) পেয়ে গেলে psসম্পর্কিত প্রক্রিয়াটি খুঁজে পেতে আবার ব্যবহার করুন :

$ ps -p [PPID]

সম্পাদনা করুন : যদি পিতামাতার বয়স 1 (আরম্ভ) হয় তবে আপনার জাভা প্রক্রিয়ার প্রথম পিতামাতার "জন্ম দেওয়ার পরে" মারা গেল (কতটা দুঃখজনক)। সে কারণে আপনি এটি সন্ধানের জন্য বর্তমান প্রক্রিয়া শ্রেণিবিন্যাসটি ব্যবহার করতে পারবেন না। আমি আপনাকে প্রথমে যা করতে পরামর্শ দিচ্ছি তা হল চেক করা ps -ef। আপনি কেবল আউটপুট পড়েই অপরাধীকে খুঁজে পেতে পারেন।

তারপরে, ক্রোনট্যাবগুলি একবার দেখুন (আপনি এটি ইতিমধ্যে করেছিলেন তবে এটি ক্ষতি করবে না):

$ for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done

এর জন্য রুট সুবিধার দরকার হবে।

এখনও একটি জাভা প্রক্রিয়া নির্ধারিত দেখতে পাচ্ছেন না? ধূর. আসুন অন্য কিছু চেষ্টা করুন। যদি আপনার জাভা প্রক্রিয়া বুট হওয়ার পরে উপস্থিত থাকে তবে বুটের সময় স্কেমেড প্রোগ্রামগুলি দেখুন। আমি এরকম কিছু প্রস্তাব দেব ...

$ grep -iR java /etc/rc*

আপনি যদি এখনও কিছু না পান তবে ... ভাল আমি স্বীকার করি আমি ধারণা থেকে দূরে চলেছি। আপনার ps -efজাভা-ভিত্তিক প্রোগ্রামগুলির সাথে যুক্ত প্রসেসগুলি সত্যই অন্য দিকে নজর দেওয়া উচিত । আপনার জাভা প্রক্রিয়াটির ধ্রুবক পুনর্বিবেচনার জন্য দায়বদ্ধ একটি ডেমন বা "লঞ্চার" জুড়ে আসা উচিত।


আমি প্যারেন্ট প্রসেসটি সন্ধান করার চেষ্টা করেছি, তবে এটি কেবল ইনডিকে নির্দেশ করে (পিপিআইডি = 1)। আমি এই তথ্য দিয়ে প্রশ্ন পরিবর্তন করব।
হোসে

@ জোসেচেভস, যদি আপনার পিপিআইডি 1 হয়, তবে জাভা প্রক্রিয়াগুলি তৈরি হচ্ছে তা জম্বি প্রক্রিয়া। এই উত্তরটি এখানে দেখুন
রমেশ

@ জোসেভেজ আপনার মামলায় তদন্তের জন্য আমি আরও কয়েকটি ট্র্যাক দিয়ে আমার উত্তর সম্পাদনা করেছি।
জন ডাব্লু এইচ স্মিথ

2
@Ramesh PPID 1, তাহলে তারা পারে বা নাও হতে পারে হতে বোকচন্দর । এগুলি যদি প্রকৃতপক্ষে জন্মায় না তবে তারা initকমপক্ষে অনাথstateথেকে সুনির্দিষ্টভাবে উল্লেখ করা psযদি তারা বোকচন্দর হয় দেখাবে (যেমন, ps -eo pid,ppid,state,comm); রাষ্ট্র হবে Z
স্বর্ণলোকস

1
@goldilocks: PPID 1, তাহলে তারা না বোকচন্দর হয় , যদি না init পদ্ধতির স্বাভাবিকভাবে কাজ হয়; এটি এমন একটি ওয়েট লুপ চালানো উচিত যা সমস্ত অনাথ জম্বিগুলি অবিলম্বে কাটবে।
hmakholm

1

তোমরা যারা পিতা বা মাতা জানি না, তাহলে আপনি মত কিছু সিস্টেম রেখক উচিত auditd

আপনি এর সাথে লগিং সক্ষম করবেন:

auditctl -a exit,always -S execve -F path=/usr/bin/rrdtool

এবং তারপরে /var/log/audit/audit.logলাইনগুলি সন্ধান করুন:

type=SYSCALL msg=audit(1414027338.620:6232): arch=c000003e syscall=59
success=yes exit=0 a0=7fdea0e4db23 a1=7fffec7c5220 a2=7fffec7c87d0
a3=7fdea1b559d0 items=2 ppid=17176 pid=18182 auid=1000 uid=1000 gid=1000 
euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts8 
ses=2 comm="sh" exe="/bin/dash" key=(null)

(পাঠযোগ্যতার জন্য একাধিক লাইনে বিভক্ত)। আপনি আগ্রহী exe="/bin/dash"এবং / বা pid=18182যা আপনার রাউজ প্রক্রিয়াটি সন্ধান করতে চান এবং ppid=17176এটি নির্বাহকারী পিতামাতাকে চিহ্নিত করে।

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