ادارة السيرفرات

انهاء كافة العمليات التي تتبع ليوزر معين في خادم Mysql

في بعض الاحيان وفي مرحلة معينه من مراحل تشغيل السيرفر فانك بكل تاكيد سوف تحتاج ان تقوم بانهاء كافة العمليات التي تتم على خادم قواعد البيانات MySQL من قبل مستخدم معين.  وبما ان خادم MySQL لا يدعم خاصة انهاء العمليات لمستخدم معين يجب علينا ان نقوم بالاحتيال على النظام للقيام بهذه العملية.

حيث ان خادم MySQL يدعم امر KILL لعملية معينة فقط بعينها وليس لجميع العمليات التي تتبع لمستخدم ويجب ان يتبع الامر KILL رقم العملية الداخلية في خادم MySQL . اذا في حال رغبتنا ان ناوم بانهاء جميع العمليات التي تتبع لمستخدم معين (kill all mysql process for a mysql user) كيف نقوم بذلك؟

بعد البحث وجدت ان الامر بسيط. حيث اننا نقوم في البداية بعمل استعلام يقوم باعادة ارقام جميع العمليات التي تتبع لمستخدم معين ويقوم بكتابة سكربت MySQL بسيط ينفذ امر الانهاء KILL ويحفظ هذا الملف في مجلد /tmp وبعدها نفوم بمناداة الملف ليتم تنفيذه على انه استعلام MySQL . وعندها فقط يتم انهاء جميع العمليات التابعة لهذا المستخدم. دعنا نستعرض كيفية تنفيذ هذا الامر ولنفترض ان المستخدم الذي نود انهاء عملياته هو user_sam على سبيل المثال

نقوم بالدخول الى mysql عن طريق تنفيذ الامر

$ mysql

ونقوم على تنفيذ الامر التالي

mysql> SELECT concat('KILL ',id,';') FROM information_schema.processlist WHERE user='user_sam' INTO OUTFILE '/tmp/a.txt';

لاحظ القيمة user_sam تعود لاسم المستخدم الذي نوم انهاء عملياته وكذلك لاحظ ان الملف الذي سوف يتم توليده هو /tmp/a.txt

الان لتنفيذ عملية الانتهاء نقوم ايضا بالدخول الى mysql في حال خروجنا منها وننفذ الامر التالي

mysql> source /tmp/a.txt;

وبهذا نكون قد قمنا بعمل انهاء kill لجميع العمليات التي تتبع لهذا المستخدم في خادم قواعد البيانات

لا تنسى حذف الملف /tmp/a.txt بعد اتمام العملية عن طريق الامر

$ rm /tmp/a.txt

لو كان لديك الفضول لمعرفة محتويات الملف a.txt سوف تلاحظ ان محتوياته شبيهه بالتالي

$ cat /tmp/a.txt 
KILL 3258;
KILL 3246;
KILL 3241;
KILL 3235;
KILL 3226;
KILL 3221;
KILL 3220;
KILL 3216;
KILL 3194;
KILL 3189;
KILL 3182;
KILL 3177;
KILL 3176;
KILL 3175;
KILL 3171;
KILL 3167;
KILL 3156;
KILL 3153;
KILL 3143;
KILL 3136;
KILL 3130;
KILL 3126;
KILL 3120;
KILL 3115;
KILL 3113;
KILL 3112;
KILL 3110;

حيث يظهر في كل سطر امر الانهاء kill وبجانبه رقم العملية التي تتبع لهذا المستخدم بكل تاكيد والتي تم توليدها من الاستعلام اعلاه.

وللعلم يمكنك تنفيذ نفس هذا الامر بعدة طرق

مراجع
راجع الرابط التالي للمزيد.

مطور تطبيقات انترنت واداري سيرفرات لينكس.

أضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *