تبليغاتX
SuSE Linux

SuSE Linux

همه چيز راجع به SuSE لينوكس

فشرده سازی فایل ها با Zip

مي خوام يه كم در مورد آرشيو كردن و فشرده كردن و اين چيزا حرف بزنم. حتما براي هر كدوم از ما اين مسئله پيش مياد كه بخواهيم تعدادي فايل رو از روي يك سيستم لينوكس به جاي ديگه انتقال بديم يا مثلا چيزي كه براي خود من پيش اومد، مي خواستم سر يك ساعتي يك فولدر با كليه محتواش رو آرشيو و فشرده كنم تا از طريق مثلا يك سرويس دهنده سمبا ديگرون بتونن اون آرشيو را از روي يك ماشين ويندوز بردارن.
خب، اون قسمت اول كه توي cron صحبتش رو كرديم. ولي براي آرشيو كردن و فشرده سازي روش هاي مختلفي توي لينوكس هست، مثل zip ،tar ،bzip ،gzip و .... از اونجايي كه فايل هاي زيپ توسط ويندوز XP بدون احتياج به برنامه اضافي و جانبي مي تونن مورد استفاده قرار بگيرن، من در اينجا نحوه زيپ كردن فايل ها و فولدرها رو مي گم:

ساده ترين حالت فشرده سازي يك فايل تكي است:

zip zip_file.zip original_file.ext

براي فشرده سازي بيش از يك فايل:

zip zip_file.zip original_file1.ext original_file2.ext ...

براي زيپ كردن يك فولدر، در حالتي كه خودش داراي ساب فولدر نباشه، ميشه از دستور زير استفاده كرد:

zip zip_file.zip folder_name/

مي تونيم ميزان فشرده سازي رو براي برنامه ZIP مشخص كنيم:

zip  -[0-9] zip_file.zip folder_name/

عدد 0 به معني اينه كه اصلا فشرده سازي صورت نگيره، چيزي كه مشابه tar بدون حالت فشرده سازي است. هرچي عدد بالاتر بره سرعت عمليات فشرده سازي كمتر ميشه و ميزان فشرده كردن بالاتر. مقدار پيش فرض سيستم هم عدد 6 است. اگر بخواهيم مي تونيم با تعريف يك alias در سيستم عامل، مقدار پيش فرض رو عدد دلخواه بگذاريم:

alias zip='zip -9'

يكي از اون مواردي كه خودم خيلي دنبالش بودم، محافظت از فايل زيپ شده توسط كلمه عبور است. براي اينكار دو تا راه وجود داره، اولي اينكه موقع عمليات فشرده سازي، خودمون كلمه عبور رو هم بهش بديم:

zip -P 123456 moby.zip *.txt

اين براي اون وقتايي بدرد مي خوره كه مثل كار من، لازم باشه تمام عمليات اتوماتيك و مثلا توسط cron انجام بشه. اما اگر قراره كه از پاي سيستم عمليات فشرده سازي انجام بشه، آوردن كلمه عبور به شكل بالا زياد كار عاقلانه اي نيست. ميشه كاري كرد كه سيستم بدون اينكه كلمه عبور رو نمايش بده، از كاربر رمز رو دريافت كنه:

zip -e moby.zip *.txt
Enter password:
Verify password:

خب،  تا اينجا هرچي گفتيم مربوط بود به ساختن فايل زيپ. اگر بخواهيم فايل زيپ شده رو باز كنيم، از برنامه unzip بايد استفاده كنيم. ساده ترين روش استفاده هم:

unzip file_name.zip

اگر بخواهيم جزئيات عمليات رو هم ببينيم، بايد از سوئيچ v استفاده كنيم:

unzip -v file_name.zip

براي ديدن فايل هاي موجود در يك فايل زيپ هم بايد از سوئيچ l استفاده كنيم:

unzip -l  file_name.zip

براي آزمايش سلامت فايل هاي موجود در يك آرشيو زيپ هم مي تونيم از دستور زير استفاده كنيم:

