smalinux / dotfiles

4 stars 0 forks source link

configfiles tracker #12

Open smalinux opened 2 years ago

smalinux commented 2 years ago

ملفات الـ config بالنسبالى بعتبرها ملفات قيمه جدا ومهمة ... زى مثلا htoprc فيه زى htroprc ملفات كتيره جدا لبرامج كتيره جدا.. وللأسف مش كلها موجوده تحت مكان واحد زى .config انا مثلا عندى config تحت /var/lib/pcp/pmdas//.conf لكن لأن دى ملفات نوعا ما حساسه لبرامج مش بشتغل غير بصلاحيات الروت. وبالتالى صعب اتابع كل الـ configs بتاعت كل البرامج .. غالبا هيكون عندى list كبيره لأماكن كتيره...

انا حابب اتابع تطور وتغير الملفات دى جوا النظام بتاعى... عايز اتابع الملفات دى واحط عليها مخبر يراقبها طول الوقت. ولو واحد فيهم اتغير ياخد منه backup ويحدثهولى... غالبا الناتج هيكون عندى عباره عن repo خاصه بنفسها زى الـ dotfiles هيكون اسمها مثلا configfiles

محتاج اعمل daemon يشتغل طول الوقت فى الـ background يصحى بعد ما افتح الجهاز مثلا بساعه... ويقارن الملفات دى ولو فيه تغيير حصل يعمل commit و push الـ commit هنا ماينفعش يكون فيه اكتر من ملف واحد بس.. واسم كل commit هيكون فيه اسم الملف اللى حصل فيه التغيير.

فائده الكلام ده كله.. لما اعمل نظام جديد.. هيكون عندى already كل ملفات الـ configs بتاعتى... واقدر آخر منها .. غير ان الموضوع مثير للفضول.. وانتى لو قدرت انظم الموضوع ده فعلا واعمل عليه control جامد جدا.. من غير ما اى ملف يقع منى هقدر بسهوله وقت لما يحصل خلل فى performance بتاع برنامج معين ارجع واشوف التاريخ بتاعه واشوف هل الـ configs بتاعته اتغيرت فى آخر كام شهر ولا لا. وكمان الـ version بتاع الـ app نفسه اتغير ولا لا... واقدر احدد الخلل حصل فين..

smalinux commented 2 years ago

كان فيه برنامج BPF تحفه .. اتكلم عنه brendangregg مش فاكر اسمه دولقتى.. كان بيخليه يقدر يـ trace اى برنامج ويعرف ايه الـ files اللى فتحها.. وبكده اقدر بسهوله اوصل لكل الأماكن اللى الـ app ده بيقرأ او يكتب فيها...

hulxv commented 2 years ago

أعذرني على التطفل لأني نوعاً ما حاسس أن دي حاجة خاصة بيك بس الفكرة شفتها عندك من فترة وبخطط أعملها كبرنامج كده بس المشكلة اللي قعدت أفكر فيها ووصلت لحل نوعاً ما مش سيء --كل ده في مخي ومبدأتش على أرض الواقع--

والمشكلة هي أن طبعاً زي ما أنت عارف الأغلب دلوقتي بيستعمل ssh-key ومتقدرش تعمل push غير بالkey ده ولازم تكتب الpassphrase في كل push تعمله

وده هيسبب عائق لأن الdaemon يشتغل فالحل اللي فكرت فيه هو إنه يكون في مثلا ملف بيتعمله generate عن طريق أن اليوزر يدي أمر معين للبرنامج ويديله الpasspharse كargument والبرنامج يشفره ويحطه في الملف ده وكل عملية push البرنامج هيفك التشفير ويستعمله وهكذا

معرفش الصراحة هل ده أحسن حل ولا لا لذلك كنت عاوزك تقول رأيك في الموضوع ده :)

smalinux commented 2 years ago

سعيد انك اتحمست للفكره دى. @Hulxv اللى انا فهمته من كلامه انك بتتكلم بس عن فكره الـ daemon اظن دى مش مشكله كبيره اوى, انا بصراحه مافكرتش فى تفاصيل الـ daemon ده. بس انا عندى فى لينكس بقدر اعمل cache للـ ssh-key forever وبقدر اعمل push طول الوقت من غير اى مشكله ولا بيطلب منى user & password ممكن تراجع الـ .gitconfig بتاعى... شوف كمان اللينك ده: https://stackoverflow.com/a/5343146/5688267

