لینوکس و من

توزیع اوبونتو

نویسنده : علیرضا احسانی | تاریخ: 1396/06/9




بهبود کارایی لینوکس با I/O scheduler جدید کرنل 4.12

نویسنده : محمدرضا عبداله‌زاده | تاریخ: 1396/05/7

یکی از وظایف اصلی هسته سیستم عامل، مدیریت دستگاه‌های ورودی و خروجی سیستم یا به اصطلاح I/O می‌باشد. برنامه‌های مختلفی که نیاز به دسترسی به دستگاه‌ها ورودی و خروجی دارند درخواست‌های خود را به هسته سیستم عامل ارسال می‌کنند و هسته سیستم عامل با توجه به تعداد درخواست‌هایی که برای دستگاه‌های مختلف وجود دارد، این درخواست‌ها را در صف قرار داده و برای انجام زمانبندی می‌کند. شیوه زمانبندی این درخواست‌ها تاثیر به سزایی در سرعت و پاسخگویی سیستم دارد. معمولا به دلیل کند بودن بعضی از دستگاه‌های ذخیره‌سازی همانند دیسک‌های سخت نسبت به سایر بخش‌های اصلی سیستم همچون CPU و RAM، عملیات I/O به عنوان یکی از دلایل اصلی کند بودن سیستم و پاسخگو (Responsive) نبودن برنامه‌ها می‌باشد.

روش‌ها و الگوریتم‌های مختلفی برای زمانبندی I/O وجود دارد. روش‌هایی که تاکنون در هسته لینوکس برای زمانبندی I/O استفاده می‌شد شامل CFQ، NOOP و Deadline بود. با ظهور دستگاه‌های ذخیره‌سازی جدید که قادر به انجام صدها و هزاران درخواست I/O در ثانیه می‌باشند، نیاز به روش‌های زمانبندی جدید که قادر به استفاده از این پتانسیل عظیم باشد بیش از پیش حس می‌شد. یکی از بهبودهایی که از کرنل نسخه 3.13 وارد هسته لینوکس شد multiqueue block layer بود که منجر به افزایش کارایی سیستم در استفاده از دستگاه‌های ذخیره سازی با کارایی بالا می‌شود. منتها این مکانیزم به خودی خود بدون وجود الگوریتم‌های زمانبندی که از این مکانیزم استفاده کنند فایده چندانی نداشت. ولی سرانجام در کرنل نسخه 4.12 دو زمانبند جدید که از این مکانیزم استفاده می‌کنند وارد هسته لینوکس شد. این الگوریتم‌ها به ترتیب BFQ و Kyber می‌باشند. زمانبند BFQ مکانیزمی است که بیشتر برای استفاده در دیسک‌های سخت HDD استفاده می‌شود که منجر به بهبود زمان تاخیر برنامه‌های تعاملی و بهبود کارایی سیستم می‌شود. الگوریتم Kyber هم بدلیل پیچیدگی کمتر نسبت به BFQ برای دیسک‌های SSD و سریعتر استفاده ‌می‌شود.
به تازگی کرنل 4.12 وارد مخازن آرچ شد و کاربران آرچ امکان استفاده از این مکانیزم‌های جدید رو پیدا کردند. این زمانبند‌ها در حالت عادی فعال نیستند و برای فعال شدن آنها باید کارهای زیر را انجام بدید. توصیه می‌کنم که اگر سیستم شما از HDD استفاده می‌کند از BFQ استفاده کنید و برای SSD ترجیحا از Kyber و یا از روش‌های فعلی موجود استفاده کنید.
در حالت عادی زمانبند CFQ در آرچ استفاده می‌شود که برای دیدن زمانبند مورد استفاده در دیسک مورد نظر خود از دستور زیر استفاده کنید در اینجا دیسک sda رو چک میکنیم:
$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq]


برای استفاده از زمانبندهای چند صفی (multiqueue) ابتدا بایستی پارامترهای scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1 را به پارامترهای بوت کرنل اضافه کنیم برای اینکار با فرض استفاده از GRUB به عنوان boot loader مورد استفاده اعمال زیر را انجام دهید:
ابتدا فایل etc/default/grub/ را با ویرایشگر مورد نظر خود باز کرده و پارامترهای گفته شده را به مقادیر موجود در جلوی گزینه GRUB_CMDLINE_LINUX_DEFAULT اضافه کنید یعنی به این صورت:
GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1"

