دلیل باز نشدن برنامه Visual Studio Code یا WhatsDesk در اوبونتو

امروز اومدم با VS Code کار کنم ولی هرچی میزدم برنامه باز نمیشد از دیروز هم whatsdesk اجرا نمیشد! خب این از چالش های Ubuntu هستش و وقتی میخوای اخت بگیری با یک سیستم عامل بهتره همه قلق هاشو یاد بگیری.

مدتی بود VS Code  بهم خطای  “System limit for number of file watchers reached” رو میداد و برطرفش نکردم. تا اینکه امروز کلا Visual Studio Code اجرا نشد نشد و فراموش کردم خطایی که نمایش میداد چی بود! اول فکر میکردم بخاطر فولدر vendor نوتیف میداد اما با سرچ vs code is not runnig ubuntu از اینجا Cannot open Visual Studio Code این نتیجه رسیدم که برای مشاهده لاگ اجرای VS Code از دستور زیر میشه استفاده کرد:

که با اجرای اون به خطای زیر رسیدم:
Error: ENOSPC: System limit for number of file watchers reached, watch '/snap/code'با جستجوی متن خطا “System limit for number of file watchers reached” به صفحه React Native Error: ENOSPC: System limit for number of file watchers reached رسیدم. گویا این خطا ربطی به vs code نداره و بخاطر inotify watch هست. اول بیاین خطا رو درست کنیم بعد بقیه رو توضیح میدم. برای اینکه ببینید تنظیم فعلی سیستمتون برای دنبال کردن فایل ها چقدر هست این دستور رو بزنین:

احتمالا عددی حدود ۸ هزار میده. خب وقتی شروع به نصب برنامه ها مثل whatsdesk (نسخه غیر رسمی whatsapp) یا vscode در اوبونتو میکنین این برنامه نیاز دارن بعضی فایل ها رو دنبال کنن اصطلاحا ترک کنن. اینکار توسط watch انجام میشه و محدودیت هایی براش وجود داره. برای رفع خطا کد زیر رو بزنین

این کد به انتهای فایل /etc/sysctl.conf مقدار fs.inotify.max_user_watches=524288 رو اضافه میکنه.

رفع مشکل باز نشدن برنامه ها در لینوکس اوبونتو

همین! الان برنامه هایی که باز نمیشدن راحت باز میشن!

حالا بریم سراغ اینکه inotify watch چی هست؟
اول از همه باید بدونیم خود inotify چی هست. inotify از ترکیب inode notify تشکیل شده و یک زیر سیستم (subsystem) هسته لینوکسه که تغییرات فایل های سیستم رو مشاهده میکنه و از طریق api اونها رو به برنامه های سطح بالاتر اطلاع میده. watch هم این وسط فایل ها رو برای تغییرات دنبال میکنه و هر تغییری رو ارسال میکنه به inotify.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

12 − چهار =