unzip -t moby.zip
Archive: moby.zip
testing: bible/               OK
testing: bible/genesis.txt    OK
testing: bible/job.txt        OK
testing: moby-dick.txt        OK
testing: paradise_lost.txt    OK
No errors detected in compressed data of moby.zip.

+ نوشته شده در  چهارشنبه بیست و دوم اسفند 1386ساعت 13:49  توسط امير حسين روشناس  | 

مديريت RPM packages

احتمالا تا بحال اسم RPM رو شنیدین. RPM توسط شرکت رد هت برای مدیریت  package ها درست شده و از طریق اون می تونید برنامه ها رو به فرمت اجرایی قابل نصب در لینوکس منتشر کنین. و البته از این فایل ها برای نصب برنامه ها استفاده کنین.
یه چیز من درآوردی که خیلی در دنیای اوپن سورس باب شده، اینه که اول یه اسمی رو انتخاب می کنن، بعدش می گردن براش تفسیر پیدا می کنن! گاهی وقتا هم می بینن که این مخففی که درست کردن، بیانگر قابلیت های برنامه نیست یا کلاسشو داره میاره پایین، بنابراین میگردن یه مخفف دیگه براش پیدا می کنن. نمونه اش PHP که اول راسموس لردورف به عنوان مخفف Personal Home Page انتخابش کرده بود، بعدا که دیدن عجب چیز خفنی شد، گفتن نه، PHP مخفف recursive برای PHP, HTML Preprocessor هستش. در مورد RPM هم فکر می کنم اول مخفف Redhat Package Manager بوده، بعدا که توزیع های دیگه هم به صورت گسترده ازش استفاده کردن، گفتن که مخفف RPM Package Manager  هستش. حالا با این کاری نداریم.
می خوام یه سری دستورات کاربردی برای RPM ها رو اینجا بیارم:

برای نصب (یا همون install) از دستور زیر استفاده می کنیم:

rpm -ivh package_name.rpm

برای حذف از روی سیستم هم دستور زیر:

rpm -e package_name

دقت کنید که دیگه اینجا پسوند rpm رو ذکر نمی کنیم.

برای بروز رسانی (update) یک package از دستور زیر استفاده می شه:

rpm -Uvh package_name.rpm

با صادر کردن دستور بالا، لینوکس ورژن قدیمی برنامه رو پاک می کنه و جدید رو نصب می کنه. بجای استفاده از سوئیچ i-، بهتره که از U- استفاده کنیم، اینطوری مطمئن می شیم که برنامه بهم نمی ریزه.

اگر دستور زیر رو صادر کنیم، اسم package به همراه ورژن و سایر اطلاعاتش برامون نمایش داده می شه. همینطور می تونیم بفهمیم که اصلا یه همچین چیزی روی سیستم نصب شده یا نه:

rpm -q package_name

اگر بخواهیم لیست فایل های موجود داخل یک package رو ببینیم، باید از دستور زیر استفاده کنیم:

rpm -ql package_name

+ نوشته شده در  یکشنبه پنجم اسفند 1386ساعت 10:59  توسط امير حسين روشناس  | 

Cron و اجراي برنامه ها در يك زمان خاص

Cron برنامه اي است كه به كاربران اين امكان رو ميده كه برنامه هاي مورد نظرشون رو در يك زمان به خصوص اجرا كنن. يك مثال براي اين قضيه، سيستم هاي تهيه پشتيبان يا همون backup ها هستند.
طبق معمول مثل ساير سرويس هاي لينوكس، cron در آدرس /etc/init.d قرارداره و با دستور زير مي تونيد بفهميد كه در حال اجرا هست يا نه:

/etc/init.d/cron status

