آیا شما برای مصاحبه در مورد لینوکس آماده می شوید؟
ما تعدادی از سؤال ها و پاسخ های متداول راجع به لینوکس آماده کرده ایم.
اگر مبتدی هستید (با دانش لینوکس یا با مجوز) یا با تجربه مدیریت حرفه ای لینوکس ، ادامه دهید سوالات و پاسخ های لازم برای تهیه مصاحبه.
1. لینوکس و مؤلفه های اصلی آن چیست؟
لینوکس یک سیستم عامل آزاد و منبع باز است که بر اساس هسته لینوکس ساخته شده است.
این یکی از سیستم عامل های پرکاربرد است ، به خصوص در دنیای سرورها و توسعه دهندگان.
استفاده از آن گسترش می یابد. از میزبانی وب سایت ها و برنامه های کاربردی گرفته تا سیستم عامل اصلی در دستگاه های هوشمند مانند تلفن های هوشمند ، تبلت ها و تلویزیون ها.
Linux دارای 4 مؤلفه اصلی است:
- Kernel : این هسته سیستم سیستم لینوکس است. مسئول تعامل با سخت افزار است
- Shell: Shell واسط بین کاربر لینوکس و هسته است. این پوسته است که دستورات توسط کاربر تعیین می شود و سپس توسط سیستم عامل اجرا می شود.
- کتابخانه های سیستم: برنامه ها یا کارکردهای خاصی هستند که وظیفه اجرای اکثر کارکردهای سیستم عامل را دارند ، بدون اینکه به حق دسترسی به کد ماژول هسته اعتماد کنند.
- برنامه های کاربردی سیستم. اینها برنامه های ویژه ای هستند که وظایف خاصی را انجام می دهند. ، برای مثال ، LibreOffice ، Brasero ، Gparted.
2. هسته لینوکس چیست؟
هسته لینوکس مؤلفه اصلی سیستم لینوکس است.
این سخت افزار اصلی را با سیستم عامل مرتبط می کند.
⏬ چگونه هسته هسته لینوکس را پایین بیاوریم
3. تفاوت بین لینوکس و یونیکس چیست؟
لینوکس یک سیستم عمده سیستم یونیکس است.
اگرچه لینوکس منبع باز و رایگان برای استفاده است ، UNIX یک سیستم عامل اختصاصی است.
تفاوت بین macOS و هسته های لینوکس
4. یک inode در لینوکس چیست؟ چگونه می توان شاخص مربوط به یک فایل را پیدا کرد؟
یک inode (گره فهرست) یک ساختار داده در یک سیستم پرونده ای به سبک یونیکس است که یک شیء سیستم فایل ، مانند یک فایل یا فهرست را توصیف می کند. [19659002] هنگامی که یک پرونده ایجاد می شود ، یک نام و شماره فهرست داده می شود که یک عدد صحیح برای سیستم پرونده است.
🐧 چگونه می توان تعداد کل اینودها را در بخش ریشه دریافت کرد
5. پوسته لینوکس چیست؟ چگونه پوسته فعلی را بررسی کنیم؟
پوسته لینوکس یک مفسر یا برنامه فرمان است که دستورات را می پذیرد و آنها را برای اجرای به سیستم عامل منتقل می کند.
برای بررسی پوسته مورد استفاده ، دستور را اجرا کنید: [19659019] echo 0 $
6. چه دستوراتی برای پیدا کردن میزان حافظه و مبادله مورد استفاده؟
از دستور رایگان

