কীভাবে পলাতক ক্রোনটব সন্ধান করবেন


17

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

আজ, বছরগুলি পরে, ইউআরএল-এর অন্য প্রান্তে থাকা অ্যাপ্লিকেশনটিতে আমি সমস্যা হতে শুরু করেছি। আমি এটি স্থির করেছিলাম, কিন্তু তখন বুঝতে পেরেছি, এই ক্রোন জবটি কোথা থেকে আসছে তা আমার কোনও ধারণা নেই

কোনও বিশেষ সিস্টেমে সমস্ত ক্রন্টব্যাবগুলি দ্রুত খুঁজে বের করার বা বিড়ালের কোনও উপায় আছে কি? অনুমতিগুলি কোনও সমস্যা না হওয়ায় আমার কাছে রুট অ্যাক্সেস রয়েছে। আমি কেবল কখনও একজন ব্যবহারকারী cronহয়েছি, এর বাস্তবায়নটি আমি কখনই গভীরভাবে দেখিনি, তবে আমার * নিক প্রবৃত্তিটি বলেছে যে সমস্ত ক্রন্টব্যাক্স ধারণ করে কোথাও একটি পাঠ্য ফাইল রয়েছে be আমি কোথায় ছিলাম তা আমি জানি না, এবং আমি এটি খনন করলে আমি কিছু খুঁজে পাওয়ার ভয় পাব, তবে তাদের সবগুলিই নয়, বা সিস্টেমের কিছু অদ্ভুত উপকারীতা অনুপস্থিত

এছাড়াও, আমি বুঝতে পারলাম রুট অ্যাক্সেসের সাথে

  1. সিস্টেমের সমস্ত ব্যবহারকারীর একটি তালিকা পান
  2. su ব্যবহারকারী হিসাবে
  3. crontab -l
  4. সমস্ত ব্যবহারকারীর সাথে পুনরাবৃত্তি

তবে আমি কিছুটা কম ম্যানুয়াল খুঁজছি (এবং ক্রোন এর বাস্তবায়ন সম্পর্কে কিছু জানতে চাইছি)


2
আপনার এই লিঙ্কটি দেখার প্রয়োজন হতে পারে - stackoverflow.com/questions/134906/…
ড্যানিয়েল টি।

উত্তর:


20

ক্রোনট্যাবগুলি লুকিয়ে রাখতে পারে এমন কয়েকটি স্থান রয়েছে:

  • /etc/crontab
  • /etc/cron.d/*
  • /etc/crond.{hourly,daily,weekly,monthly}/*
    এগুলি থেকে বলা হয় /etc/crontab, তাই সম্ভবত এটির উপর একটি তারকাচিহ্ন
  • /var/spool/cron/*(কখনও কখনও /var/spool/cron/crontabs/*)

atপাশাপাশি পরীক্ষা করে নেওয়ার বিষয়টি নিশ্চিত করুন যা এটির কাজগুলিতে /var/spool/at/বা রাখে/var/spool/cron/at*/

এছাড়াও, পরিবর্তে

su <user>
crontab -l

শুধু এটি করুন:

crontab -lu <user>

8