معمولا توي لينوكس SuSE اين سرويس براي runlevel هاي 2، 3 و 5 فعاله. براي اينكه يك برنامه رو توي يك زمان خاص اجرا كنيم، بايد اول ببينيم كه اين برنامه قراره چه مواقعي اجرا بشه. اگر يه نگاه به شاخه /etc/ بندازين، مي بينيد كه يك سري فولدر با اين اسامي اونجا هست: cron.monthly ،cron.weekly ،cron.daily ،cron.hourly. از اسم هركدوم معلومه كه به درد چه تيپ زمان هايي مي خورن. فايلي كه قراره حاوي تنظيمات cron باشه رو توي اين فولدر ها كپي مي كنيد، و بعد دستور زير رو مي ديد:

crontab file_name

با دستور crontab -l هم مي تونيد ببينيد كه در حال حاضر چه task هايي به cron سپرده شده. و خود اين دستور بهتون ميگه كه بايد براي تغيير وظايف cron فايل اصلي رو تغيير بديد و مجددا سرويس رو install كنيد.
حالا مي رسيم به تنظيمات فايل هاي مربوط به cron. اين فايل ها مثل ساير فايل هاي تنظيمات لينوكس فايل هاي متني هستند كه داراي يه syntax خاص هستند. مثلا خط زير در يك فايل تنظيم cron به معني اجراي برنامه مربوطه در ساعت 23:59 هر روز است:

59 23 * * * some_program

اون اعداد و ستاره ها به ترتيب نمايانگر دقيقه (كه از صفر تا 59 مي تونه باشه)، ساعت (از 0 تا 23)، روز در ماه (1 تا 31)، ماه (1 تا 12 يا اينكه اسم ماه) و روز در هفته (از 0 براي يكشنبه شروع ميشه تا 7، يا نام روز) هستند. هر كدوم كه بخواهيم ناديده گرفته بشه بجاش ستاره مي ذاريم، و بنابراين موقع اجراي cron اون زمان ناديده گرفته ميشه. البته هركدوم از موارد رو ميشه چند تا مقدار براش داد و با كاما از هم جدا كرد يا اينكه محدوه براش مشخص كرد. مثلا دستور زير هر دقيقه يكبار اجرا ميشه:

0-59/1 * * * * program

و اين دستور هر ساعت يكبار:

00 0-23/1 * * * program

به طور كلي فرمت هر خط در بانك اطلاعاتي crontab به شكل زير است:

 [minute] [hour] [day of month] [month] [day of week] [command to run]

+ نوشته شده در  جمعه بیست و یکم دی 1386ساعت 13:27  توسط امير حسين روشناس  | 

تغییر Runlevel پيش فرض سيستم

همونطور كه مي دونيد، سيستم مي تونه در 7 تا runlevel كار كنه:

  • 0: اين runlevel به معني shutdown ،halt يا اصلا همون خاموش شدن كامل سيستمه!

  • 1: فقط يك كاربر مي تونه به سيستم وارد بشه، از شبكه و گرافيك هم خبري نيست.

  • 2: اينو بزرگان رزروش كردن، يعني ممكنه اون توزيع لينوكسي كه ازش استفاده مي كنين config كرده باشه براي خودش، ممكن هم هست گذاشته باشه كنار واسه شما كه خودتون هر بلايي مي خواين سرش بيارين.

  • 3: سيستم چند كاربره، حالت فقط متن (بدون گرافيك، ولي خودتون مي تونيد مود گرافيك رو با دستور startx بالا بياريد) و با پشتيباني از شبكه

  • 4: ايضا مثل مورد دوم رزرو شده!

  • 5: حالت چند كاربره و شبكه و گرافيك و خلاصه هرچي كه دلتون بخواد!

  • 6: اين هم يعني restart

خب، سيستم ما توي يكي از مود هاي 1، 3 يا 5 بوت ميشه و مياد بالا. اينو هم همون زمان نصب لينوكس خودمون تنظيمش كرديم. حالا يه زماني اومديم و دلمون نخواست كه سيستم تحت اون runlevel اولي كه تنظيم كرده بوديم بياد بالا. چيكار بايد بكنيم؟