سپس با دستور زیر فایل تنظیمات گراب را بروزرسانی کنید:
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

در مرحله بعد برای استفاده از زمانبند BFQ برای تمامی دیسک‌های سیستم یک rule جدید برای udev ایجاد می‌کنیم. به این منظور ابتدا دستور زیر را برای ایجاد rule جدید اجرا کنید:
$ sudo nano /etc/udev/rules.d/10-bfq.rules

سپس محتویات زیر را درون این فایل قرار دهید:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="bfq"

در مرحله بعد سیستم خود را ریبوت کرده و بعد از بالا آمدن سیستم چک کنید که زمانبند BFQ برای دیسک شما مورد استفاده قرار گرفته باشد:
$ cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none


همانطور که می‌بینید زمانبند bfq برای دیسک sda سیستم مورد استفاده قرار گرفته است. برای استفاده از Kyber هم به همین شیوه عمل می‌شود منتها در rule ایجاد شده برای udev به جای bfq گزینه kyber رو قرار بدید:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="kyber"

لینک‌های مرتبط

تغییر دادن رنگ خروجی اسکریپت(بش)

نویسنده : علیرضا احسانی | تاریخ: 1396/05/1

شاید موقع نوشتن اسکریپت,نیاز داشته باشین بخشی از خروجی اسکریپتتون رو با یه رنگ دیگه نمایش بدین.(مثلا ارور ها یا وارنینگ ها)
برای این کار شما میتونین از برنامه tput استفاده کنین.به این صورت:

 tput setaf [0-7]
(بعد از setaf  با توجه به رنگ مورد نظرتون یه عدد بین  ۰ تا ۷ قرار بدین)
رنگ ها:
مشکی=۰
قرمز=۱
سبز=۲
زرد=۳
آبی=۴
ارغوانی=۵
آبی متمایل به سبز!!(cyan)=۶
سفید=۷

به دو روش میتونین ازش استفاده کنین.اول اینکه این دستور رو قبل از دستور echo بزارین  و روش دوم هم اینکه توی یه متغیر ذخیرش کنین و توی دستور echo  فراخوانیش کنین.
با دستور tput sgr0 هم رنگ ترمینال به رنگ پیشفرضش برمیگرده.

امیدوارم به دردتون بخوره:)

دستورات پر کاربرد vim

نویسنده : علیرضا احسانی | تاریخ: 1396/04/16


میشه گفت اینها پرکاربرد ترین دستورات ویم هستن.
امیدوارم به دردتون بخوره :)

اصلاح تم Arc در گنوم ۳.۲۴

نویسنده : امین | تاریخ: 1396/04/2

با آپدیت ۳.۲۴ گنوم تم Arc و Arc-maia در قسمت نوتیفیکیشن ها دچار یه مشکل خفیفی شده بود. در ادامه مطلب، میگیم که چطوری این موارد برطرف شدند:

  • رنگ متن نوتیفیکیشن ها بسیار کمرنگ بودند
  • آب و هوا نسبت به ساعت عقب تر قرار گرفته بود و وقتی روش کلیک میکردی سیاه میشد
  • ساعت و آب و هوا که روی هم قرار دارند همخوانی نداشتند
  • رنگ دایره تاریخ امروز خاکستری بود
  • کلیک روی دکمه Clear All اون رو سیاه میکرد!
از اونجایی که این تم پر طرفداریه، در فروم مانجارو هم این مشکل مطرح شده بود، که بعد از این که این اصلاحات انجام شد قرار شد در نسخه های بعدی این تغییر صورت بگیره.
و اما روند کار این طوریه که ما اول باید اصطلاحا یک child theme درست کنیم. child theme یعنی یک تم که خصوصیاتش رو از تم اصلی یا مادر به ارث میبره!‌ و تغییراتی رو در اون اعمال میکنیم بدون اینکه به تم اصلی کاری داشته باشیم. این طوری فایلهای اصلی دست نخورده میمونن و بعد از هر آپدیت دیگه تغییرات ما از بین نمیرن.
برای اینکار باید فولدرهای مورد نظر رو بسازیم. اما به جای اینکه تک تک بیایم این کار رو بکنیم میتونیم با چنین دستوری این کار رو بکنیم:
install -D <(echo ) ~/.local/share/themes/Arc-maia-modified/gnome-shell/gnome-shell.css

