সময় দ্বারা (ক্রোন) না করে কোনও শেল স্ক্রিপ্ট ট্রিগার করার কোনও উপায় আছে কি? উদাহরণস্বরূপ, ডিস্কটি পূর্ণ হলে এটি পুরানো লগগুলি সরানোর জন্য একটি শেল স্ক্রিপ্ট চালাবে।
উইন্ডোজের মতো, টাস্ক শিডিয়ুলার একটি ইভেন্টে ট্রিগার করেছিল।
সময় দ্বারা (ক্রোন) না করে কোনও শেল স্ক্রিপ্ট ট্রিগার করার কোনও উপায় আছে কি? উদাহরণস্বরূপ, ডিস্কটি পূর্ণ হলে এটি পুরানো লগগুলি সরানোর জন্য একটি শেল স্ক্রিপ্ট চালাবে।
উইন্ডোজের মতো, টাস্ক শিডিয়ুলার একটি ইভেন্টে ট্রিগার করেছিল।
উত্তর:
ইভেন্টগুলি যদি ডিবিইউএসকে অবহিত করা হয় তবে আপনি সিস্টেম ইভেন্টগুলি স্ক্রিপ্ট বন্ধের জন্য 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
ফাইলে সেট করুন।
পর্যায়ক্রমে চলার জন্য স্ক্রিপ্ট সেটআপ করুন, তবে শর্তটি সন্তুষ্ট না হলে অবিলম্বে প্রস্থান করে।
যেমন
#!/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
(কোনও মিল থাকলে আউটপুট উত্পাদন না করে)।
/usr/xpg4/bin
সোলারিস উপর আপনার পাথ প্রথম দিকে, আপনি একটি পেতে চাই grep
যে আছে সমর্থন -F
(আপনি সম্ভবত ব্যবহার করা উচিত PATH=$(/usr/xpg4/bin/getconf PATH):$PATH
(অথবা xpg6
) যা হোক; দেখতে ম্যানুয়াল উপর সোলারিস)। standards(7)