البته ميشه از طريق Yast (كه مي دونيد مركز مديريت همه اعمال و رفتار OS در SuSE است) ميشه اين پيش فرض رو تغيير داد. ولي اگه بخواهيم كلاس بذاريم و بگيم ما حرفه اي هستيم و خودمون مي تونيم از طريق ويرايش فايل هاي پيكره بندي كارمون رو انجام بديم، راهش اينه كه فايل etc/inittab/ رو انگولك كنيم.

توي اوائل اين فايل، يك سطر مي بينيد به اين مضمون:

# The default runlevel is defined here
id:3:initdefault:

اين يعني اينكه سيستم در حالت پيش فرض توي runlevel 3 بالا بياد. حالا اينجا مي تونيد هر عددي كه دلتون مي خواد رو بذاريد تا سيستم تحت اون runlevel بالا بياد. ولي فكر نمي كنم كسي دلش بخواد سيستم رو با 0 يا با 6 بالا بياره!

+ نوشته شده در  چهارشنبه پنجم دی 1386ساعت 10:15  توسط امير حسين روشناس  | 

MD5 Checksum

یکی از امکانات خیلی جالب لینوکس (که البته با استفاده از برنامه های کمکی در ویندوز هم قابل دسترسی هست) MD5 Checksum است، که ابزار کوچیک و جمع و جوریه و می تونه در مدیریت فایل هایی که از روی اینترنت می گیریم کمکمون کنه.
تابع MD5 بر مبنای الگوریتم ریاضی کار می کنه که برای ورودی های مختلف، همیشه خروجی های متفاوتی رو ایجاد می کنه. حتی در این حد که بعضی برنامه های ارسال ایمیل، از این تابع با ورودی تاريخ و زمان هر لحظه برای ایجاد یک رشته منحصر بفرد استفاده می کنن.
این تابع در لینوکس می تونه برای مقایسه دو تا فایل هم بکار بره. این عملیات وقتی که از روی اینترنت فایلی رو دریافت می کنیم بدرد می خوره و با استفاده از اون می تونیم مطمئن بشیم که عملیات دریافت فایل به درستی انجام شده. معمولا سایت هایی که برنامه های لینوکس رو برای download ارائه می کنن، MD5 Checksum فایل اصلی رو هم اعلام می کنن. پس از دریافت فایل از اون سایت، با دستور زیر می تونید از صحت انتقال اطمینان حاصل کنید:

md5sum file_name

خروجی بدست اومده از این دستور با رشته اعلام شده از طرف سایت ارائه دهنده اون برنامه اگر برابر بود، یعنی فایل به درستی دریافت شده است.

+ نوشته شده در  دوشنبه سوم دی 1386ساعت 10:47  توسط امير حسين روشناس  | 

Umask

ممكنه كه با كلمه umask برخورد کرده باشید. بد نیست اینجا یه توضیحی راجع به این umask بدم، چون خودم هم با این مسئله برخورد کرده بودم که این چه صیغه ایه!

توی لینوکس همونطوری که می دونید یه بحثی هست به اسم سطوح دسترسی یا همون permissions. وقتی یه فایل یا فولدر دارین، اون فایل یا فولدر دارای یه سری سطوح دسترسی هستش. این دسترسی ها مشخص می کنن که چه کسانی می تونن از اون فایل یا فولدر استفاده کنن. اگر شما جلوی اعلان سیستم محیط ترمینال یه دستور لیست گیری با سوئیچ l- صادر کنید، احتمالا با یه خروجی شبیه این مواجه میشین:

drwxr-xr-x  2 root root  4096 Dec 12 15:30 bin
drwxr-xr-x  4 root root  1024 Dec 12 15:48 boot
drwxr-xr-x 11 root root  7000 Dec 19 16:17 dev
drwxr-xr-x 85 root root 12288 Dec 20 15:04 etc
drwxr-xr-x 13 root root  4096 Dec 17 18:24 home
drwxr-xr-x  8 root root  4096 Dec 17 19:38 lib