المشكله الحقيقيه مش فى الـ daemon ,, لكن فى موضوع انك تعرف ملف الـ config لكل برنامج انت مهتم بيه ,,, تعرف strace ؟ ممكن بـ strace تقدر تحدد برنامج معين وتشوف البرنامج ده استخدم syscalls ايه... من ضمن الـ syscalls دى فى open syscall دى هتلاقى فى الـ params بتاعتها اسم وامتداد الملف اللى اتفتح.. وكذلك write syscall حاليا strace مش هو احسن حل, الـ bpf tools اسرع و optimal اكتر.. فيه اداة bpf انا مش فاكر اسمها بتقدر تديها اسم برنامج معين وليكن htop مثلا.. وهى بتقولك ايه كل الملفات اللى htop فتحها... وكمان كتب فيها.. كل اللى المفروض يحصل انك تاخد الـ output من الأداه دى وتاخد مسار الملفات دى وتعمله copy تحت backup dir وبعدين تعملها push

ده ملف بيسط جدا بيعمل push ,, لما بس بكتب make فى الـ terminal المفروض الـ deamon هو اللى يـ run ده اوتوماتك وينظم الموضوع اكتر ويكتب commit message محترمه. https://gist.github.com/smalinux/72249469e922f6963ae960151797539e#file-makefile

ممكن تفكر ان لو الـ deamon فشل انه يعمل push يبعتلك ايميل يقولك انه مش عارف يعمل push مثلا...

الاداة بتاعت الـ bpf اتذكرت فى الفديوه ده https://youtu.be/JRFNIKUROPE ممكن ابقى اتفرج تانى على الفديو ده واقولك بالضبط على اسم الاداه واصورلك فيديو ليك واشرحهالك بشكل مبسط فى المستقبل...

كمان حسب فلسفه unix اللى بتقول do one thing and do it good ممكن فعلا تفكر فى موضوع الـ daemon كحاجه abstract بعيداً على الـ configfiles ...

hulxv commented 2 years ago

الصراحة انا موضوع الbpf مش فاهمه حبتين بعد حبة بحث لقيت أنه بيستخدم بطريقة ما لتحليل الأداء والصراحة عشان مكدبش عليك فأنا مفهمتش هو عبارة عن إيه بالضبط هل هو مكتبة او برنامج او حتى مفهوم بتتبني عليك برامج بس اللي فهمته أنه مستخدم في لينكس وفي شركات زي نتفليكس بتستخدمه

فياريت لو في شرح للموضوع ده سواء فيديو او مقالة هكون شاكر ليك

بس ليه أساساً ممكن نستخدمه في البرنامج ؟ هيفيدنا في ايه بالضبط ؟

smalinux commented 2 years ago

اعتقد صعب نوعاً ما تفهم او تتخيل الـ bpf غير بعد ماتفهم اساسيات الكيرنال وتكتب كام kernel module لذلك نصيحتى انك تجاهل الجزء ده تماماً دلوقتى : ) وتركز على الاساسيات الأول...

لو في شرح للموضوع ده سواء فيديو او مقالة

كل حاجه كتبها Brendan Gregg وكل فيديو هو عمله حلوين كبدايه

بس ليه أساساً ممكن نستخدمه في البرنامج ؟

حاليا الـ bpf تعتبر زى المنظار الطبى, علشان تمسك برنامج وتتعامل معاه كـ blackbox من غير ماتقرأ ولا سطر كود وتشوف هو عمل بالضبط ايه فى النظام وغير ايه ...

hulxv commented 2 years ago

تمام شكراً ليك جداً ولو حصل اي جديد أو تخطيط للبرنامج هبقى اكتبلك كومنت هنا 😄 وإن شاء الله هبقى أشوف موضوع الbpf ده وازاي ممكن أستفيد منه وشكراً تاني على كل اقتراحك ❤️