ক্রোনট্যাবগুলি /etc/crontabএর উপাদানগুলিতে (অনেকগুলি /etc/cron.*/*মূল দ্বারা সম্পাদিত) এবং /var/spool/cron/*(ব্যবহারকারীর ক্রন্টাবগুলি) তে থাকে এবং (অনেকগুলি প্রয়োগের সাথে ) থাকে।

আপত্তিজনক কাজটি সনাক্ত করতে আপনার যদি সমস্যা হয়, তবে আরেকটি পদ্ধতির কাজটি চলাকালীন তদন্ত করা। উদাহরণস্বরূপ, আপনি example.comপোর্ট 80 এ প্রসেস খোলার সংযোগগুলির ব্যবহারকারীর আইডি লগ করতে ফায়ারওয়াল বিধি যুক্ত করতে পারেন :

iptables -A OUTPUT -p tcp --syn -d example.com --dport 80 -j LOG --log-prefix "[->example.com] " --log-uid

যদি চাকরীটি কোনও অ্যাপ্লিকেশন যেমন pingবা ব্যবহার curlকরে থাকে তবে একটি র‍্যাপার দ্বারা সাধারণ বাইনারিকে ছায়া দেয় যা এটি কীভাবে ব্যবহার করছে তা সম্পর্কে লগ ইন করে, এই জাতীয় স্ক্রিপ্ট সহ /usr/local/bin:

#!/bin/sh
{
  date
  echo "$0" "$@"
  ps -p $PPID
  echo
} >>"/tmp/$(basename "$0").log"
exec "/usr/bin/$(basename "$0")" "$@"

+1 কারণ এটি দেখায় যে কীভাবে সমস্যাটি বোঝানো যায়!
জো

6

দ্রুত এবং নোংরা উপায়:

grep -r ping /var/spool/cron/crontabs

সঠিক অবস্থান যেখানে crontabs সংরক্ষণ করা হয় সিস্টেম থেকে সিস্টেমে পরিবর্তিত হতে পারে, কিন্তু এটা সাধারণত এর /var/spoolএবং আছে crontabনাম কোথাও।

আরও লক্ষ করুন যে অনেক সিস্টেমে সিস্টেম ক্রন্টব্যাব রয়েছে (যেমন /etc/crontab, তেমন /etc/cron.dকিছু) আরও স্ক্রিপ্টের মতো কল করতে পারে /etc/cron.hourly, .daily...


4

এটি ক্রোনটবের মতো শোনাচ্ছে যা ক্রোনটব তৈরি করেছিল। সমস্ত ক্রন্টাবের একটি -uস্যুইচ নেই, তবে জিএনইউ / লিনাক্সের জন্য এটি উপলব্ধ। ক্রন্টব দ্বারা নির্মিত সমস্ত ক্রোনজবদের তালিকাবদ্ধ করার জন্য এটি একটি সহজ লাইন।

for user in $(awk -F':' '{ print $1}' /etc/passwd); do crontab -u $user -l; done

(রুট হিসাবে চালান।)


2

অন্য সমস্ত কিছু যদি ব্যর্থ হয় তবে আপনি অনুরোধ করা URL এর বাইরে হানিপট তৈরি করতে পারেন - অর্থাত কোনও বড় ফাইল বা কিছু পরিবেশন করুন - এবং ডেটা পাওয়ার জন্য অপেক্ষা করা প্রক্রিয়াটি সন্ধান করুন এবং তারপরে তার পিপিআইডি সন্ধান করুন।


2

যে কোনও শালীন সিস্টেমে ম্যানপেজে ক্রোনট্যাবগুলির সঠিক অবস্থানটি ব্যাখ্যা করা উচিত (সাধারণত FILESসমাপ্তির নিকটবর্তী অংশে এবং অন্যান্য দমনগুলির ক্ষেত্রেও)।

উদাহরণস্বরূপ আমার সিস্টেমে cron(8)নিম্নলিখিতটি রয়েছে:

 FILES
      /etc/crontab          system crontab file
      /var/cron/atjobs      directory containing at(1) jobs
      /var/cron/log         cron's log file
      /var/cron/tabs        directory containing individual crontab files
      /var/cron/tabs/.sock  used by crontab(1) to tell cron to check for
                            crontab changes immediately

এবং আমি যখন টায়ার্লারের পরামর্শ পেয়েছি atতখন আপনি যখন কাজ করছিলেন তখন তা পরীক্ষা করার জন্যও ।


2

এটিকে অন্য উপায়ে পৌঁছে দেওয়া 'বৃত্তাকার: ক্রোন ক্রমে এটি কী করছে তার একটি লগ রাখে, এই ধরণের সমস্যাটি প্রথম দিকে এড়ানো উচিত avoid আমার সিস্টেমে লগটি রাখা হয় /var/cron/logএবং দেখতে এটির মতো লাগে:

==> /var/cron/log <==
Oct 25 00:21:01 fortress cron[20232]: (vucar) CMD (/home/vucar/lighttpd-watchdog)

এই লাইনটি আমাকে বলেছে যে মেশিনে পিআইডি 20232 সহ ক্রোন উদাহরণটি ব্যবহারকারীর পক্ষে fortressকার্যকর /home/vucar/lighttpd-watchdogকরা হচ্ছে vucar। একটি ভাল আচরণ পদ্ধতিতে কেবল একটি ক্রোন চলমান, তাই এটি সহজবোধ্য হবে।

এটি কাজের জন্যও atকাজ করে, কারণ তারা সাধারণত যেভাবেই ক্রোনকে হস্তান্তরিত হয়:

==> /var/cron/log <==
Oct 25 00:28:01 fortress cron[31282]: (vucar) ATJOB (1414189680.c)

স্নিপেটগুলি বিএসডি সিস্টেম থেকে আসে, তবে সাধারণ ধারণাটি সম্ভবত অন্য কোথাও একই রকম।

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