ইভেন্টের দ্বারা শেল স্ক্রিপ্ট কার্যকর করার উপায়


0

সময় দ্বারা (ক্রোন) না করে কোনও শেল স্ক্রিপ্ট ট্রিগার করার কোনও উপায় আছে কি? উদাহরণস্বরূপ, ডিস্কটি পূর্ণ হলে এটি পুরানো লগগুলি সরানোর জন্য একটি শেল স্ক্রিপ্ট চালাবে।

উইন্ডোজের মতো, টাস্ক শিডিয়ুলার একটি ইভেন্টে ট্রিগার করেছিল।


আমার মনে হয় না লিনাক্স এই জাতীয় বিজ্ঞপ্তিকে সমর্থন করে তবে আপনি পর্যায়ক্রমে ফাইল সিস্টেমে স্পেসের ব্যবহার পরীক্ষা করতে পারেন তারপরে আপনার পুরানো লগটি মুছুন। অথবা সহজেই লগ সিস্টেম ব্যবহার করুন যা নতুন লগ fail
োকাতে

উত্তর:


1

ইভেন্টগুলি যদি ডিবিইউএসকে অবহিত করা হয় তবে আপনি সিস্টেম ইভেন্টগুলি স্ক্রিপ্ট বন্ধের জন্য dbus- মনিটর ব্যবহার করতে পারেন। আপনি কী স্ক্রিপ্ট করতে চান তা এই পদ্ধতির ব্যবহারের জন্য ডিবিইউজে ইভেন্টগুলি পোস্ট করছে কিনা তা দেখতে আপনাকে ডকুমেন্টেশনটি গবেষণা করতে হবে।

ডিবিইউএস-এর আরও তথ্যের জন্য এখানে দেখুন: https://www.freedesktop.org/wiki/Software/dbus/

ডিবিইএস অনুপলব্ধ থাকাকালীন কাজ করবে এমন আরেকটি পদ্ধতি হ'ল ব্যাকড্রপ বসে থাকার জন্য আপনার নিজস্ব ডেমন লিখতে হবে এবং আপনার সন্ধান করা ইভেন্টগুলি পর্যায়ক্রমে চেক করা হয়। উদাহরণস্বরূপ আমার নিজের লো-ডিস্ক-স্পেস ডেমন রয়েছে যা আমি আমার সিস্টেমে চালিত যা আমাকে শর্তটি সম্পর্কে সতর্ক করতে আমার শেল প্রম্পটকে পরিবর্তন করবে।

আপনাকে ধারণা দেওয়ার জন্য এটি থেকে এখানে একটি স্নিপেট রয়েছে:

declare LOWDISK='\033[38;05;160mLOWDISK\033[00m' ## Display in RED. 
declare SLEEPFREQ=60 ## Check every 60 seconds 
declare CHECKFILE=/tmp/__lowdisk__alerts__ 
declare LOWDISKFS=/tmp/__lowfs_diskspace__ 

  ### Daemonized 
if [[ "${1}" =~ ^-d ]]; then 
 if ps -ef|awk -vPID=$$ '{if($2 !~ PID)print}'|grep -q -- '[l]owdiskspace_monitor.bsh -d'; then 
  echo "*** Warning: lowdiskspace_monitor.bsh - ALREADY STARTED, skipping.. "   
 else 
  while :; do 
    ## Add your monitored disks here. 
   df -h / /mnt/adata1 /mnt/adata2 /mnt/pny1 /mnt/pny2 /mnt/samsung1 /mnt/samsung2 /mnt/samsung31 /mnt/samsung32 /mnt/seagate1 /mnt/seagate2 /mnt/seagate21 /mnt/seagate22 /mnt/mushkin1 /mnt/mushkin2 /var/host/media/removable/ELEMENT2_EXT4 /var/host/media/removable/Elements/ /var/host/media/removable/Elements_Ntfs2 /var/host/media/removable/ELEMENT_EXT4 2>"${DISCARD_DEV}" | uniq > "${CHECKFILE}" 
      ## Check for at least a GIG ("G") in each mounted monitored volume. Change this if necessary. 
   awk '{if(($4 !~ /[0-9]+[.]?[0-9]*G/)&&(NR>1))print $6}' "${CHECKFILE}" > "${LOWDISKFS}"
   sleep ${SLEEPFREQ}
   rm "${LOWDISKFS}"
  done 
 fi 
fi 

[[ -s "${LOWDISKFS}" ]] && echo -en "${LOWDISK}"

দ্রষ্টব্য: এটি ব্যবহার করার জন্য আপনি এটি কোনও ফাইলে সংরক্ষণ করতে পারবেন, এটিকে এক্সিকিউটেবল করে তুলবেন এবং PROMPT_COMMANDএটি আপনার .bashrcফাইলে সেট করুন।


0

পর্যায়ক্রমে চলার জন্য স্ক্রিপ্ট সেটআপ করুন, তবে শর্তটি সন্তুষ্ট না হলে অবিলম্বে প্রস্থান করে।

যেমন

#!/bin/sh

df "<mount point or device node or /var/log>" | 
    grep -q -e '100%' -e '9[5-9]%' || 
    exit

find /var/log -type f -name "*old logs*" -exec rm {} +

কেন dfসরাসরি মাউন্ট পয়েন্টে চালাবেন না (বা /var/logলগগুলি যেখানে সেখানে রয়েছে) এমনকি কেন? এছাড়াও, আপনি ব্যবহার করতে চাইতে পারেন grep -F -q(কোনও মিল থাকলে আউটপুট উত্পাদন না করে)।
Kusalananda

@ কুসালানন্দ ভালো পয়েন্ট! এবং আমি fgrep ডিফল্ট হিসাবে সোলারিস ইনস্টলেশনটি চালিত গ্রেপ কমান্ড -F পতাকা সমর্থন করে না হিসাবে ব্যবহার করছি।
ড্যানিনিউ

অবশ্যই, তবে প্রশ্নের ব্যবহারকারী সেন্টোস-এ রয়েছে। আপনি যদি /usr/xpg4/binসোলারিস উপর আপনার পাথ প্রথম দিকে, আপনি একটি পেতে চাই grepযে আছে সমর্থন -F(আপনি সম্ভবত ব্যবহার করা উচিত PATH=$(/usr/xpg4/bin/getconf PATH):$PATH(অথবা xpg6) যা হোক; দেখতে ম্যানুয়াল উপর সোলারিস)। standards(7)
Kusalananda

@ কুসালানন্দ, দেখে মনে হচ্ছে আমাকে এখনও কঠিন শিখতে হবে।
ড্যানিনিউ

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