7 استفاده کنید. تفاوت بین یک پیوند سخت و یک پیوند نمادین؟
الف) یک لینک سخت برای دایرکتوری ها ایجاد نمی شود. پیوند سخت فقط برای یک پرونده قابل ایجاد است.
b) پیوندها یا نمادهای نمادین می توانند به یک دایرکتوری پیوند دهند.
ج) حذف پرونده منبع که لینک سخت شما به آن اشاره دارد ، پیوند سخت را حذف نمی کند ؛ لینک سخت هنوز محتوای پرونده اصلی را در اختیار شما قرار می دهد.
d) در صورت حذف لینک سخت یا پیوند نمادین ، منبع منبع بدون آن باقی می ماند
ه) حذف اصلی پرونده لینک نمادهای تو در تو را حذف نمی کند ، اما بدون فایل منبع ، پیوند نمادین بی فایده است
8. درباره مجوزهای پرونده در لینوکس توضیح دهید؟
در لینوکس ، 3 نوع اصلی مجوز پرونده وجود دارد: بخوانید ، بنویسید و اجرا کنید.
این مجوزها می توانند به صورت بازگشتی به یک فایل یا دایرکتوری اختصاص دهند. [19659019] به عنوان یک سیستم چند کاربره ، می توانید این حقوق را به کاربران روت ، گروه ها یا سایر کاربران با استفاده از سیستم اختصاص دهید.
- بخوانید: مجوزهای خوانده شده از توانایی باز و خواندن پرونده استفاده می کند.
- ضبط: مجوز ضبط اجازه می دهد تا کاربر را باز کند ، تغییر دهد یا ویرایش کند
- Run: این به کاربر امکان می دهد یک فایل یا برنامه اجرایی یا اسکریپت پوسته اجرایی را اجرا یا اجرا کند.
🧟♀️ StickyBit ، SUID و SGID در لینوکس با نمونه هایی
9. چگونه یک دایرکتوری در لینوکس ایجاد و حذف کنیم؟
برای ایجاد دایرکتوری ، از دستور mkdir استفاده کنید ، مانند تصویر زیر:
mkdir Directory_name
برای مثال ، برای ایجاد دایرکتوری به نام "داده" ، دستور را اجرا کنید :
mkdir data
برای حذف دایرکتوری در لینوکس ، از دستور rm یا rmdir استفاده کنید.
- از دستور rmdir برای حذف فهرست های خالی استفاده می شود.
- دستور rm معمولاً با پرچم -R برای حذف بازگشتی استفاده می شود. دایرکتوری ها.
10. چگونه می توان در لینوکس فایل ایجاد کرد؟
برای ایجاد پرونده ها ، از دستور touch استفاده کنید.
به عنوان مثال ، برای ایجاد یک پرونده file1.doc ، دستور را اجرا کنید:
touch file1.doc
همچنین می توانید از دستور cat استفاده کنید و به دنبال آن عملگر تغییر مسیر یا علامت بزرگتر از>
و به دنبال آن نام پرونده قرار بگیرید.
سپس محتویات پرونده را وارد کنید و در آخر CTRL + D را فشار دهید تا از پرونده خارج شوید. 19659019] cat> file1.doc
محتویات پرونده را وارد کنید و CTRL + D
11 را فشار دهید. چگونه یک فایل و فهرست را در لینوکس تغییر نام دهیم؟
برای تغییر نام پرونده ها ، از دستور mv استفاده کنید.
توجه: برای این کار ، باید مسیر فایل تغییر نام یابد.
به عنوان مثال ، برای تغییر نام پرونده file1.doc در فهرست / data / files به file2.doc ، دستور را اجرا کنید:
mv /data/files/file1.doc/ data / files / file2.doc
12. چگونه می توان پرونده ها و دایرکتوری را به لینوکس کپی کرد؟
برای کپی کردن فایل ها به لینوکس ، از دستور cp استفاده کنید.
نحو بسیار ساده است:
cp / منبع / از / the / file / مقصد / از / the / پرونده
13. چگونه دستگاه ها را در لینوکس قرار دهیم و نصب کنیم؟
برای مشاهده لیست نقاط سوار ، دستور را اجرا کنید:
df -aTh
برای یافتن اطلاعات بیشتر در مورد نقاط سوار شدن بر روی سیستم خود ، دستور را اجرا کنید:
findmnt
همچنین ، می توانید از دستور گربه استفاده کنید:
همچنین می توانید از دستور mount استفاده کنید ، همانطور که در در زیر نشان داده شده است:
Mount -l
14. چگونه می توان یک فایل خالی را در لینوکس ایجاد کرد؟
برای ایجاد یک پرونده خالی در لینوکس ، از دستور touch استفاده کنید:
new_file را لمس کنید
15. چگونه می توان یک کار را در لینوکس برنامه ریزی کرد؟ crontab چیست و زمینه های crontab را توضیح می دهد؟
Cron یک Daemon است که دستورات را در تاریخ ها و زمان های مشخص در لینوکس اجرا می کند.
شما می توانید از آن برای برنامه ریزی اقدامات به صورت یک زمان استفاده کنید. یا کارهای تکراری.
Crontab برنامه ای است که برای تنظیم ، حذف یا لیست جداول مورد استفاده برای مدیریت cron daemon روی سرور استفاده می شود.
هر کاربر می تواند crontab خود را داشته باشد ، و گرچه این پرونده ها در / var / spool است. / cron / crontabs ، آنها قرار نیست مستقیماً ویرایش شوند I.
در اینجا چند گزینه خط فرمان crontab وجود دارد:
- crontab -e ویرایش پرونده
- crontab -l نمایش پرونده
- crontab -r پرونده را حذف کنید
فرمت سنتی cron از شش فیلد تشکیل شده است که توسط فاصله ها جدا می شوند:
اجرای>
قالب به شرح زیر توضیح داده شده است:
* * * * *
] | | | | | |
| | | | | + – سال (محدوده: 1900-3000)
| | | | + —- روز هفته (دامنه: 1-7 ، 1 – دوشنبه)
| | | + —— ماه سال (دامنه: 1-12)
| | + ——— روز ماه (دامنه: 1-31)
| + ———- ساعت (محدوده: 0-23)
+ ———— مین (محدوده: 0-59)
16. چه دستورات اساسی Vim را می شناسید؟
ببینید راهنماهای ما:
17. چگونه می توان یک فایل باینری را به متغیر $ PATH اضافه کرد؟
$ export PATH = $ PATH: / path / to / the / binary / پرونده
18. دستور Grep و عبارات منظم را توضیح دهید؟
دستور Grep عبارتی است که برای فیلتر کردن نتایج یا خروجی استفاده می شود.
برای مثال ، برای فهرست کردن فهرست ها و جستجو فقط فایل هایی با کلمه "cron" ، دستور را اجرا کنید. :
ls | grep cron
19. چه تفاوتی بین umask و ulimit وجود دارد؟
Umask مخفف عبارت "File پرونده ایجاد کاربر" است ، که تنظیمات ماسک را مشخص می کند ، که مشخص می کند مجوزهای پرونده برای فایلها تعیین شده اند و
و ulimit یک دستور linux داخلی است که کنترل منابع موجود در پوسته و / یا فرآیندهای راه اندازی آن را فراهم می کند.
شما می توانید کاربر را با ویرایش به محدوده خاصی محدود کنید. /etc/securance/limits.conf ، در حالی که ممکن است تنظیمات گسترده سیستم به روز شده در /etc/sysctl.conf
20. خروجی فرمان ls را در لینوکس توضیح دهید؟
دستور ls محتویات یک فهرست را در لینوکس نشان می دهد.
این پرونده ها و زیر شاخه ها را درون یک دایرکتوری نمایش می دهد.
هنگامی که از آرگومان های دیگر استفاده می شود ، می تواند مجوزهای پرونده را لیست کند و حتی پرونده های مخفی را به نمایش بگذارد.
21. در مورد خروجی دستور برتر در لینوکس توضیح دهید؟
دستور بالا یک ابزار نظارت است که به شما می دهد از معیارهای سیستم مانند زمان های uptime ، میانگین بار ،٪ CPU و٪ استفاده از حافظه به کاربر ایده دهد.
22. حالات فرایند در لینوکس چیست؟
حالت های فرایند ، همانطور که از نام این محصول پیداست ، به وضعیت فعلی روند لینوکس اشاره دارد.
4 حالت از فرآیند وجود دارد ، یعنی: شروع ، صبر کنید ، متوقف شوید و زامبی ها.
23. چگونه از فایلهای نسخه پشتیبان تهیه یا بایگانی در لینوکس (فرمان tar) استفاده کنیم؟
برای تهیه نسخه پشتیبان از فهرست ، کافیست دستور tar را اجرا کنید:
$ tar -cvf tarball_name.tar / path / to / فهرست
به عنوان مثال ، برای ایجاد بایگانی tar.gz از پرونده sales.txt در / داده / گزارش / مسیر ، اجرای:
$ tar -cvf sales.tar.gz /data/reports/sales.txtociation19459018†►19459006]
همچنین می توانید کل کاتالوگ را همانطور که در اینجا نشان داده شده بایگانی کنید:
$ tar -cvf repors.tar.gz / data / گزارش /
24. چگونه متوقف کردن یک فرایند در حال اجرا در لینوکس؟
برای متوقف کردن یک فرایند در حال اجرا ، از دستور kill به دنبال PID این فرآیند استفاده کنید.
به عنوان مثال ، برای متوقف کردن روند با PID 3836 ، اجرای دستور
3838
25. چگونه می توان فایلها را در لینوکس جستجو کرد؟
برای جستجوی فایلها در لینوکس ، از دستور find یا find استفاده کنید
👸 چگونه می توان از دستور find در Linux استفاده کرد تا فایلها را جستجو کند
26. چگونه می توان بررسی کرد که یک سرویس خاص کار می کند؟
برای بررسی اینکه سرویس در حال کار است ، از نحو استفاده کنید: systemctl status service_name
به عنوان مثال ، برای بررسی اینکه آیا Postfix کار می کند ، دستور را اجرا کنید: systemctl status postlix
27. چگونه می توان سرویس را از طریق راه اندازی مجدد شروع کرد؟
برای شروع سرویس در زمان راه اندازی مجدد ، از نحو استفاده کنید:
systemctl را فعال کنید service_name
به عنوان مثال ، برای شروع وب سرور httpd پس از راه اندازی مجدد ، اجرای
systemctl httpd
28 را فعال کنید. چگونه خدمات را شروع و متوقف کنیم؟
برای شروع سرویس بر روی سیستم ، دستور را اجرا کنید:
systemctl start service_name
به عنوان مثال ، برای شروع سرویس ssh ، دستور را اجرا کنید:
برای متوقف کردن سرویس ، اجرا کنید:
systemctl stop service_name
برای جلوگیری از شروع SSH:
systemctl stop sshd
29. چگونه از راه دور به یک رایانه دیگر لینوکس وارد شویم؟
می توانید با استفاده از SSH یا سرویس VNC به یک کامپیوتر از راه دور لینوکس وارد شوید.
30. چگونه می توان میزان استفاده از دیسک را بررسی کرد؟
با استفاده از دستور df می توانید فضای مورد استفاده در دیسک سخت خود و همچنین فضای باقی مانده / آزاد را بررسی کنید.
علاوه بر این ، از دستور du برای بررسی استفاده استفاده کنید پرونده ها و دایرکتوری های خاص.
31. چرا از دستور صادرات استفاده می شود؟
برای صادر کردن برچسب های فرمان و متغیرهای محیط صادرات.
32. چگونه نسخه هسته را از چندین سرور لینوکس با استفاده از اسکریپت bash دریابیم؟
#! / bin / bash
# لیست کاربر سرور متغیر کاربر برای نگه داشتن مسیر برای پرونده با نام سرور
لیست سرور = 'server_list.txt'
# ما را در لیست متغیرهای سرور متغیر می نویسیم
سرورها = 'فهرست گربه سرور $'
# ما از نتیجه متغیر استفاده می کنیم تا مسیر پرونده را با نتیجه حفظ کنیم
result = 'result.txt'
# این هدر چاپ برای اضافه کردن 2 نماد زبانه با استفاده از res
echo -e "سرور نام نسخه هسته"> $ نتیجه
# اینها هر خط لیست سرور را یک به یک دریافت می کنند و به متغیر سرور می نویسند
برای سرور در سرورهای $
انجام
# این با ssh به سرور وارد شوید و uname -r را دریافت کنید
kernel = `ssh root @ $ {server}" uname -r "`
# این نام سرور و نسخه هسته را برای نتیجه پرونده با 2 برگ جدا می کند
echo -e "$ server" t t $ kernel ">> $ result
#end for loop.
انجام شده
33. حداقل الزامات لازم برای نصب لینوکس چیست؟
با توجه به اینکه توزیع های جدید لینوکس یک بار در هفته یا ماه یک بار راه اندازی می شود ، حداقل نیازهای روشن وجود ندارد.
نسخه های جدیدتر نیاز دارند. حداقل نیازهای بالاتر از نسخه های قدیمی تر به دلیل ویژگی های به روز شده و معماری GUI.
بهترین توزیع های لینوکس در سال 2019
با این وجود ، هر توزیع لینوکس باید با رایانه شخصی با حداقل شرایط زیر کار کند: ]
25 گیگابایت فضای دیسک سخت رم 2 گیگابایتی پردازنده دو هسته ای 2 گیگاهرتزی وضوح صفحه نمایش با وضوح 1024x768 ROM CD / DVD یا پورت USB برای درج رسانه نصب
34. چگونه می توانم مجوزها را برای پرونده ها و دایرکتوری های لینوکس تنظیم کنم؟
برای تنظیم مجوز برای یک پرونده ، از دستور chmod ، سپس یک مقدار اکتال یا نمادین و سپس نام پرونده یا نام فهرست استفاده کنید.
برای مثال ، مجوزها را به پرونده اختصاص دهید. 664:
نام پرونده chmod 664
برای اختصاص مجوزها به یک فهرست ، از گزینه -R برای اختصاص مجوز به صورت بازگشتی استفاده کنید.
chmod -R 664 Directory_name
35. چگونه می توان مالک پرونده ها / دایرکتوری ها را تنظیم کرد؟
برای تنظیم مالک پرونده ، از دستور chown استفاده کنید.
chown user: name name user
برای فهرست راهنما ، از گزینه -R برای اختصاص مجوزهای بازگشتی استفاده کنید. . به عنوان مثال
کاربر چمن - R: دایرکتوری کاربر_ نام
36. چگونه یک کاربر و گروه در لینوکس ایجاد کنیم؟
برای ایجاد یک کاربر ، دستور adduser user_name را اجرا کنید:
گیرنده Radyga
37. چگونه نسخه هسته / سیستم عامل را در لینوکس بیابیم؟
دستور uname -a
38 را اجرا کنید. چگونه آدرس IP رابط را پیدا کنم؟
شما می توانید با اجرای ifconfig رابط کاربری_name یا با استفاده از دستور ip (توصیه شده) رابط IP را پیدا کنید.
مثال:
ifconfig eth0
ip addr show
39. تصویر اولیه چیست؟
دیسک رم اولیه (اولیه) سیستم فایل ریشه منبع است که قبل از در دسترس بودن سیستم پرونده ریشه واقعی نصب شده است.
Initrd به هسته وصل می شود و به عنوان بخشی از روش بوت هسته بارگیری می شود.
هسته سپس این آغاز را به عنوان بخشی از یک فرآیند راه اندازی دو مرحله سوار می کند تا ماژول ها را بارگذاری کنند تا سیستم های پرونده واقعی در دسترس قرار بگیرند و به سیستم فایل اصلی دسترسی پیدا کنند.
بنابراین ، تصویر اولیه یک نقش اساسی را بازی می کند نقش مهمی در فرایند بوت لینوکس است.
40. اصطلاحات suid ، sgid و sticky bit را توضیح دهید؟
علاوه بر حقوق اساسی پرونده ها در لینوکس ، چندین مجوز ویژه برای پرونده های اجرایی نیز وجود دارد و فهرست [SUID]
SUID: اگر بیت تنظیم شده تنظیم شود هنگام اجرای پرونده توسط کاربر ، این فرآیند همان حقوق صاحب پرونده اجرایی را خواهد داشت.
SGID: همان موارد فوق ، اما امتیازات گروهی پرونده را هنگام اجرا به ارث می برد ، نه امتیازات کاربر. به همین ترتیب ، هنگامی که شما یک پرونده را در دایرکتوری ایجاد می کنید. ، این مالکیت گروهی از دایرکتوری ها را به ارث می برد.
بیت مهم: بیت Sticky در اجرایی لینوکس مورد استفاده قرار گرفت تا بعد از اجرای اولیه بیشتر در حافظه بمانند ، امیدواریم که در آینده نزدیک به آنها احتیاج پیدا کنند. پشتیبانی stickybit فقط توسط مالک قابل حذف است. اجرای بیت بسیار مهم چسبنده / tmp است ، که در آن هر کاربر مجوز نوشتن دارد ، اما فقط کاربرانی که این فایل را دارند ، می توانند آن را حذف کنند.
41. سطح زیرین linux چیست و چگونه می توان آنها را تغییر داد؟
runlevel حالت اولیه و کل سیستم است ، که تعیین می کند سرویس های سیستم در حال اجرا هستند و تعداد آنها مشخص شده است.
7 مختلف وجود دارد. runlevels (runlevel 0-6) بر روی سیستم لینوکس برای اهداف مختلف.
توضیحات زیر آورده شده است.
0: Halt System (برای خاموش کردن سیستم) 1: حالت کاربر واحد 2: حالت اصلی چند کاربره بدون NFS 3: حالت چند کاربره کامل (مبتنی بر متن) 4: استفاده نشده 5: حالت چند کاربره با رابط کاربری گرافیکی 6: سیستم راه اندازی مجدد
برای تغییر سطح اجرا ، پرونده "/ etc / inittab" را ویرایش کنید و ورودی filldefault را تغییر دهید (شناسه: 5: initdefault :).
اگر می خواهیم سطح پرتاب را در پرواز تغییر دهیم ، این کار می تواند با استفاده از دستور “init” انجام شود.
به عنوان مثال ، هنگامی که "خط 3" را در خط فرمان وارد می کنیم ، این سیستم را از حالت فعلی جریان به runlevl 3 منتقل می کند.
سطح فعلی را می توان با تایپ کردن "چه کسی"
مشاهده کرد
42. SeLinux چیست؟
SELinux مخفف لینوکس پیشرفته امنیتی است.
این یک عملکرد کنترل دسترسی و ویژگی امنیتی هسته هسته لینوکس است.
این به منظور محافظت از سرور از نادرست طراحی شده است. настройки и / или скомпрометированных демонов.
Он устанавливает ограничения и инструктирует серверные демоны или программы, к каким файлам они могут обращаться и какие действия они могут предпринимать, определяя политику безопасности.
43 . Что такое dev/null ?
у нас еть целая статья про это:
♾️ Что такое /dev/null в Linux?
44. В чем разница между виртуальным хостингом на основе имени и виртуальным хостингом на основе IP?
Виртуальные хосты используются для размещения нескольких доменов на одном экземпляре Apache.
Вы можете иметь один виртуальный хост для каждого IP-адреса вашего сервера, или один и тот же IP-адрес, но разные порты, или один и тот же IP-адрес, один и тот же порт, но разные имена хостов.
Последнее называется «ame based vhosts».
На виртуальном хостинге на основе IP мы можем запустить более одного веб-сайта на одном сервере, но ка ждый веб-сайт имеет свой IP-адрес, в то время как в виртуальном хостинге на основе имен мы размещаем несколько веб-сайтов на одном IP-адресе.
Но для этого вам нужно поместить более одной записи DNS для вашего IP-адреса в базу данных DNS.
45. Что такое переменные среды?
у нас еть целая статья про это:
🐧 Как установить и перечислить переменные среды в Linux
46. Какое использование файлов /etc/passwd и /etc/shadow?
Файл /etc/shadow хранит действительный пароль в зашифрованном формате с некоторыми дополнительными свойствами, связанными с паролем пользователя.
В основном он учитывает параметры старения. Все поля разделены двоеточием (:).
Он содержит одну запись на строку для каждого пользователя, указанного в файле /etc/passwd.
47. Зачем устанавливать безпарольный вход по ssh?
Чтобы еще больше повысить безопасность системы, большинство организаций решили использовать аутентификацию на основе ключей вместо аутентификации на основе пароля.
Мы можем обеспечить аутентификацию на основе ключей, отключив стандартную аутентификацию по паролю.
Открытый ключ добавляется в файл конфигурации сервера, в то время как личный ключ остается конфиденциальным на стороне клиента.
48. Что такое swappiness в Linux?
Параметр swappiness контролирует стремление ядра перемещать процессы из физической памяти на диск подкачки.
Поскольку диски намного медленнее ОЗУ, это может привести к более медленному времени отклика для системы и приложений, если процессы слишком агрессивно перемещаются из памяти.
swappiness может иметь значение от 0 до 100
swappiness = 0 говорит ядру избегать выгрузки процессов из физической памяти как можно дольше
swappiness = 100 говорит ядру агрессивно выгружать процессы из физической памяти и перемещать их в кеш подкачки
49. Кэш и буфер на Linux
у нас еть целая статья про это:
В чем разница между кешем и буфером в Linux?
50. В чем разница между apt и apt-get?
у нас еть целая статья про это:
Разница между apt и apt-get
Заключение
В этой статье мы показали наиболее ожидаемые вопросы на собеседовании про Linux.
Помимо этих вопросов, вы должны быть готовы объяснить ежедневные задачи Linux, проекты, некоторые критические ситуации, с которыми вы столкнулись. Удачи!!