اون حروفی که سمت چپ تصویر می بینید، در واقع معرف همون سطوح دسترسی هستند. حرف d یعنی اینکه این مورد دایرکتوری هستش، حرف r یعنی اجازه دسترسی خوندن به اون آیتم وجود داره، حرف w اجازه نوشتن رو مشخص می کنه و حرف x هم یعنی اینکه این فایل آیا اجازه اجرا توسط کاربر مربوطه رو داره یا نه.

حالا چرا این حروف گاهی تکرار شدن؟ جواب اینه که برای هر آیتم، ما سه تا حالت داریم: مالک، گروه مالک و سایرین. مالک که مشخصه، کسی که فایل یا فولدر را ایجاد کرده یا به نوعی صاحب اونه. حرف دوم تا چهارم وضعیت دسترسی مالک رو برای اون آیتم مشخصمی کنه.

هر کاربری توی لینوکس متعلق به حداقل یک گروه هست. حرف پنجم تا هفتم مشخص کننده سطح دسترسی گروه مالک به آیتم مربوطه است. سایرین (که نه مالک اون فایل هستند، نه جزء گروه کاربرهای هم گروه با مالک فایل) وضعیت دسترسیشون از حرف هشتم تا دهم مشخص میشه.

حالا می رسیم به umask. به صورت پیش فرض برای ایجاد فایل ها یا فولدر ها یه سطح دسترسی توی سیستم تعریف میشه. منتها نه به صورت سطح دسترسی، بلکه به صورت برعکسش! یعنی اینکه شما اون دسترسی پیش فرضی که نمی خواهید به کاربران بدید رو در سیستم تعریف می کنید.

سیستم چطور متوجه سطح دسترسی میشه؟ میاد و اون عددی که شما به عنوان umask دادید رو در نظر می گیره. برای فایل ها از عدد ۶۶۶ و برای فولدر ها از عدد ۷۷۷ کم می کنه. حاصلی که باقی می مونه رو برای سطح دسترسی پیش فرض سیستم در نظر می گیره. مثلا اگر umask رو برابر ۰۲۲ تعریف کرده باشین، سیستم به فایل ها سطح دسترسی ۶۴۴ (به معنی --rw-r--r) و به فولدر ها دسترسي ۷۵۵ (يا rwxr-xr-x) رو اعطا می کنه.

+ نوشته شده در  پنجشنبه بیست و نهم آذر 1386ساعت 15:19  توسط امير حسين روشناس  | 

تکه تکه کردن یک فایل

احتمالا مواردی پیش می آید که می خواهید یک فایل را به دو یا چند قسمت تقسیم کنید. مثلا یک flash memory دارید که حجم آن دو گیگ است و فایل شما مثلا ۴ گیگ. در این جور وقتا دستور split بکار می آید:

split -b 1440k my_file.mp3 chunk

اولین پارامتر مشخص می کند که بلاک های شما چه اندازه ای داشته باشند. دومین پارامتر همانطور که مشخص است نام فایلی که قرار است تکه تکه شود. قسمت سوم هم پیشوند تکه فایل ها است.

حالا اگر بخواهیم فایل اصلی را با بهم چسباندن این قسمت ها ایجاد کنیم در لینوکس این دستور را صادر می کنیم:

cat chunk* > filename.mp3

و اگر در ویندوز باشیم:

copy /b chunkaa+chunkab file_name.mp3

عزیزان دل برادر، توجه کنید که قسمت های مختلف همگی دارای پیشوند chunk هستند و پس از آن حروف ac،ab،aa و ... خواهد آمد.

+ نوشته شده در  چهارشنبه بیست و هشتم آذر 1386ساعت 14:33  توسط امير حسين روشناس  | 

آغاز به کار

سلام
ما داریم لینوکس SuSE ياد مي گيريم، و مي خوام هر چي كه در اين راه بدست ميارم رو با بقيه در ميون بذارم.

+ نوشته شده در  چهارشنبه بیست و هشتم آذر 1386ساعت 14:7  توسط امير حسين روشناس  |