خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

خط فرمان لینوکس

ترجمه فارسی LinuxCommand.org

قدری کار واقعی

قدری کار واقعی

در این درس، برخی از توابع پوسته خود را برای تولید مقداری اطلاعات سودمند گسترش می‌دهیم.

show_uptime

تابع show_uptime خروجی فرمان uptime را نمایش خواهد داد. فرمان uptime چند نکته مهم در مورد سیستم، از جمله طول مدت زمانی که سیستم از آخرین راه‌اندازی (up)در حال اجرا بوده است، تعداد کاربران و بارگیری اخیر سیستم را بیرون می‌دهد.

[me@linuxbox me]$ uptime
9:15pm up 2 days, 2:32, 2 users, load average: 0.00, 0.00, 0.00

برای به دست آوردن خروجی فرمان uptime در صفحه HTML خود، ما تابع پوسته‌مان را با تعویض کد stub موقت با نگارش تکمیل شده به این صورت می‌نویسیم:

show_uptime()
{
    echo "<h2>System uptime</h2>"
    echo "<pre>"
    uptime
    echo "</pre>"
}

همانطور که می‌توانید مشاهده نمایید، این تابع جریانی از متن شامل یک مخلوطی از برچسب‌های HTML و خروجی فرمان را بیرون می‌دهد. هنگامیکه در بدنه اصلی برنامه ما جایگزینی فرمان صورت بگیرد، خروجی تابع ما قسمتی از here script می‌گردد.

drive_space

تابع drive_space فرمان df را برای فراهم نمودن خلاصه‌ای از فضای تمام سیستم فایل‌های متصل شده استفاده خواهد نمود.

[me@linuxbox me]$ df

Filesystem   1k-blocks      Used Available Use% Mounted on
/dev/hda2 509992 225772 279080 45% / /dev/hda1 23324 1796 21288 8% /boot /dev/hda3 15739176 1748176 13832360 12% /home /dev/hda5 3123888 3039584 52820 99% /usr

از لحاظ ساختار، تابع drive_space بسیار مشابه تابع show_uptime است:

drive_space()
{
    echo "<h2>Filesystem space</h2>"
    echo "<pre>"
    df
    echo "</pre>"
} 

home_space

تابع home_space مقدار فضایی را که هر کاربر در دایرکتوری خانگی‌اش استفاده می‌کند نمایش خواهد داد. این اطلاعات را به صورت یک لیست نمایش می‌دهد، که به طور نزولی بر حسب مقدار فضای مورد استفاده مرتب شده است.

home_space()
{
    echo "<h2>Home directory space by user</h2>"
    echo "<pre>"
    echo "Bytes Directory"
    du -s /home/* | sort -nr
    echo "</pre>"
} 

توجه نمایید که برای اینکه این تابع به طور موفق اجرا گردد، اسکریپت باید توسط کاربر ارشد اجرا گردد، چون فرمان du برای بررسی محتویات دایرکتوری ‎/home‎ نیازمند مزایای کاربر ارشد است.

system_info

ما هنوز برای تمام کردن تابع system_info آماده نیستیم. تا آن هنگام، کد stubbing را به طوریکه HTML معتبری تولید کند بهینه‌سازی می‌نماییم:

system_info()
{
    echo "<h2>System release info</h2>"
    echo "<p>Function not yet implemented</p>"
}