المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : انهاء كافة العمليات التي تتبع ليوزر معين في Server (MySQL)



romaissa
11-02-2013, بتوقيت غرينيتش 02:21 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

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

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





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

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

<code style="white-space:nowrap"> <code> $ mysql
</code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> mysql> SELECT concat('KILL ',id,';') FROM information_schema.processlist WHERE user='user_sam' INTO OUTFILE '/tmp/a.txt';
</code> </code>

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

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

رمز PHP:

<code style="white-space:nowrap"> <code> mysql> source /tmp/a.txt;
</code> </code>

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

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

رمز PHP:

<code style="white-space:nowrap"> <code> $ rm /tmp/a.txt
</code> </code>

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

رمز PHP:

<code style="white-space:nowrap"> <code> $ 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;
</code> </code>


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

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





https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى