رفتن به محتوا
LoopX

آزمون پایانی دوره‌ی Bash

این آزمون هر سه بخش دوره‌ی Bash را با ۳۰ سؤال سناریویی می‌سنجد؛ شبیه موقعیت‌هایی که سر کار واقعاً پیش می‌آید. بعد از هر پاسخ، جواب درست و توضیح را می‌بینی و نتیجه‌ی نهایی در پیشرفت من ذخیره می‌شود. نمره‌ی ۲۴ از ۳۰ یا بیشتر یعنی می‌توانی اسکریپت‌های واقعی و قابل‌اعتماد برای سرور بنویسی؛ پایین‌تر از آن، درس‌هایی را که سؤال‌هایشان را غلط زدی مرور کن. قدم بعدی دوره‌ی Git است.

؟ آزمون پایانی دوره‌ی Bash
  1. اسکریپتی که روی لپ‌تاپ مک کار می‌کند، روی سرور Ubuntu با sh script.sh خطای «Syntax error: "(" unexpected» می‌دهد. محتمل‌ترین علت؟

  2. کدام خط اسم فایل بکاپ را با تاریخ امروز درست می‌سازد؟

  3. اسکریپتی با ./run.sh "my file.txt" صدا زده می‌شود و داخلش cat $1 خطای «No such file» برای my و file.txt می‌دهد. اصلاح؟

  4. می‌خواهی اسکریپت رمز را بدون نمایش روی صفحه بپرسد. کدام؟

  5. شرط درست برای «اگر فایل وجود دارد و خالی نیست» کدام است؟

  6. used=85 و limit=9. شرط [[ $used > $limit ]] چه می‌گوید و چرا؟

  7. اسکریپت مدیریت سرویس case "$1" in ... دارد. کاربر Start (با S بزرگ) می‌زند و usage می‌بیند. ساده‌ترین راه پذیرفتن هر دو؟

  8. for f in *.jpg; do mv "$f" "$(date +%F)-$f"; done را دو بار پشت هم اجرا کردی. نتیجه؟

  9. while read line; do ...; done < hosts.txt خط‌هایی که بک‌اسلش یا فاصله‌ی اول دارند را خراب می‌کند. شکل درست؟

  10. تابع get_ip با echo آدرس را برمی‌گرداند و با return 1 اعلام شکست می‌کند. کدام کد هر دو را درست استفاده می‌کند؟

  11. داخل تابعی نوشته‌ای local out=$(curl -sf "$url") و حتی وقتی curl شکست می‌خورد، اسکریپت با set -e ادامه می‌دهد. چرا؟

  12. servers=("web 1" db cache) و می‌خواهی به هر کدام ping بزنی. کدام حلقه درست است؟

  13. آمار درخواست‌ها به تفکیک کد وضعیت HTTP را می‌خواهی در خود اسکریپت بشماری. چه ساختاری؟

  14. file=/var/log/nginx/access.log.1 و می‌خواهی فقط access.log.1 (بدون مسیر) را بدون اجرای basename بگیری. کدام؟

  15. here-doc برای ساخت فایل nginx نوشته‌ای و در فایل نهایی proxy_set_header Host ; (خالی) آمده. علت و اصلاح؟

  16. اسکریپتی در cd /data/cache && rm -rf * را اصلاح کرده‌ای به: cd /data/cache; rm -rf *. چه خطری اضافه کرده‌ای؟

  17. با set -euo pipefail، دستور errors=$(grep -c ERROR app.log) وقتی هیچ ERROR نیست چه می‌کند؟

  18. اسکریپتی فایل موقت با mktemp می‌سازد. کجا trap cleanup EXIT را ثبت می‌کنی؟

  19. اسکریپت را با kill -9 بستی و فایل‌های موقتش ماند، با اینکه trap EXIT داشت. چرا؟

  20. اسکریپتی در cron با کد ۱۴۳ تمام شده. معنی‌اش چیست؟

  21. می‌خواهی اسکریپت بکاپ این شکل را بپذیرد: backup.sh -v -k 14 -o /mnt/b /data /etc. درست‌ترین ابزار و رشته؟

  22. تابع parse_args که getopts دارد، در یک اسکریپت دو بار صدا زده می‌شود و بار دوم هیچ گزینه‌ای نمی‌خواند. راه‌حل؟

  23. اسکریپتی گاهی فایل را کامل نمی‌سازد و نمی‌دانی چرا. اولین کار حرفه‌ای؟

  24. trace اسکریپت دیپلوی با set -x در لاگ CI منتشر می‌شود و یک توکن API دارد. کار درست؟

  25. shellcheck روی for f in $(ls *.csv) هشدار SC2045 می‌دهد. جایگزین درست؟

  26. در crontab نوشته‌ای 0 2 * * * tar -czf /backup/$(date +%F).tgz /data و فایل ساخته نمی‌شود. محتمل‌ترین علت؟

  27. دو نسخه از اسکریپت بکاپ همزمان اجرا شده‌اند و آرشیوها خراب‌اند. ساده‌ترین جلوگیری؟

  28. چرخش بکاپ با find /backups -name "*.tar.gz" -mtime +7 -delete. بعد از یک هفته که بکاپ‌گیری شکست خورده، چه خطری هست؟

  29. اسکریپت بررسی سلامت باید به یک سیستم مانیتورینگ (مثل Nagios) وصل شود. چه قراردادی برای کد خروج؟

  30. بکاپ شبانه هر شب «موفق» گزارش می‌شود. از کجا مطمئن می‌شوی واقعاً قابل استفاده است؟