بعد فایلی رو که ساختیم با ویرایشگر دلخواهمون باز میکنیم:
gedit ~/.local/share/themes/Arc-maia-modified/gnome-shell/gnome-shell.css

و متن زیر رو داخلش قرار میدیم و ذخیره میکنیم:
@import url("/usr/share/themes/Arc-Maia/gnome-shell/gnome-shell.css");

.search-provider-icon,
.list-search-result, .app-well-app .overview-icon,
.app-well-app.app-folder .overview-icon,
.grid-search-result .overview-icon {
  color: white;
  border-radius: 2px;
  padding: 6px;
  border: 1px solid transparent;
  transition-duration: 0ms;
  text-align: center;
    font-size:16px;
}

.message-title {
    color: #5c616c; }
.message-content {
    color: #5c616c; }

.weather-button:hover,
.weather-button:focus,
.events-section-title:hover,
.events-section-title:focus,
.world-clocks-button:hover,
.world-clocks-button:focus {
  background-color: #fafafa;
  border: none; }

.weather-button {
  padding: 7px 10px 7px 10px; }

.world-clocks-button {
  border: none; }

.button:hover, .notification-banner .notification-button:hover, .hotplug-notification-item:hover, .button:active, .notification-banner .notification-button:active, .hotplug-notification-item:active, .button:active:focus, .notification-banner .notification-button:active:focus, .hotplug-notification-item:active:focus,
.datemenu-today-button:active,
.world-clocks-button:active,
.weather-button:active,
.events-section-title:active {
  color: white;
  background-color: #16A085; }

.world-clocks-header,
.weather-header,
.events-section-title {
  color: black;
  font-weight: bold; }

.weather-box {
  spacing: 0.4em; }
.calendar-today {
background-color: #16A085;
color: #fff;
border-width: 0; }   
بعد باید یک بار گنوم رو ری استارت کنیم. کلید Alt+F2 رو میزنیم و تایپ میکنیم r و اینتر میزنیم (فقط در Xorg و نه در wayland)
حالا میتونیم تم Arc-maia-modified رو برای تم shell در Tweaks انتخاب کنیم.

اگر شما از تم Arc استفاده میکنید (نه Arc-maia) پس نام فولدرها رو هم درست کنید. و همچنین در کد بالا هر جایی که 16A085 هست باید 5c616c رو بذارید. این کد رنگ سبز و آبی این تم ها است که با هم متفاوته.

أموزش نصب DDE روی آرچ لینوکس

نویسنده : علیرضا احسانی | تاریخ: 1396/03/25



DDE یکی از زیبا ترین دسکتاپ های گنو/لینوکسیه.این دسکتاپ ,دسکتاپ پیشفرض توزیع دیپین هست.
Deepin desktop enviroment or DDE
تو این مطلب میخوام روش نصب این دسکتاپ روی آرچ لینوکس رو توضیح بدم.
***این کد هارو کپی پیست نکنید.ویکی آرچ رو بخونید و دقیقا درک کنید که چیکار دارید میکنید :)
اول از همه xorg و بسته های مرتبط به اون رو نصب کنید.

$sudo pacman -S xorg xorg-server xorg-xinit  xorg-server-utils
$ جزو دستور نیست.
حالا با توجه به کارت گرافیکتون,درایور مناسبش رو نصب کنین.
برای کارت گرافیک  اینتل:
$sudo pacman -S xf86-video-intel
برای کارت گرافیک  AMD:
 $sudo pacman -S xf86-video-ati
برای کارت گرافیک NVIDIA:
$sudo pacman -S  xf86-video-nouveau
پخش کدک های معمول صوتی:
 $sudo pacman -S gst-libav gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-plugins-base gst-plugins-base-libs gstreamer
پلاگین pulseaudio:
 $sudo pacman -S pulseaudio
حالا بریم سراغ نصب میز کار.
میز کار رو با این دستور نصب کنید:
 $sudo pacman -S deepin
بعد از نصب اون,میتونین بسته ی deepin-extra رو هم نصب کنین.که شامل یه سری برنامست که خود دیپین داره توسعش میده.
برنامه های موجود در بسته ی  deepin-extra:
deepin music
deepin movie
deepin screenshot
deepin calendar
و اگر نمیخواین همشونو نصب کنین و فقط یکیشونو میخواین,میتونین با این دستور نصبش کنین.
 $sudo pacman -S deepin-*
جای * اسم نرم افزاری که میخواین رو بنویسین.
این میز  کار از lightDM به عنوان login-manager استفاده میکنه.هر چند میتونین هر لاگین منیجر دیگه ای روهم نصب کنین.لیست لاگین منیجر ها
حالا باید فایل کانفیگ lightDM رو دستکاری  کنیم.
 $vi /etc/lightdm/lightdm.conf
تو این فایل,دنبال عبارت زیر بگردین:
 #greeter-session=example-gtk-gnome
از حالت کامنت خارجش کنین(# اولشو حذف کنین) و به عبارت زیر تغیرش بدین:
 greeter-session=lightdm-deepin-greeter
حالا دستور زیر رو وارد کنین تا lightdm آماده کار بشه:
 $systemctl enable lightdm-service
و سیستم رو ریبوت کنین.یا با این دستور وارد محیط گرافیکی بشین:
 $systemctl start lightdm.service
تصاویری از محیط DDE




فایرفاکس خیلی دیر باز می شود

نویسنده : امین | تاریخ: 1396/03/20

مدتها بود که فایرفاکس وقتی میخواست باز بشه باید دو تا استکان چای میخوردی تا افتخار بده بهت و خودش رو نشون بده. خیلی گشتم، که دیدم در این تاپیک فروم آرچ مشکلی مشابه وجود داره. طبق راه حل پیشنهادی اونها عمل کردم و حالا پس از مدتی که تست کردم ببینم تاثیر داشته یا نه، واقعا مشکل برطرف شده و فایرفاکس در چند ثانیه کوتاه باز میشه.

اگر شما هم چنین مشکلی دارید، بعد از اینکه افزونه های اضافی و قدیمی رو غیر فعال کردید و کش مرورگر رو خالی کردید و همچنان این مشکل پابرجا بود، بد نیست این راه رو یه امتحان بکنید. فایل زیر رو با ویرایشگر خودتون باز کنید:
/etc/hosts
و بعد خط زیر رو بهش اضافه کنید و به جای hostname اسم کامپیوتر خودتون رو بنویسید. این اسم با همین دستور hostname نمایش داده میشه.
127.0.0.1    hostname

و اگر localhost نوشته بود، اون رو به هاست‌نیم خودتون تغییر بدید.

یک اسکریپت برای واترمارک عکس و ویدیو

نویسنده : امین | تاریخ: 1396/01/16

چند وقت پیش مطلبی نوشته بودم در این خصوص که چطوری روی یک عکس یا روی یک فایل ویدیویی واترمارک خودمون رو اضافه کنیم. مدتی بعدش تصمیم گرفتم این دو تا کار رو با هم ادغام کنم و در قالب یک اسکریپت استفاده کنم. نتیجه کار شد این:

#!/bin/bash
#
# A script to add an image as a watermark over videos or image files.
# I'm not a developer, and I wrote this script just for my needs.
# 07 November 2016
# Amin medicamin@gmail.com http://linuxvaman.ir
# Feel free to make this script better :)
#

path_of_first_file=$(dirname "$2")
name_of_first_file=$(basename "$2")

new_name="$(echo "wmark-$name_of_first_file")"
new_output=$(echo "$path_of_first_file/$new_name")


if [ $# -lt 1 ]
then
    echo
    echo "A simple script to add an image as a watermark over videos or image files."
    echo "As of simplicity of usage, all watermarks will be added to the northwest area of the image or the video files."
    echo "to change these positions you should edit the script codes"
    echo
    echo "-i     add watermark to a single image "
    echo "example: wmark -i /path/to/image.png /path/to/watermark.jpg"
    echo
    echo "-v     add watermark to a single video "
    echo "example: wmark -v /path/to/video.mpg /path/to/watermark.jpg"
    echo
    echo "-ia     add watermark to all image files in a directory that wmark runs in"
    echo "example: wmark -ia /path/to/watermark.jpg"
    echo
    echo "-va     add watermark to all video files in a directory that wmark runs in "
    echo "example: wmark -va /path/to/watermark.jpg"
    echo
    echo "-r     replaces the space in all filenames with a dash "
    echo "example: wmark -r"
    echo
exit
fi


case $1 in

#Here you can change "northwest" to these variables: northeast, southwest, southeast
-i)
composite -dissolve 70% -gravity northwest -geometry +10+10 "$3" "$2" "$new_output"
echo
echo "New image saved in: " "$path_of_first_file"\/$new_name
exit 0
;;

#As ffmpeg is more complex, you should know the resolution of the video file to change the possition of the watermark, by editing "overlay=15:10" (top:left)
-v)
ffmpeg -i "$2" -i "$3" -filter_complex "overlay=15:10" -preset veryfast "$new_output"
echo
echo "New video saved in: " "$path_of_first_file"\/$new_name
exit 0
;;

#Here you can change "northwest" to these variables: northeast, southwest, southeast
-ia)
for i in *.png *.jpg;
do
composite -dissolve 70% -gravity northwest -geometry +10+10 "$2" $i wmark-$i
done
echo
exit 0
;;

#As ffmpeg is more complex, you should know the resolution of the video file to change the possition of the watermark, by editing "overlay=15:10" (top:left)
-va)
for i in *.mp4 *.flv *.mpg *.rm;
do
ffmpeg -i $i -i "$2" -filter_complex "overlay=15:10" -preset veryfast wmark-$i.mp4
done
echo
exit 0
;;

