این آزمون چهار درس بخش «کار حرفهای» را میسنجد. جواب هر سؤال همان لحظه با توضیح نشان داده میشود و نتیجهات در همین مرورگر ذخیره میشود (پیشرفت من).
کدام دستور بکاپ فشردهی پوشهی site را میسازد؟
c = create، z = gzip، f = نام فایل (آخرین فلگ)؛ x باز میکند و t فقط فهرست میدهد.
قبل از باز کردن یک آرشیو tar.gz ناشناس چه میکنی؟
آرشیو بدون پوشهی بالایی فایلها را داخل پوشهی جاری میریزد و فایلهای همنام را بیخبر رونویسی میکند.
gzip report.txt را زدهای. چه شد؟
برخلاف tar، gzip روی یک فایل آن را عوض میکند.
چرا نام بکاپها را با تاریخ مینویسیم و بکاپ را آزمایش میکنیم؟
بکاپی که هرگز بازیابی نشده، فقط یک فایل امیدوارکننده است.
پنج فیلد زمان cron به ترتیب؟
مثلاً 30 8 * * 1-5: ۸:۳۰ صبح دوشنبه تا جمعه.
«* 2 * * *» چه میکند؟
برای یک بار در شب باید دقیقه را بنویسی: 0 2 * * *.
در یک خط crontab علامت % را چطور مینویسی؟
% در cron یعنی خط جدید؛ بدون escape دستور بعد از آن بریده میشود.
کار cron در ترمینال تو درست کار میکند ولی در cron نه. محتملترین علت؟
و خروجی را ریدایرکت کن تا خطا را ببینی.
کجا میبینی cron کاری را اجرا کرد؟
و خروجی خود دستور را در فایل لاگی که ریدایرکت کردهای.
کدام دستور خطاهای یک سرویس را از یک ساعت اخیر نشان میدهد؟
-u سرویس، --since زمان و -p err سطح را فیلتر میکند.
در لاگ یک سرویس «شکستخورده»، به کدام خط نزدیکتر به علت اصلی هستی؟
از اولین نشانهی خطا به جلو بخوان.
tail -f و tail -F برای لاگی که logrotate میچرخاند؟
برای لاگهای چرخان همیشه tail -F.
dmesg چه چیزی نشان میدهد؟
برای خطای دیسک و OOM killer اول dmesg را ببین.
logrotate چرا لازم است؟
قاعدهها در /etc/logrotate.d و اجرا با timer روزانه.
در پروژهی سرور تازه، چرا کاربر sudo شخصی میسازیم و با root کار روزمره نمیکنیم؟
اشتباه یا نفوذ هم با دسترسی کامل محدود میشود.
پیش از بستن ورود با رمز در sshd مهمترین کار؟
اگر کلید کار نکند و نشستها بسته باشند، فقط کنسول میماند.
در فایروال سرور دور، کدام ترتیب درست است؟
سیاست پیشفرض ورودیها را رد میکند؛ بدون قاعدهی SSH اتصالهای جدید ssh هم رد میشوند.
fail2ban میگوید «Currently banned: 1» ولی مهاجم هنوز وصل میشود. اول چه میکنی؟
همیشه از بیرون آزمایش کن و علت را از لاگ بخوان.
با آنچه در این بخش آموختی یک بکاپ خودکار کامل بساز (روی ماشین systemdدار آزمایشی):
۱. اسکریپت /usr/local/bin/lx-nightly.sh: از /srv/data با tar -czf بکاپ فشردهی تاریخدار در /var/backups/nightly بسازد، *.tmp را کنار بگذارد، سلامت آرشیو را با tar -tzf بسنجد و فقط ۳ نسخهی آخر را نگه دارد. موفقیت یا شکست را با logger -t nightly (شکست با سطح user.err) ثبت کند.
۲. با cron (crontab کاربر root) اجرایش کن. چون برای ساعت ۲ شب نمیشود صبر کرد، زمان را «دو دقیقهی دیگر» بگذار و خروجی را در /var/log/lx-nightly.log ببر.
۳. بعد از اجرا ثابت کن: بکاپ ساخته شد، cron اجرا را در syslog ثبت کرد و journalctl -t nightly پیام موفقیت را دارد.
۴. برای /var/log/lx-nightly.log یک قاعدهی logrotate (حداکثر ۴ نسخه، فشرده) بنویس و با logrotate -d آزمایش کن.
۵. خرابی عمدی: /srv/data را موقتاً با mv جابهجا کن، اسکریپت را دستی اجرا کن و ثابت کن journalctl -t nightly -p err علت را نشان میدهد؛ بعد درستش کن.
۶. همهچیز را پاک کن.
راهنمایی
برای زمان cron: date -d '+2 minutes' '+%-M %-H'. در خود اسکریپت % مشکلی ندارد؛ در crontab فقط خود اسکریپت را صدا بزن. برای نگهداشتن ۳ نسخه: ls -1t ... | tail -n +4 | xargs -r rm. برای خطا: logger -t nightly -p user.err "...". برای قاعدهی logrotate حتماً su root adm را (اگر خطای insecure permissions دیدی) بگذار.
راهحل
mkdir -p /srv/data/app /srv/data/tmpecho "دادهی مهم" > /srv/data/app/db.txtecho "موقت" > /srv/data/tmp/cache.tmpcat > /usr/local/bin/lx-nightly.sh <<'EOF'#!/bin/bashsrc=/srv/datadest=/var/backups/nightlymkdir -p "$dest"f="$dest/data-$(date +%F_%H%M).tar.gz"if [ ! -d "$src" ]; then logger -t nightly -p user.err "منبع $src وجود ندارد؛ بکاپ انجام نشد" echo "$(date '+%F %T') خطا: $src وجود ندارد" exit 1fiif tar -czf "$f" --exclude='*.tmp' -C "$(dirname "$src")" "$(basename "$src")" && tar -tzf "$f" > /dev/null; then logger -t nightly "بکاپ سالم ساخته شد: $f" echo "$(date '+%F %T') بکاپ ساخته شد: $f"else logger -t nightly -p user.err "ساخت یا آزمایش بکاپ شکست خورد: $f" echo "$(date '+%F %T') خطا در بکاپ" exit 1fils -1t "$dest"/data-*.tar.gz | tail -n +4 | xargs -r rm -vEOFchmod +x /usr/local/bin/lx-nightly.shwhen=$(date -d '+2 minutes' '+%-M %-H')echo "$when * * * /usr/local/bin/lx-nightly.sh >> /var/log/lx-nightly.log 2>&1" | crontab -u root -echo "== crontab:"; crontab -lecho "(صبر تا اجرای cron...)"sleep 170echo "== ۳) خروجی کار:"; cat /var/log/lx-nightly.logecho "== بکاپها:"; ls /var/backups/nightlyecho "== محتوای بکاپ (فایل cache.tmp نباید باشد):"; tar -tzf /var/backups/nightly/data-*.tar.gzecho "== cron در syslog:"; grep CRON /var/log/syslog | grep lx-nightly | tail -1 | sed -E 's/^[^ ]+ server //' | cut -c1-110echo "== journal با برچسب:"; journalctl -t nightly --no-pager -o cat | tail -1crontab -u root -recho "== ۴) قاعدهی logrotate"cat > /etc/logrotate.d/lx-nightly <<'EOF'/var/log/lx-nightly.log { weekly rotate 4 compress missingok notifempty su root adm}EOFlogrotate -d /etc/logrotate.d/lx-nightly 2>&1 | grep -E 'considering|log does not need|rotating pattern' | head -2echo "== ۵) خرابی عمدی"mv /srv/data /srv/data-broken/usr/local/bin/lx-nightly.shsleep 1echo "-- journalctl -t nightly -p err:"; journalctl -t nightly -p err --no-pager -o cat | tail -1mv /srv/data-broken /srv/data/usr/local/bin/lx-nightly.sh | head -1echo "== ۶) پاکسازی"rm -rf /srv/data /var/backups/nightly /var/log/lx-nightly.log* /etc/logrotate.d/lx-nightly /usr/local/bin/lx-nightly.sh== crontab:14 8 * * * /usr/local/bin/lx-nightly.sh >> /var/log/lx-nightly.log 2>&1(صبر تا اجرای cron...)== ۳) خروجی کار:2026-10-04 08:14:01 بکاپ ساخته شد: /var/backups/nightly/data-2026-10-04_0814.tar.gz== بکاپها:data-2026-10-04_0814.tar.gz== محتوای بکاپ (فایل cache.tmp نباید باشد):data/data/app/data/app/db.txtdata/tmp/== cron در syslog:CRON[18174]: (root) CMD (/usr/local/bin/lx-nightly.sh >> /var/log/lx-nightly.log 2>&1)== journal با برچسب:بکاپ سالم ساخته شد: /var/backups/nightly/data-2026-10-04_0814.tar.gz== ۴) قاعدهی logrotaterotating pattern: /var/log/lx-nightly.log weekly (4 rotations)considering log /var/log/lx-nightly.log== ۵) خرابی عمدی2026-10-04 08:15:45 خطا: /srv/data وجود ندارد-- journalctl -t nightly -p err:منبع /srv/data وجود ندارد؛ بکاپ انجام نشد2026-10-04 08:15:46 بکاپ ساخته شد: /var/backups/nightly/data-2026-10-04_0815.tar.gz== ۶) پاکسازی