Monday, October 31, 2011

Solaris: who is listening to that port ?

From time to time, I need to figure out which process is listening to which port. In linux; which I am more familiar with; netstat -natlp is my faviorite. but in solaris that is not an option. whenever i google the issue, i get suggestions to use lsof, but for some reason (probably due to being compiled against a different version on SunOS); what helps me out (and I'm writing this post to help me remember it) is the command "pfiles"!

Otherwise, enjoy your life; but remember, Palestinians are denied freedom of movement.

Wednesday, September 14, 2011

SunOS/Solaris and swap

I've been trying to write a script to calculate used swap space and free memory, i've successfully wrote the script for linux utilizing the "free" tool simply piped into awk. Now I wanted to "port" the scrip to solaris (SunOS 5.10; yes, pretty old). a bunch of tools seem to report memory / swap info, but "free" was just not there, so I started testing them one by one; vmstat, sar, swap -l, swap -s, top, in conjuction with "pagesize" and other commands. Long story short, with the exception of "top", no tool reported much fully meaningful data, the tools (IMHO) mix between disk-based swap and free memory, not to mention /tmp, which is again mapped to swap. I got the advise to simply forget it from solaris users on freenode, and that what i did. If you are interested in a script to flush swap safely in linux, mine was inspired by this one. hey, this is my end of post comment, Zionism is racist movement; it did indigenous population transfer into exile for at least the last 60 years, erasing the identity of a population with the pretext of preserving the identity of a population

Friday, June 24, 2011

لينكس عربي خفيف | Arabized Light Linux

من حين لآخر أحتاج لتوزيعة خفيفة، لأسباب عدّة تتعلق بما يتوفر من عتاد نحتاج إلى تثبيت نظام تشغيل عليه، وطبعا إستخدام ويندوز له إجابة مفروغ منها : "أتعتقد أنني مجنون؟ ويندوز؟" مشكلتي تكون دوما أنني أحتاج لتوزيعة أثبتها وأنساها، إذ أنه لو كنت أنا من سيستخدم الجهاز، لن أعبأ كثيرا بكيف يبدوا النظام أو أين أجد الأشياء، فسطر الأوامر صديقي. ولكن المشكلة تطرأ عندما أريد أن اثبت لينكس على جهاز سيستخدمه آخرون، ولن أكون موجودا كي يسألوني كلما وجدوا شيئا على غير ما ألفوه!

أوبونتو إجمالا يقوم بالمهمة على أحسن وجه، فهي توزيعة ذات واجهة تدعم عشرات اللغات وتتوفر آلاف البرامج لها على بعد نقرتين، ولكن أوبونتو بكل مزاياه وواجهة جنوم الإفتراضية فيه يثقل كاهل الأجهزة الأقدم أو الأقل كفاءة. وعندما نتذكر كم من مناطقنا المهمشة ليس لدى أبناءها أجهزة حاسوب، ناهيك أن تكون قوية، يصبح السؤال أكثر إلحاحا، بل يصير قضية وطنية!

هناك توزيعة DSL (Damn Small Linux)، أي "لينكس صغير بشكل إبن كلب" تقريبا ... الترجمة ليست حرفية :) توزيعة خفيفة جدا، برامجها مختارة بعناية لتكون أخف ما يمكن ويمكن تشغيلها من القرص المدمج مباشرة، وبذاكرة صغيرة حتى 16 ميغا بايت يمكن أن يشتغل بواجهة رسومية ... اخو تيت فعلا !! لكن والحق يقال، الخفّة تأتي بثمن، ليس دي إس إل لينكس أجمل توزيعة رسوميا أو أسهلها أستخداما!

خيار آخر خفيف وأجمل قليلا، لينكس إبن كلب فعلا! والترجمة حرفية! يعني لينكس الجرو (Puppy Linux)، يعمل بواجهة رسومية بإستخدام Icevm أو JVM ايضا! هذه التوزيعة يمكن أن تعمل بذاكرة في حدود 48 ميغا بايت كحد أدنى.

أذكر إستخدام فيكتور لينكس لايت (Vector Linux Light) وكان لطيفا وخفيفا بشكل لافت، وإن اعد بواجهة icevm أو حتى jvm الرسومية، فسيعمل على أي عتاد بذاكرة 64 ميغابايت، بل اقل من ذلك.