-r)
for i in *\ *; do mv "$i" "${i// /-}";
done
echo
exit 0
;;

esac




اسکریپت رو خوب نگاه کنید تا با طرز کارش آشنا بشید. این اسکریپت رو با نام مثلا wmark جایی ذخیره کنید و براش یک alias بسازید. اونوقت میتونید باهاش کار کنید. یک بار wmark رو در ترمینال اجرا کنید تا خودش راهنماییتون کنه و مثال بزنه.

تغییر الویت اجرای یک برنامه خاص در لینوکس

نویسنده : powpei | تاریخ: 1395/12/13

شاید برخی اوقات نیاز باشه الویت اجرای یک فرآیند خاص (یا چند فرآیند) که توسط سی پی یو پردازش میشه بالا یا پایین بره که این برنامه ساده که با پایتون نوشته شده این کار رو انجام میده.(لازم به ذکر است که آدرس ها و فایل های مورد استفاده به نسبت کاربرد باید تغییر کنند)
کد در ادامه مطلب
ادامه مطلب

قرص تقویتی برای مانجارو!

نویسنده : امین | تاریخ: 1395/11/27

در آرچ یه چیزی هست به نام powerpill که کارش اینه که با استفاده از reflector سریعترین سرورهای مخازن رو پیدا کنه و با استفاده از aria2 سرعت دانلود بسته ها رو چندین برابر کنه. و حتی با rsync سرعت سینک کردن مخازن هم بیشتر میکنه! پس عجب قرص تقویتی‌ای است!

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

اما برای اینکه چیزهایی که از AUR نصب میکنیم (بوسیله yaourt یا ابزارهای دیگه) هم برای دانلود از aria2 استفاده کنند، میبایست فایل تنظیمات makepkg را باز کنیم و تنظیمات مربوط به دانلود رو به این تغییر بدیم:
/etc/makepkg.conf
------------------------

DLAGENTS=('ftp::/usr/bin/aria2c %u -o %o'
          'http::/usr/bin/aria2c %u -o %o'
          'https::/usr/bin/aria2c %u -o %o'
          'rsync::/usr/bin/rsync -z %u %o'
          'scp::/usr/bin/scp -C %u %o')



لینک‌های مرتبط

1 2 3 4 5 6 7 ...