المحتوى عن 'sysadmin'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • الإدارة والقيادة
  • السلوك التنظيمي
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
    • React
  • HTML
    • HTML5
  • CSS
  • SQL
  • لغة C#‎
  • لغة C++‎
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • Sass
    • إطار عمل Bootstrap
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • ASP.NET
    • ASP.NET Core
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
    • منصة Xamarin
  • سهولة الوصول
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • التسويق بالرسائل النصية القصيرة
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 2 نتائج

  1. من الضروري على أي مطور أو مهندس تعلُّم بعض أوامر إدارة النظام الأساسيَّة خصوصًا في ظل غزو أدوات جديدة وبيئات متطورة ومتنوعة عالمنا بشكل دائم؛ يمكن لأوامر وحزم معيَّنة أن تساعد المطورين على تنظيم وإدارة واستكشاف أخطاء التطبيقات ومحاولة إصلاحها، كما تزودهم بمعلومات مفيدة عن حالة النظام والتطبيقات. سواءً كنت مطورًا جديدًا أو تريد إدارة تطبيقاتك فحسب فإنَّ الأوامر العشرون التي يشرحها هذا الدليل ، ستساعدك على فهمٍ أفضلٍ لتطبيقاتك، أو تعطيك القدرة على وصف المشاكل التي تعترضك في العمل لمديري الأنظمة لإصلاحها، مثلًا لماذا يعمل التطبيق محليًا ولكنه ليس على المضيف البعيد؟ تطبَّق هذه الأوامر ضمن بيئة لينكس والنظام الحاسوبي الذي يحوي أنظمة وهمية مثبتة عليه مباشرة (bare metal environment) والحاويات. 1. curl إنَّ curl هو أداةٌ لنقل الملفات باستخدام رابط URL عبر سطر الأوامر؛ يُستخدم هذا الأمر أيضًا لفحص اتصال التطبيقات مع خدمة ما، أي بمعنى آخر تحديد فيما إذا كان تطبيقك يستطيع الوصول إلى خدمة معينة مثل قاعدة بيانات، أو التحقق إن كانت الخدمة بحد ذاتها تعمل بشكل صحيح. لنفترض مثلًا أن تطبيقك يُظهر الخطأ HTTP 500 الذي يشير إلى عدم قدرته الوصول إلى قاعدة البيانات MongoDB. $ curl -I -s myapplication:5000 HTTP/1.0 500 INTERNAL SERVER ERROR الخيار ‎-I (أو ‎–head) يُظهر معلومات ترويسة http فقط، والخيار ‎-s (أو ‎–silent) يُخفي تفاصيل تقدم العملية أو رسائل الخطأ. يمكنك في هذه الحالة تفقُّد نقطة النهاية لقاعدة بياناتك من حاسوبك المحلي كما يلي: $ curl -I -s database:27017 HTTP/1.0 200 OK لا توجد مشكلة، إذا أين تكمن المشكلة؟! تأكد إن كان تطبيقك يستطيع الوصول إلى أماكن أخرى بالإضافة إلى قاعدة البيانات من تطبيق المضيف. $ curl -I -s https://opensource.com HTTP/1.1 200 OK لا مشكلة أيضًا؛ حاول الآن الوصول إلى قاعدة البيانات من تطبيق المضيف؛ يَستخدم تطبيقك اسم مضيف قاعدة البيانات لذا جرِّبه أولًا. $ curl database:27017 curl: (6) Couldn't resolve host 'database' يشير ذلك إلى أنَّ تطبيقك لا يستطيع أن يستبين عنوان خادوم قاعدة البيانات إذ إمَّا أن يكون غير متوافر أو أنَّ المضيف (الحاوية أو الجهاز الافتراضي) لا يملك اسم خادوم ليستبين عن اسم المضيف. 2. python -m json.tool / jq بعد تنفيذ الأمر curl ستجد أن ناتجه صعب القراءة. تحتاج أحيانًا إلى طباعة المخرجات بصيغة جميلة ومنسَّقة وقابلة للقراءة للبحث عن مدخلات معيَّنة وهذا ما توفره صيغة البيانات JSON، التي هي صيغة سلسة وسهلة القراءة والفهم وتُستخدم لنقل البيانات بين لغات البرمجة أو بين تطبيقات الويب والخادوم؛ توجد مكتبة JSON مدمجة في بايثون يمكن أن تساعدنا في هذه العملية عبر استعمال الأمر python -m json.tool بعد تحويل المخرجات إليه. $ cat test.json {"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]} هل فهمت شيئًا من المخرجات السابقة؟ سنستخدم صيغة JSON في الأمر التالي بإرسال المخرجات السابقة إلى بايثون. $ cat test.json | python -m json.tool { "properties": { "age": { "description": "Age in years", "minimum": 0, "type": "integer" }, "firstName": { "type": "string" }, "lastName": { "type": "string" } }, "required": [ "firstName", "lastName" ], "title": "Person", "type": "object" } هل لاحظت الفرق؟! يمكن إظهار المخرجات أيضًا بطريقة متقدمة تشبه استخدام الأمر السابق وهو بتحويل المخرجات إلى الأداة jq والتي تحوي خيارات عدَّة للحصول على قيم محدَّدة من مدخلات صيغة JSON؛ يمكنك تثبيت jd من هذا الرابط. $ cat test.json | jq { "title": "Person", "type": "object", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "age": { "description": "Age in years", "type": "integer", "minimum": 0 } }, "required": [ "firstName", "lastName" ] } 3. ls يُستعمل الأمر ls لإظهار قائمة بالملفات الموجودة ضمن مجلد، ويستخدمه مديرو الأنظمة والمطورون بكثرة؛ يمكن أيضًا باستخدام هذا الأمر لإيجاد ملف معين ما بالإضافة إلى عرض أذوناته. حاولنا في المثال التالي تشغيل الملف myapp ولكنَّنا لم نستطع بسبب مشكلة الأذونات؛ عندما تفحصنا الأذونات عبر الأمر ls -l وجدنا أن الملف صالح للقراءة والكتابة فقط. $ ./myapp bash: ./myapp: Permission denied $ ls -l myapp -rw-r--r--. 1 root root 33 Jul 21 18:36 myapp 4. tail يُظهر الأمر tail الجزء الأخير من الملف؛ لا تحتاج غالبًا إلى قراءة جميع أسطر الملف أو السجل أثناء البحث ضمنهم عن مشكلة أو عطل ما ولكن قد تكون البيانات الأخيرة (الأحدث) هي الأهم. تستطيع مثلًا استعمال الأمر tail لفحص ومعرفة ما ذا يحدث في السجلات عندما تنشئ طلبية HTTP. [root@localhost ~]# tail -f /var/log/httpd/access_log ::1 - - [21/Jul/2017:18:46:58 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:00 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:02 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:04 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:06 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:08 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:10 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:12 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:14 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” ::1 - - [21/Jul/2017:18:47:16 +0000] “GET / HTTP/1.1” 403 4897 “-” “curl/7.29.0” الخيار ‎-f (أو ‎–follow) يُظهر أسطر السجل أو الملف التي تُضاف إليه حديثًا، وهذا واضح من المثال السابق. يمكن إظهار عدد محدَّد من الأسطر عوضًا عن تتبع تحديثات الملف وإظهارها مثل إظهار آخر 100 سطر من الملف عبر الخيار ‎-n. $ tail -n 100 /var/log/httpd/access_log 5. cat يعمل هذا الأمر على دمج الملفات أو طباعتها إلى مجرى الخرج القياسي كما يُستخدم للتحقق من محتويات الملفات. نتأكد في المثال التالي إن كان إطار العمل Flask، وهو إطار عمل مصغَّر لتطوير تطبيقات ويب صغيرة ومتوسطة، مُدرجًا ضمن القائمة التي يعتمد عليها التطبيق Python Flask. $ cat requirements.txt flask flask_pymongo 6. grep الأداة grep هي أداةٌ قويةٌ في مطابقة أنماط نصيَّة داخل الملفات؛ إن كنت تبحث عن نمط نصي معين داخل ملف أو في مخرجات أمرٍ آخر فيمكن استخدام هذه الأداة للبحث عن هذا النمط وتحديد مكان وجوده. لنفترض مثلًا أنَّك تريد التأكد من عمل الخادوم Apache Tomcat، ستعجز عن قراءة الكثير من الأسطر للبحث عنه لذا يمكن إرسال المخرجات إلى الأمر grep لعزل الأسطر التي تشير إليه. $ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start 01-Jul-2017 18:03:47.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms 7. ps يُظهر الأمر ps حالة العمليات التي تعمل حاليًا في النظام؛ يُستعمل لتحديد التطبيقات التي تعمل أو للتأكد من عملية ما، فإذا أردت التحقق من عمل خادوم الويب Tomcat، استعمل الأمر ps مع الخيارات التالية للحصول على رقم العملية لهذا الخادوم. $ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 2 18:55 ? 00:00:02 /docker-java-home/jre/bi root 59 0 0 18:55 pts/0 00:00:00 /bin/sh root 75 59 0 18:57 pts/0 00:00:00 ps -ef ولتجنب قراءة الكثير من الأسطر والعمليات، أرسل المخرجات السابقة إلى الأداة grep كما يلي: $ ps -ef | grep tomcat root 1 0 1 18:55 ? 00:00:02 /docker-java-home/jre/bi 8. env يتيح الأمر env عرض متغيرات البيئة التي ضُبطت لجلسة طرفيَّة معيَّنة؛ قد يكون من المفيد في أثناء البحث عن المشاكل والأعطال التأكد من عدم وجود متغير خاطئ يمنع تطبيقك من البدء. سنستخدم الأمر env في المثال التالي للتحقق من متغيرات البيئة المضبوطة للتطبيقات. $ env PYTHON_PIP_VERSION=9.0.1 HOME=/root DB_NAME=test PATH=/usr/local/bin:/usr/local/sbin LANG=C.UTF-8 PYTHON_VERSION=3.4.6 PWD=/ DB_URI=mongodb://database:27017/test لاحظ أن التطبيق يستخدم “بايثون 3” ويحوي متغيرًا للبيئة للاتصال بقاعدة البيانات MongoDB. 9. top يطبع الأمر top قائمة بالعمليات التي تجري في النظام بطريقة أكثر تفاعلية من الأمر ps كما يرتِّب العمليات حسب نشاطها ويحدِّث القائمة كلَّ ثلاث ثوانٍ؛ يمكن باستخدام هذه الأداة تحديد كمية الذاكرة والمعالج التي تستهلكها كلُّ عملية على حدة. قد تحدث حالة شائعة عند تشغيل تطبيق وهي توقفه عن العمل ثمَّ جموده، فيجب أولًا في هذه الحالة التحقق من الخطأ الذي يظهره التطبيق والذي قد يكون خطأ في الذاكرة. $ tail myapp.log Traceback (most recent call last): MemoryError هل حقًا الذاكرة لا تكفي أو يوجد خطأ فيها؟ للتثبُّت من ذلك نستخدم الأمر top لمعرفة كمية الذاكرة والمعالج التي يستهلكها التطبيق؛ عند تنفيذ الأمر نلاحظ أنَّ التطبيق “بايثون” يستخدم نسبة كبيرة من المعالج والذاكرة، وما توقعناه كان صحيحًا. أثناء تشغيل الأداة top اضغط على C لرؤية موقع الأمر كاملًا وربط كل عملية مع تطبيق محدد. تبيَّن أنَّ التطبيق “memeater.py” يستهلك أغلب الذاكرة. عندما تنفد الذاكرة نتيجة استهلاكها من أحد التطبيقات فإنَّ النظام ينهي (يقتل kill) هذا التطبيق أو العملية ويرسل خطأ نفاد الذاكرة (out-of-memory) اختصارًا (OOM). 10. netstat إنَّ وظيفة الأمر netstat هي عرض حالة الشبكة والمنافذ المستخدمة والاتصالات الواردة عبرها. هذه الأداء لا تكون مدمجة في لينكس لذا تحتاج إلى تثبيتها عبر الحزمة net-tools. من المحتمل أن تصادف خطأ -إن كنت مطورًا- يشير إلى أن المنفذ محجوز أو العنوان مستخدم حاليًا …إلخ. فيمكن استعمال الأمر netstat لتحليل وفحص الأعطال لمحاولة إصلاحها. يوضح المثال التالي أنَّ أباتشي يستخدم المنفذ 80 على الجهاز عند تنفيذ الأمر التالي: حيث يشير الخيار t إلىTCP والخيار u إلى UDP و l إلى listening (حالة الاستماع) و n إلى numeric. 11. ip address يعمل الأمر ip address على عرض الواجهات وعناوين IP لتطبيقات المضيف أو التحقق من عنوان IP للحاوية؛ إن لم يكن الأمر موجودًا أو لم يعمل فيمكنك تثبيته عبر الحزمة iproute2. إن كانت حاويتك متصلة مثلًا مع شبكتين فإنَّ الأمر ip address يبين الواجهة المتصلة مع كل شبكة؛ يمكن أيضًا استخدام هذا الأمر للحصول على عنوان IP للجهاز المضيف. يوضح المثال التالي أنَّ عنوان IP لحاوية الويب على الواجهة eth0 هو 172.17.0.2: 12. lsof يُستخدم الخيار lsof لسرد قائمة بالملفات المفتوحة (list open files) وربطها مع التطبيقات؛ قد لا يتواجد هذا الأمر في بعض توزيعات لينكس لذا ثبِّت الحزمة lsof. هنالك مقولة مشهورة وهي: "يُعامَل أي تفاعل مع النظام في لينكس على أنَّه ملف"، وبذلك إن كان هنالك تطبيق يكتب على ملف أو ينشئ اتصالًا على الشبكة فإنَّ الأمر lsof سيعتبره ملفًا. يُستخدم أيضًا هذا الأمر بصورة مشابهة للأمر netstat وذلك في عرض المنافذ المنصتة. إن أردت مثلًا التحقق من كون المنفذ 80 مستخدم حاليًا أو لا، فاستعمل الأمر lsof مع الخيار ‎-i الذي يعطي قائمة بالملفات المفتوحة المرتبطة باتصال عبر الشبكة الموافقة لما بعد الخيار. توضح الصورة التالية خادوم أباتشي (httpd) يستمع على المنفذ 80؛ يمكن إعادة استخدام الأمر نفسه بإضافة الخيار ‎-p مع رقم العملية لتحديد الاسم الأصلي للعملية ومكان وجودها على الجهاز وهذا مفيد خصوصًا مع أباتشي. 13. df يُستعمل الأمر df لإظهار مساحة القرص المستخدمة والمتوافرة لإصلاح المشاكل المرتبطة بالتخزين. عند تشغيل تطبيق على حاوية قد تظهر رسالة خطأ تشير إلى انخفاض المساحة المتوافرة عليها، وحينئذٍ يمكن استخدام الأمر df للتأكد من صحة هذا الخطأ وأنَّه حقًا لم تعد هنالك مساحة متوافرة إذ إن مدير النظام هو المسؤول عن إدارة وتحسين مساحة القرص. توضح الصورة مساحة القرص لجميع أنظمة الملفات الموجودة. الخيار ‎-h (أو ‎--human-readable) هو لإظهار الحجم بصيغة مقروءة. 14. du يُستخدم الأمر du للحصول على معلومات تفصيليَّة عن حجم الملفات الموجودة داخل مجلد. إن أردت معرفة حجم السجلات الموجودة في المجلد ‎/var/log، على سبيل المثال، وأيُّ السجلات حجمه أكبر نفذ الأمر du مع الخيار ‎-h لتسهيل قراءة حجم الملفات والخيار ‎-s لعرض الحجم الكلي. $ du -sh /var/log/* 1.8M /var/log/anaconda 384K /var/log/audit 4.0K /var/log/boot.log 0 /var/log/chrony 4.0K /var/log/cron 4.0K /var/log/maillog 64K /var/log/messages نجد أنَّ المجلد anaconda هو الأكبر حجمًا من بين المجلدات الموجودة في ‎/var/log. يمكن استخدام هذا الأمر بالتزامن مع الأمر df لمعرفة كيفيَّة توزيع المساحة المستخدمة على الملفات وما هي الملفات ذات الحجم الكبير. 15. id مهمَّة الأمر id هي عرض معلومات عن هوية مستخدم ومجموعة محدَّدة أو المستخدم الحالي والمجموعة التي ينتمي إليها. استخدمنا في المثال التالي الأداة Vagrant -وهي أداة للعمل ضمن بيئة افتراضيَّة- لاختبار التطبيق وعزله في بيئة تطويرية؛ بعد الدخول إلى صندوق Vagrant (البيئة الافتراضيَّة)، حاولنا تثبيت خادوم أباتشي ولكن النظام لم يسمح بتنفيذ الأمر لأنَّ تنفيذه يتطلب صلاحيات المستخدم الجذر (root)، لذا نستخدم الأمر id لمعرف هوية المستخدم الحالي. $ yum -y install httpd Loaded plugins: fastestmirror You need to be root to perform this command. $ id uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ولتنفيذ الأمر السابق يجب اختيار مستخدم ذو صلاحيات أعلى. 16. chmod قد تُصادف أحيانًا عند تشغيل تطبيق لأول مرة على حاسوبك رسالة الخطأ "الإذن مرفوض " (permission denied) لذا تأكد من الأذونات باستخدام الأمر ls. $ ls -l total 4 -rw-rw-r--. 1 vagrant vagrant 34 Jul 11 02:17 test.sh نلاحظ من المثال أنَّ المستخدم لا يملك إذن التنفيذ (عدم وجود x) لتشغيل التطبيق؛ نلجأ حينها إلى الأمر chmod لتغيير الأذونات وتمكين المستخدم من تشغيل التطبيق وذلك بكتابة الأمر التالي: $ chmod +x test.sh [vagrant@localhost ~]$ ls -l total 4 -rwxrwxr-x. 1 vagrant vagrant 34 Jul 11 02:17 test.sh لاحظ وجود إذن التنفيذ (وجود x) ضمن أذونات الملف وإن جربنا الآن تشغيله فلن تظهر رسالة الخطأ السابقة. 17. dig / nslookup يساعد نظام أسماء النطاقات DNS على تحويل العنوان URL إلى عنوان IP، وإن لم يُحوَّل هذا العنوان فستحدث مشكلة في الاتصال. لنفترض أنَّك تريد الوصول إلى قاعدة بياناتك (mydatabase) من تطبيقك ولكنَّّك لا تستطيع إذ تظهر رسالة خطأ "لا يمكن استبيان العنوان" (cannot resolve)؛ جرب استخدام الأداة dig للبحث عن أسماء النطاقات DNS أو الأداة nslookup للاستعلام عن خواديم أسماء النطاقات لحل هذه المشكلة ومعرفة سبب عدم تمكن التطبيق من استبيان اسم نطاق قاعدة البيانات. $ nslookup mydatabase Server: 10.0.2.3 Address: 10.0.2.3#53 ** server can't find mydatabase: NXDOMAIN جربنا استعمال الأمر nslookup ولكن ظهرت رسالة بالخطأ نفسه أي لم يجد عنوانًا لاسم نطاق قاعدة البيانات. إن جربت الأمر dig فستحصل على النتيجة نفسها. $ dig mydatabase ; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> mydatabase ;; global options: +cmd ;; connection timed out; no servers could be reached هنالك احتمالات كثيرة تفسر سبب حدوث هذا الخطأ ليست ضمن موضوع هذه المقالة؛ تواصل مع مدير النظام المسؤول إن لم تستطع حل المشكلة ليساعدك بالبحث عن سبب المشكلة وحلها. إن لم يكن هذان الأمران موجودان على حاسوبك، فثبت الحزمة BIND Utilities. 18. iptables إنَّ iptables هو جدار ناري موجود في أغلبية توزيعات لينكس ووظيفته هي سماح أو حجب حركة مرور البيانات الشبكيَّة؛ قد يمنع الجدار الناري تطبيقات معيَّنة من استلام أو نقل البيانات عبر الشبكة؛ إن كان أحد التطبيقات لديك يواجه صعوبةً في الوصول إلى خدمة أو موقع معيَّن فقد يكون هذا الجدار الناري هو السبب في منع حركة البيانات من الوصول إلى تلك الخدمة أو الموقع. لنفترض مثلًا أنَّ التطبيقات لا تتمكن من الوصول إلى الموقع opensource.com، نتأكد أولًا من الاتصال عبر الأداة curl: $ curl -vvv opensource.com * About to connect() to opensource.com port 80 (#0) * Trying 54.204.39.132... * Connection timed out * Failed connect to opensource.com:80; Connection timed out * Closing connection 0 curl: (7) Failed connect to opensource.com:80; Connection timed out فشِل الاتصال مع الموقع بعد انقضاء المهلة؛ قد يكون هنالك ما يمنع من الاتصال مع ذلك الموقع لذا نستعمل الأمر iptables مع الخيار ‎-S لعرض قواعد الجدار الناري. $ iptables -S -P INPUT DROP -P FORWARD DROP -P OUTPUT DROP -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT من الواضح أنَّ الضبط الافتراضي للقواعد الثلاث الأولى هي "تجاهل" (drop) البيانات الشبكيَّة المرسلة والمستقبلة والموجَّهة، أما القواعد الأخرى فهي "السماح" (accept) بمرور البيانات عبر خادوم SSH و DNS. استشر في هذه الحالة مدير الأنظمة إذا كان هنالك حاجة لإضافة أو تعديل قاعدة للسماح بحركة البيانات للموقع السابق. إن كان المضيف الذي تستخدمه هو بيئة محليَّة أو للاختبار المحلي فاستخدم iptables للسماح بمرور البيانات غير الضارة. 19. sestatus توجد آلية للتحكم في الوصول على بعض توزيعات لينكس تدعى "التأمين المعزَّز في لينكس" (Security Enhanced Linux)، أو تدعى اختصارًا (SELinux)، ومفعلة عليه (الوضع enforcing)؛ توفِّر هذه الآلية إمكانية الوصول للعمليات المشغلة حاليًا بأدنى الصلاحيات إذ يحتمل أنَّ بعض تلك العمليات ضارٌ وبذلك تُمنع من الوصول إلى الملفات المهمَّة على النظام. قد يحتاج أحد التطبيقات أحيانًا الوصول إلى ملف ما ولكنَّه لا يستطيع فتظهر رسالة خطأ بذلك؛ يجب التأكد إن كان SELinux يمنع هذا التطبيق من الوصول باستعمال الأمر tail مع grep للبحث عن الرسالة "denied" في السجل ‎/var/log/audit. قد لا يكون SELinux مفعَّلًا منذ البداية لذا من المفيد التحقق أولًا من ذلك عبر الأمر sestatus. $ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28 نجد من الرسالة السابقة أنَّ SELinux مفعَّل؛ يستطيع مدير النظام مساعدتك في هذا الشأن وتحديد إن كان التطبيق يستحق الوصول إلى الملفات التي يحتاجها. أَضف إلى ذلك أنَّه من المفيد تحديث SELinux دومًا على بيئتك التطويرية المحليَّة ليصبح أكثر تساهلًا. 20. history ختامًا، وبعد تنفيذ الكثير من الأوامر سواءً للتجريب أو لإصلاح بعض المشاكل، لابد أن نشير إلى الأمر history الذي لا تكاد تخلو صدفة (shell) منه؛ مهمَّة هذا الأمر هي طبع جميع الأوامر التي استخدمتها منذ بدء استخدامك للصدفة. تكمن فائدته بتسجيل الأوامر المستخدمة لإصلاح مشكلة ما وإعادة تذكرها أو تنفيذها. إن نفذنا هذا الأمر فستظهر جميع الأوامر التي تعلمتها وجربتها خلال هذه المقالة: $ history 1 clear 2 df -h 3 du إن أردت تنفيذ أحد هذه الأوامر السابقة فلن تحتاج لإعادة كتابته، فقط استخدم الرمز ! وأتبعه برقم الأمر الذي تود تنفيذه مجددًا. الخاتمة تعرَّفت على مجموعة من الأوامر الأساسيَّة التي ستزيد من خبرتك في تحليل الأعطال وإصلاحها، والتي يستخدمها الكثير من مديري الأنظمة لحل وإصلاح المشاكل التي تواجههم. التمرس على هذه الأوامر وفهمها يمنحك القدرة على التواصل مع مديري الأنظمة لحل المشاكل التي ستواجهك في المستقبل. ترجمة -وبتصرف- للمقال 20‎ Linux commands every sysadmin should know لصاحبه Rosemary Wang.
  2. ما هي شهادات AWS؟ توفر شهادات AWS (اختصار لـAmazon Web Services، خدمات ويب من Amazon) وسيلةً للمساعدة في تحديد درجة الكفاءة في استخدام خدمات AWS السحابية Cloud services. تتطلب الشهادة إجراء امتحان لتقويم مستوى الخبرة والمهارة في مجالات معيَّنة من وظائف AWS. يجب على شركاء AWS وزبنائها تجديد الشهادة كلّ سنتين. لم إجراء شهادة AWS؟ تقيس الشهاداتُ المعرفة، المهارة والخبرة بمعيار معترف به عالميا؛ وهو ما يضفي صفة رسمية على المؤهلات ويرفع بالتالي من مصداقيتك بين زملاء المهنة والمُوظِّفين الحاليين والمستقبليّين على حد السواء. الحصول على شهادة متخصّصة يزيد من رغبة المُوظِّفين في اكتتاب المترشِّح في سوق عمل الحوسبة السحابية Cloud computing الذي يشهد في الوقت الحالي أزهى فترة مرّ بها. تعدّ AWS بدون شك الخدمات الأكثر طلبا في السوق إن بحجمها، صلابة العروض أو بحصتها في السوق؛ وهو ما يجعل شهاداتها ذات قيمة فعليّة كبيرة. علاوة على ذلك، يشجّع التحضير للشهادة المترشحين على التحسين من خبراتهم بالتعوّد على أجزاء من خدمة AWS لم تُتَح لهم الفرصة للتعامل معها أثناء عملهم اليومي. يمكن أن تكون هذه الأجزاء خدمات لم يسبق لهم استخدامها أو تقنيات وحِيّلا للعمل مع خدمات يستخدمونها دوريا. يحصُل المترشحون بتجاوزهم للامتحان على شهادة تؤكّد نجاحهم وتخوِّلهم استخدام شعار الشهادة على سيرهم الذاتية، في مواقعهم الإلكترونية أو أي مستند مهني آخر. أنواع شهادات AWS تنقسم شهادات AWS إلى ثلاثة أصناف: Solutions Architect (مصمّم حلول)، SysOps Administrator (مدير عمليّات وأنظمة)، وDeveloper (مطوِّر). يتوفر مستويان لكل من الأصناف الثلاثة: Associate (مساعِد) وProfessional (محترف). توجد - في المجموع - خمسة امتحانات إذ يُجمع صنفا SysOps Administrator وDeveloper بالنسبة للمستوى المحترف في امتحان واحد. تتوفّر الامتحانات بلغات عدّة ليست من بينها العربيّة: الإنكليزية، الصينية الميسَّرة، الألمانية، اليابانية، الفرنسية والكورية. تستثنى امتحانات المستوى المحترف التي لا يتوفر منها بغير الإنكليزية سوى صنف Solutions Architect (يتوفر بالإنكليزية واليابانية). Solutions Architect Associate: تتوفر بالإنكليزية، اليابانية، الصينية، الكورية، الفرنسية والألمانية Professional: يتوفر الامتحان بالإنكليزية واليابانية Developer Associate: يتوفر الامتحان بالإنكليزية، الصينية واليابانية Professional: يتوفر الامتحان DevOps Engineer بالإنكليزية فقط SysOps Administrator Associate: يتوفر الامتحان بالإنكليزية، الصينية واليابانية Professional: يتوفر الامتحان DevOps Engineer بالإنكليزية فقط امتحانات شهادات AWS: المؤهلات والمحتوى يتطلب مستوى Associate بالنسبة لجميع أصناف الشهادات سنة واحدة على الأقل من الخبرة المهنية في المجال المطلوب؛ في ما يتطلب المستوى Professional سنتين. إضافة إلى ذلك تتطلب جميع الشهادات أن تكون لدى المترشح معرفة عميقة بواحدة على الأقل من لغات البرمجة عالية المستوى High-level programming language. لا يحتاج المترشح لشهادات مستوى Associate لمتطلبات من ناحية شهادات سابقة أو من حيث التدريب؛ لكنّ امتحانات Professional تحتاج لشهادة Associate من نفس الصنف. تدور اختبارات المستوى Professional عموما حول نفس المفاهيم التي يتطرق لها المستوى Associate، إلا أنها أكثر عمقا وأشد تعقيدا. تُكتب الاختبارات بصيغة أسئلة ذات خيارات وإجابات متعدّدة: توجد خيارات عدة للإجابة، قد تكون من بينها أكثر من إجابة صحيحة. تحوي امتحانات المستوى المساعد 55 سؤالا وتدوم 80 دقيقة. أما امتحانات المستوى المحترف فتدوم 170 دقيقة. شهادات AWS شهادة Soultions Architect (مصمم حلول) تتوجه هذه الشهادة إلى ذوي الخبرة في تصميم تطبيقات وأنظمة موزَّعة Distributed تعمل على منصة AWS. يُقيّم الامتحان قدرةَ المترشّح على التخطيط لأنظمة عاليّة التوفّر High available ومستجيبة للأخطاء Fault tolerent، تهجير بنى قائمة إلى AWS وتقدير الأسعار وتعريف آليات التحكم في السعر. إضافة إلى ذلك، يجب على المترشح أن يُظهر القدرة على اختيار خدمة AWS المناسبة حسب متطلبات البيانات، الحوسبة Computing أو الأمان؛ والتعرف على أفضل الممارسات في استخدام منصة AWS. المستوى المحترف Professional level يُتوقَّع أن تكون لدى المترشحين للمستوى المحترف من شهادة مصمّم حلول AWS القدرةُ على تنفيذ إستراتيجيّات تحكّم في السّعر، توفير دليل لأفضل الممارسات في تصميم بنى تشغّل تطبيقات عدّة أو مشاريع أو على مستوى مؤسسات. يُنتظر من المترشح أيضا أن تكون لديه القدرة على تهجير تطبيقات معقّدة مكونة من طبقات عدة Multi-tier إلى منصة AWS. شهادة المطور Developer تتوجه هذه الشهادة إلى الأفراد ذوي الخبرة في تطوير التطبيقات على منصة AWS وصيانتها. يحوي الاختبار مواضيع مثل اختيار خدمات AWS، استخدام حقيبة تطوير البرامج SDK الخاصة بخدمات AWS للتفاعل معها، تحسين الأداء والأمان على مستوى الشفرة البرمجية. تركّز هذه الشهادة على عدد أقل من الخدمات مقارنة بالشهادة السابقة إلا أنها تتعمق فيها أكثر. شهادة مدير عمليات SysOps Administrator تتوجه هذه الشهادة إلى الأفراد الذين لديهم خبرة في النشر، الإدارة والعمليات على منصة AWS. المواضيع التي يتناولها الامتحان مشابهة لمواضيع شهادة Soultions Architect إلا أن التركيز هنا يكون على جانب تنفيذ العمليات (بدلا من التخطيط لها). شهادة DevOps Engineer (المستوى المحترف) تمثّل هذه الشهادة المستوى الاحترافي لصنفي Developer وSysOps. يجب على المترشح أن يكون حاصلا على إحدى الشهادتين Developer أو SysOps Administrator على الأقل. كما يجب عليه أن يكون ذا خبرة في الأتممة Automation وإجراء الاختبارات برمجيا إضافة لفهم التطوير الرشيق Agile development وطرق التطوير ومنهجياته الأخرى. يهدف الامتحان إلى قياس خبرة المترشح في تموين Provisionning أنظمة التطبيقات الموزَّعة العاملة على منصة AWS، إدارتها وتشغيلها. ينبغي أن يكون المترشح قادرا على تنفيذ أنظمة عالية التوفر، قابلة للتمدّد Scalable، ذاتيّة معالجة الأخطاء Self-healing؛ وإدارتها على منصة AWS. تقيس الشهادة أيضا قدرة المترشح على العمل على أدوات لأتممة الإجراءات وإنشائها؛ إضافة إلى إدارة أنظمة المراقبة Monitoring، المقاييس والسجلات على AWS. كيف تحضر لشهادة AWS؟ تؤكد AWS على أن الخبرة والمهارات المطلوبة للعمل هما أهم أجزاء التحضير لامتحان شهاداتها. يقول Jamie Begin وهو مدون في شبكة Right Brain Networks (مجموعة استشارية لتطوير البرمجيات السحابية) بعد إجرائه لامتحان شهادة Solutions Architect - Associate: "لم تكن هناك أية أسئلة مفخّخة أو حشو. كان من الواضح أن من أعد الامتحان ذو خبرة حقيقية في العمل على AWS؛ وليس من النوع الذي يكتفي بالبحث في الشبكة عن معلومات تافهة وغير واقعية". توجد مواد يمكنها المساعدة في مراجعة المعلومات الضرورية لصقل المعارف حول المفاهيم الأساسية. توفر AWS خطة عمل للامتحان بالنسبة لكل نوع من الشهادات، تحتوي على: أهداف الامتحان. وصف مفصَّل للمهارات، الخبرات والمعارف المنتظرة من المترشح سواءٌ بالنسبة لمنصة AWS أو المعرفة التقنية بصفة عامة. قائمة بتوثيق AWS والدورات المتاحة للتدرب. توزيع درجات الامتحان. شرح حول أنواع الأسئلة. تفصيل المواضيع المدرجة في الامتحان. توجد روابط المستندات المذكورة على الصفحة الخاصة بكل شهادة على موقع AWS. توصي AWS، فضلا عن مراجعة المستندات الموجودة في خطة العمل أعلاه، بقراءة توثيقات AWS ومحتويات قسم الأسئلة الأكثر شيوعًا FAQ. تتضمن الدورات التدريبية المذكورة في خطة العمل دورات حضورية داخل الأقسام، مقاطع فيديو تعليمية على الشبكة والأعمال التطبيقية العملية التي يوفرها موقع qwiklabs.com. توجد أيضا دورات تدريبية لدى أطراف مستقلة عن AWS توفر مقاطع فيديو للتعلّم، أعمالا تطبيقية للتجربة ومواد دراسية أخرى مماثلة في جودتها لتلك التي يوفرها AWS. يختلف التسعير من موقع إلى آخر حسب طريقة التدرب. توفر AWS عينات لأسئلة امتحانات شهاداتها من أجل مساعدة المترشحين في التأقلم مع طبيعة المهارات المطلوبة في الامتحان، مدى عمقها ودرجة تفصيلها. يمكن تنزيل عينات الأسئلة من الصفحة الخاصة بكل شهادة على موقع AWS. تفيد العينات كثيرا في التقويم الذاتي والتعرف على المجالات التي تتطلب من المترشح دراسة أكثر وتركيزا أكبر. قد يكون إجراء اختبارات التطبيقية مفيدا للغوص أكثر في أسلوب الامتحان. تتوفر هذه الاختبارات على الشبكة وحسب الطلب عبر موقع الويب webassessor.com/aws التابع لمعهد الامتحات الذي يدير امتحانات AWS. يجري التسجيل لعينة الاختبارات هذه بنفس طريقة التسجيل في الاختبارات الفعلية للشهادة. يساعد أخذ هذه الاختبارات، فضلا عن التعود على بنية الامتحان ومحتواه، على تقييم جاهزية المترشح لإجراء الامتحان الفعلي للشهادة. تتطلب الاختبارات التطبيقية لمستوى Associate الإجابة عن 20 سؤالا في ظرف 30 دقيقة، وتكلف 20 دولارا؛ أما المستوى المحترف فتتكون الاختبارات من 40 سؤالا تنبغي الإجابة عنها في ظرف ساعة ويكلف الاختبار 40 دولارا. التقدم لشهادات AWS الخطوة الأولى قبل التقدم لنيل إحدى شهادات AWS هي التأكد من توفرك على المعايير المحددة للمستوى الذي تترشح له. التسجيل للامتحان الخطوة التالية هي التسجيل على موقع Web Assessor. ستحتاج للإدلاء بمعلومات للاتصال بك وأخرى تتعلق بمسارك المهني لإنشاء حساب على الموقع. سجل الدخول إلى الموقع بعد إنشاء الحساب، ثم اختر الامتحان الذي تريد إجراءه والموقع الجغرافي الذي تود إجراء الامتحان فيه. تُجرى الامتحانات في مراكز الاختبار التابعة لـKryterion والتي يبلغ عددها حوالي 750 مركزا حول العالم. يجب أن توافق على شروط برنامج الشهادات التابعة لـAWS. يشترط برنامج الشهادات التابع لـAWS الموافقة على أن محتوى الامتحان، بما فيه الأسئلة، الإجابات و/أو المخططات؛ يبقى ضمن الملكية الخاصة والخصوصية لـAWS. لا يجوز حسب هذه الشروط، نسخ محتوى الامتحان أو توزيعه بأية طريقة دون الإذن المكتوب والصريح من AWS. مخالفة هذه القاعدة قد يعرّضك لإبطال أي شهادات قد تتحصّل عليها. اختر وقتا وتاريخا تود خوض الامتحان فيه. تختلف أيام الدوام حسب المراكز، من يوم في الأسبوع إلى كل أيام أسبوع العمل، من الساعة التاسعة صباحا إلى إلى الثالثة والنصف بعد الظهر. تقترح بعض المراكز فترات عمل أيام السبت. يمكنك البحث في قائمة المراكز لإيجاد المركز الأنسب لك من حيث الموقع وتوقيت العمل. كلفة التسجيل لمستوى Associate تبلغ 150 دولارا أمريكيا، فيما تصل إلى 300 دولار بالنسبة لمستوى Professional. يمكن إلغاء الامتحان أو إعادة جدولته دون رسوم على أن يكون ذلك في أجل أقصاه 72 ساعة قبل موعد الامتحان. إلغاء الامتحان أو إعادة جدولته قبل مدة أقل من 72 ساعة من الموعد يجعل المترشح عرضة لرسوم تبلغ 75 دولارا ويتطلب الاتصال بـAWS مباشرة. يخسر المترشحون الذي يتغيبون عن الامتحان دون إلغاء أو إعادة جدولة رسوم التسجيل كاملة. لا يُسمَح في المركز بأية ممتلكات خاصة بالمترشح في مكان الامتحان. سيُطلب منك خلال عملية التفتيش إخراج الجيوب الخارجية للتحقق من خلوها من أي ممنوعات. كما لا يُسمح بمراجع أو أجهزة إلكترونية في مكان الامتحان، وسيتحقق المسؤول من عدم وجود تقنيات قابلة للارتداء. بالنسبة للشهادت من المستوى Professional فيمكنك طلب قلم رصاص وورقة من المراقب؛ تجب إعادة هذه المواد إليه قبل الخروج من المركز. ستحصُل فور إنهاء عملية دفع رسوم الامتحان على رمز السماح الخاص بإجراء الاختبار Test Taker Authorization Code والذي يجب إظهاره للمراقب أثناء الامتحان. تظهر نتائج الامتحان على الشاشة فور الانتهاء منه. سيُطلب منك في مركز الامتحان، علاوة على رمز السماح بإجراء الاختبار، إظهار وسيلتين للتعرف على الهوية تحملان توقيعك. واحدة منهما على الأقل يجب أن تحوي صورة منك؛ رخصة سياقة أو جواز سفر على سبيل المثال. في حال الإخفاق في الامتحان تمكنك إعادة المحاولة ثلاث مرات في العام الموالي ابتداء من تاريخ أول محاولة، على أن يكون الفاصل الزمني بين محاولتين 30 يوما. يجب دفع مستحقات الامتحان كاملة في كل مرة. خاتمة إن كنت من العاملين في مجال الخدمات السحابية والمشغلين لخدمات AWS فمن الجيد لك التفكير في الحصول على إحدى شهادات AWS. المزج بين ما تعلمته أثناء تأدية عملك ومصادر التعلم المتوفرة يسهّل من عملية الحصول على الشهادة بالنسبة لك. ما ستجنيه من حصولك على الشهادة يبرّر الجهد والاستثمار المنجز. ترجمة -وبتصرّف- للمقال A Guide to AWS Certification Exams.