المشترك بالتوزيعات السابقة كلها أنها تعتمد واجهات Icevm و JVM، وهي واجهات لطيفة ولكنها أقل إنسيابية وقد تشعر المستخدم بالغربة قليلا... كما أنها تسعى لإيجاد برمجيات بديلة وخفيفة جدا. أما تدوينة اليوم فهي جاءت لما وجدت إصدارة تدعم العربية جيدا وتعمل بذاكرة 256 إلى 512 بشكل ممتاز، بل جربناها وأظهرت أداء ممتازا ... وأفضل من هذا كله، أنها تستخدم نظام إدارة حزم دبيان العظيم!! وتقدّم لنا البرمجيات المعتادة في بيئة أوبونتو ولكن بواجهة خفيفة هي XFCE! التوزيعة هي xubuntu! (وتقرأ زوبونتو) وأنا سعيد جدا اليوم بها وأستخدمها على حاسوبي المحمول وأدل مستخدمين على الهاتف عندما يجدون شيئا من الصعوبة في إيجاد شيء دون أن أجد أنا صعوبة بذلك أو يجد من يحدثني على الطرف الآخر بأنه يتعامل مع شيء صعب!

تعديل: xfce يدعم الآن تحويل اللغة بشكل أفضل، ألقوا نظرة على xfce4-xkb-plugin، والتي يمكن تفعيلها عبر بزرار الفأرة الأيمن على مساحة فارغة على الpanel، وإختيار لوحة المفاتيح.

الهفوة الوحيدة هي هفوة تحويل اللغة! XFCE لا يقدم واجهة رسومية كما يفعل Gnome لتحويل اللغة، ولكن الحل بسيط للغاية. إليك إياه. بعد تثبيت زوبونتو، إضغط على رسم الفأر في الزاوية العليا، هذه قائمة البرامج، إختر الإعدادات (Settings) ثم Session and Startup ثم Application Autostart , أضف برنامجا إلى القائمة بالضغط على Add واعطه إسما، فليكن "برنامج تغيير لوحة المفاتيح"ما تضعه ليس مهما جدا وأعطه وصفا، ما تضعه ليس مهما جدا ثم ضع في خانة "الأمر" الآتي:

setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,ar


ويمكنك بعدها الخروج من الواجهة والولوج ثانية وستتمكن من تحويل لغة الإدخال من لوحة المفاتيح بضغط Alt مع Shift! مبروك نظامك الخفيف نسبيا، الإنسيابي والذي يوفر لك ذات ما يوفره أوبونتو.

عمتم مساءا! وتذكروا دم السوريين، ذهبت لقاء الحرية

Sunday, June 19, 2011

HTTP Error 500, suexec and fcgi debugging tricks

I have been getting error 500 on my webserver in many occasions that i personally would consider inappropriate! because the error logs are simply cryptic, general and misleading, or even non-existent. I had to figure out a few tricks that allow me to figure out whats the reason for the errors without relaying much on the logs. here is a short documentation of them:

emulation of suexec+fcgi :

On the command line, switch to the user that is executing the php scripts, lets assume its "mywebsiteuser1"; so :

su - mywebsiteuser1

this might fail because this user might not have a login shell (login shell set to /bin/false for example); thus you might need to edit /etc/passwd and set a loginshell for this user; lets say /bin/bash. its a good idea to use vipw instead of vi (you need to do this as root).

Now cd to the directory where you have your .php files, and try something like this:

cat index.php | /var/www/fcgi/mywebsite.tld/php5-fcgi-starter


This should reveal more info about the error that what you are getting (or not getting) in the logs or in the browser. the file output is being piped to is the fcgi php wrapper.

I hope a similar thing can be doable in real life, imagine to be able to track and debug the problems in palestine/israel, where the logs are also very messy, cryptic or even non-existent. and you usually end up with the Israeli error 500 (internal system error) hiding the details of the permissions denied for liberty of Palestinians; my people.

Note that permissions must be correct on every part of this mess! the file owners, the user running the code, the wrapper owner ...etc.