چرا گنو/لینوکس رو دوست دارم؟ چون هر ۵ دیقه یه بار بهم می‌گه هیس.

من نه درون‌گرام و و نه برون‌گرا و نه میانه‌رو! چیزی که من هستم یه ترکیبی از برون‌گرایی شدید تو بعضی زمینه‌ها و درون‌گرایی شدید تو بعضی زمینه‌های دیگست. خوب این مشکل من از قسمت برون‌گرام شروع شد! این بود که شروع می‌کردم سر کار با موسیقی که گوش می‌کردم حال کردن و زیادش کردن و باهاش خوندن و اینا… می‌دونین دیگه: همکارا شاکی می‌شن. راه حل؟ می‌خوام از سیستم‌عاملم خواهش کنم هر ۵ دیقه یه بار بهم بگه هیس!

مواد لازم:
۱- یه چیزی که بشه باهاش به دستگاه حالی کرد با یه توالی زمانی مشخص یه کاری انجام بده،
۲- یه چیزی که بهم بگه هیس!

معلومه که سر این رو می‌شه به دمب اون وصل کرد و چیزی که می‌خوام رو داشته‌باشم.

برای انجام منظم کارا cron هست. این یه ابزاره که هر دقیقه یه بار تو سیستم بالا میاد و کنترل می‌کنه باس کاری رو انجام بده یا نه. برای این هم که بدونه چه کاری رو باید کی انجام بده، به فایل متنی رو می‌خونه. البته برای ویرایش اون فایل متنی باید از crontab استفاده بشه. تو فایل محترم متنی چی هست؟ یه سری خط که دستورات هستن. اینم فرمتش:
[bash]
* * * * * /chizi/ke/mikhaim/ejra/she
[/bash]
این ستاره‌ها به ترتیب مال دقیقه، ساعت، روز ماه، ماه و روز هفته هستن. خود ستاره هم یعنی هر. مثلا
[bash]
۳۰ ۰۸ ۱۰ ۰۶ * /home/ramesh/full-backup
[/bash]
یعنی دقیقه سی از ساعت ۸ از روز ۱۰ از ماه ۶، حالا هر روز هفته‌ای که می‌شد یه بکاپ بگیر. خوب cron رو می‌شه به روش‌های مختلف کانفیگ کرد. با یه سرچ کلی چیز میز تو اینترنت می‌شه در بارش خوند (مثلا + و + و +).

خوب حالا دستور ما چیه؟ می‌خوایم ۵ دیقه یه بر هشدار بده دیگه. پس میگیم:
[bash]
*/۵ * * * * /begu/hisss
[/bash]

این تا اینجا. حالا میمونه که بگیم هیس! خوب از قبل می‌دونستم که یه دستوری هست که از تو ترمینال می‌شه یه دیالوگ نمایش داد. یه سرچ می‌زنم و پیداش می‌کنم: zenity. بعد نصب هم خوندن منوالشه و رسیدن به این دستور:
[bash]
zenity –warning –title=”Silence” –text=”Be sure you are respecting others’ privacy.” –timeout=2
[/bash]
این یعنی اینکه یه پنجره به شکل اخطار باز کن که عنوانش باشه «سکوت» و متنش هم «به حریم خصوصی دیگران احترام بزار.». اگرم تا ۲ ثاینه پنجره رو نبستم خودت ببند.

حالا باید همه اینا رو به هم بدوزم. کافیه با crontab فایله رو باز کنم و توش یه خط اضافه کنم:
[bash]
*/۵ * * * * /usr/bin/zenity –warning –title=”Silence” –text=”Be sure you are respecting others’ privacy.” –timeout=2
[/bash]

با لبی خندان منتظر بودم که اسکریپت اجرا بشه، ولی نشد. مشکل؟ یه سرچ زدم و جواب رو پیدا کردم (+ و +). خلاصش این که zenity بنده خدا نمی‌تونسته بفهمه کجا باید پنجره رو نمایش بده. خوب برای حل به فایل .bashrc اضافه می‌کنم:
[bash]
xhost local:YOUR_USERNAME > /dev/null
[/bash]
و یه سوییچ هم به خطی که می‌ره تو cron:
[bash]
*/۵ * * * * /usr/bin/zenity –warning –title=”Silence” –text=”Be sure you are respecting others’ privacy.” –timeout=2 –display=:0.0
[/bash]

والسلام!

پی‌نوشت: لازمه بگم که فاصله زمانیش رو بعدا بیشتر کردم؟ و بعدا هم قطعش کردم؟