لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۸/۱۲/۱۴
    bond
  • ۹۸/۱۰/۲۰
    GIT
  • ۹۸/۱۰/۱۴
    DISK

۱۵ مطلب در شهریور ۱۳۹۶ ثبت شده است

۲۸
شهریور

نمایش دسترسی پذیری به X11(در xServer نمایش وضعیت دسترسی X11 ، اینکه چه کاربرانی توانایی اتصال به سیستم عامل را دارند.)

xhost

خروجی:

access control enabled, only authorized clients can connect
SI:localuser:behrooz


جهت باز کردن دسترسی برای همه از دستورزیر استفاده میشود(با این دستور کنترل غیر فعال شده و همه می‌توانند به سرور مورد نظر متصل بشوند):

xhost +

برای فعال شدن کنترل (تنها یوزر های مجاز بتوانند به سرور متصل شوند)

xhost -

افزودن یک آی پی برای مجاز شدن اتصال به سرور مورد نظر

xhost +192.168.X.X

حذف یک آی پی از لیست  مجاز  اتصال به سرور

xhost -192.168.X.X

نمایش تصاویر در ایکس یازده

display

اگر متغیرdisplay را در آی پی خاصی قرار بدهید مثل نمونه زیر

export DISPLAY=192.168.42.85:0

با اجرای برنامه، آن برنامه در سیستم مورد نظر اجرا خواهد شد.(درصورتی که توسط دستور xhost +192.168.X.X    تنظیمات انجام شده باشد)

نکته:حتما باید آن سرور مربوطه در پورت مورد نظر listen داشته باشد. امروزه معمولاً توسط display ایکس یازده فوروارد نمیشود و این ویژگی مربوط به قدیم می‌باشد.

مثال:(فرض شود ای پی مورد نظر در پورت صفر listen دارد . درآن صورت برنامه xeyes در سرور 192.168.42.85 اجرا خواهد شد)

export DISPLAY=192.168.42.85:0
$ xeyes # the eyes will be shown on 192.168.42.85 machine

نمایش تقویم

xcal



  • behrooz mohamadi nsasab
۲۷
شهریور

نکته:سرویس جدید weyland جایگزین سرویس Xserver میباشد که در حال توسعه است

نکته: تمام سیستم‌های لینوکس از x11 استفاده میکنند و دلیل استفاده از کلمه x11 بجای ایکس سرور ورژن آن است.(به x11 نام Xwindows system نیز گفته م‌شود)

نکته:تمام سیستم عامل ها برای بالا آوردن گرافیک از tcp/ip استفاده میکنند.

نکته: etc/x11/xorg.conf این فایل قدیمی است و در حال حاضر در هیچ سیستمی (فقط در سیستم‌های قدیم موجود است) یافت نمیشود.



برای نمایش اطلاعات XServer از دستور زیراستقاده نمایید

xwininfo

این دستور ویژگی‌ها و اطلاعات X را نشان میدهد که با زدن آن سیستم منتظر می‌شود تا با موس روی screens کلیک کنیم و سپس اطلاعات آن صفحه نمایش را نشان بدهد.
خروجی:

xwininfo: Please select the window about which you

would like information by clicking the

mouse in that window

با کلیک روی یک صفحه نمایش(screens) خروجی زیر نمایش می‌شود:
xwininfo: Window id: 0x3400026 "Guake!"
Absolute upper-left X:  0
  Absolute upper-left Y:  25
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 1024
  Height: 405
  Depth: 32
  Visual: 0x9d
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x3400003 (not installed)
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +0+25  -0+25  -0-338  +0-338
  -geometry 1024x405+0+25


نمایش اطلاعات جامع از X11
xdpyinfo


  • behrooz mohamadi nsasab
۲۷
شهریور

ابتدا از دستور زیر برای نمایش هارد و پارتیشن‌های موجود استفاده نمایید

ls

نکته: شماره گذاری پارتیشن‌ها از صفر (0) شروع می‌شود.

دستور زیر را به ترتیب از اول تا آخر برای تمامی پارتیشن‌ها امتحان میکنیم، تا زمانی که به پارتیشنی برسیم که فایل سیستم آن ext2 باشد

ls (hd*,partition_lable*)

پس از پیدا شدن پارتیش دستور زیر را برای آن می‌زنیم:

set boot=(hd*,partition_lable*)

set prefix=(hd*,partition_lable*)/boot/grub

و در آخر دستور زیر را بزنید:

insmod normal

normal

  • behrooz mohamadi nsasab
۲۷
شهریور

در صفحه ای که گراب ظاهر شده است دکمه e (به معنی رفتن به محیط ادیت و تنظیمات گراب) را بزنید:عبارت زیر را

init=/boot/bash

به انتهای خطی که با عبارت زیر شروع می‌شود بیافزایید:

linux /boot/vmlinuz . . .

و سپس دکمه های ctrl+X رابزنید:

مشاهده خواهید کرد که سل بایلا آمده است ولی با این تفاوت که FileSystem از نوع readoly است !

برای خارج شدن سیستم عامل از readOnly دستور زیر را بزنید:

mount -rw -o remount /

حال سیستم عامل حالت rw داشته و میتوان پسورد را تغییر داد (یوزر فعلی ترمینال بالا آمده ،‌ بوزر روت است)

برای تغییر پسورد دستورزیر را وارد نمایید:

passwd root

  • behrooz mohamadi nsasab
۲۵
شهریور

با استفاده از این دستور می توان دریافت که فایل اجرایی یک برنامه ( execute ) برای اجرا به چه کتابخانه (ها) ای وابسطه است.
برای دیدن وابستگی برنامه ی ls که به چه کتابخانه‌هایی وابستگی دارد،  ابتدا مسیر اجرایی را پیدا نموده و سپس با ldd توابع را جستجو میکنیم.

# which ls

خروجی دستور:

# /bin/ls

سپس دستور را به ldd میدهیم

# ldd /bin/ls

برای راحتی می توان به صورت زیر عمل کرد(خلاصه سازی دو مرحله در یک مرحله)

# ldd `which ls`

در مثال بالا ابتدا دستور داخل ‘` اجرا شده سپس خروجی آن دقیقا در جلوی دستور ldd قرار می گیرد.


نکته: دقیقا همین کار را برنامه ی xargs نیز انجام می دهد با این تفاوت که xargs خروجی دستور قبل را وارد ورودی دستور بعد می کند اما این روش دقیقا خروجی را در جلوی دستور ldd قرار می‌دهد


نکته: اگر از چند برنامه ldd بگیرید خواهید دید که یک خروجی در همه ی آن ها یکی است(مثلا مطابق زیر)

.../lib64/ld-linux-x86-64.so.2


نکته:برنامه whereis نیز همانند which عمل میکند



نمایش تمام توابع کتابخانه ای dynamic برای اجرای دستور ls

>> ldd     /bin/ls



جستجوی تمام مسیرهایی که دارای تابع کتابخانه ای هستند و ذخیره آدرس ونام آنها در فایل

/etc/ld.so.cache

و در ادامه

>> ldconfig



تمام Library ها در این فایل هستند

# /etc/ld.so.cache    




  • behrooz mohamadi nsasab
۲۵
شهریور

زمانی که برنامه ای به اجرا در آورده میشود (مثلا برنامه ی ls), این برنامه برای اجرا به یک سری کتابخانه نیازمند است و باید این کتابخانه ها در داخل ram قرار بگیرد.

ابزارهایی هستند که این کار را انجام می دهند. به عنوان مثال در هنگام اجرای دستور ls ابتدا چک می‌شود که دستور به چه کتابخانه هایی احتیاج دارد و از بین این کتابخانه ها کدامیک در حال حاضر در داخل ram نیست، پس آن را به داخل ram برده و در نتیجه دستور ls به درستی کار خواهد کرد.

این ابزار linker نام دارد.

در یک سیستم عامل تعداد زیادی کتابخانه وجود دارد و linker نمی تواند هر بار برای اجرای هر برنامه, تمامی مسیر های کتابخانه ها را به صورت آنلاین بگردد لذا از دیتابیسی استفاده می کند که در آن , آدرس دقیق هر کتابخانه نوشته شده است . پس زمانی که linker به کتابخانه ای احتیاج داشته باشد ابتدا در دیتابیس خود به دنبال نام آن گشته سپس مسیر آن را از داخل db می خواند و در آخر آن را در داخل ram قرار می‌دهد.
این دیتابیس را می توان در دو فایل زیر دید که اولی یک فایل متنی و دومی یک فایل باینری است

/etc/ld.so.conf
/dtc/ld.so.cache

بصورت پیش فرض در داخل این دیتابیس،بسیاری مسیر و کتابخانه وجود دارد و حتی ممکن است کتابخانه‌ای جدید بصورت دستی به این دیتابیس اضافه بشود. برای این منظور ابتدا مسیر کتابخانه های خود را در فایل متنی

ld.so.conf

اضافه می کنیم سپس با استفاده از دستوری دیگر به نام

ldconfig

ایندکس کتابخانه‌های جدید (موجود در مسیری که اضافه کردیم) را به دیتابیس اضافه می کنیم

/etc/ld.so.cache
ldconfig

توجه داشته باشید که برای اضافه کردن کتابخانه به فایل باینری ls.so.cache نیاز به یوزر root است


Static library
تمام توابع مورد نیاز همواره باید همراه برنامه باشد، حجم برنامه خیلی بزرگ خواهد شد


Dynamic Library
برنامه ها فقط در هنگام نیاز توابع کتابخانه را برای سیستم عامل فراخوانی میکنند و نیاز نیست همه آنها در هر لحظه فراخوانی بشود، اگر نیاز به یک تابع کتابخانه ای که در سیتم عامل نیست پیش آید، در این صورت از اینترنت آن را دانلود خواهد کرد.
توابع در مسیر زیر هستند

/lib
/usr/lib
/lib64

  • behrooz mohamadi nsasab
۲۴
شهریور

نگهداری مکانهایی که قابل استفاده اند و انتخاب پیشفرض آن‌ها

sudo dpkg-reconfigure locales

دستور زیر متغیرهای مکانی(برنامه ها متغیرهای خود را بر اساس چه کشوری تنظیم نمایند) را نمایش میدهد:
locale
خروجی:
LANG=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

بعنوان مثال LANG=en_US.UTF-8 نشان دهنده آن است که زبان سیستم روی انگلیسی به زبن آمریکا تنظیم شده است و همچنین فرم آن از utf8 پیروی میکند. همچنین موارد دیگر نشان دهنده نوع نمایش اطلاعات سیستم شما در خروجی است مثلاً زمان با رمت انگلیسی یا فارسی نمایش بشود

:

انگلیسی: LC_TIME=en_US.UTF-8

فارسی:LC_TIME=fa_IR



نکته:می‌توان با LC_ALL تمام موارد local را تغییر داد(با گذاشتن عبارت زیر در فایل etc/profile)

یه این معنی که با دستور زیر تمام موارد به عبارت جلوی مساوی تبدیل می‌شود:

export LC_ALL=fa_IR.UTF-8

برای برگرداندن به حالت قبل:

unset  LC_ALL

برای برگرداندن به حالت defaults

export LC_ALL=C

  • behrooz mohamadi nsasab
۲۴
شهریور

Timedatectl

بهترین دستور برای کنترل و بررسی سیستم دستور زیر است:
timedatectl
درخروجی این دستور عبارت real time clock یا RTC همان chip درون مادربرد هست که با خاموش شدن کامپیوتر مقدار ساعت را در خود ذخیره و نگهداری می‌کند
در خروجی این دستور عبارت DST یا daylight saving time همان مقدار یک ساعتی هست که در تابستان ساعت ها را به جلو و در زمستان ساعت ها را به عقب می‌کشانند

دستورات مفید:
timedatectl set-time 'YYYY-MM-DD HH:MM:SS'		#set time and date
timedatectl set-time HH:MM:SS				#for time only
timedatectl set-time YYYY-MM-DD				#for date only
timedatectl list-timezones				#list the available timezones
timedatectl set-timezone "Asia/Tehran" 			#Set timeZone
timedatectl set-timezone utc				#Set timeZone To UTC
timedatectl | grep local				#Find out if your hardware clock is set to local timezone-BestMode is "no"
timedatectl set-local-rtc 1				#Set hardware clock to local timezone
timedatectl set-local-rtc 0				#Set hardware clock to coordinated universal time (UTC)
timedatectl set-ntp true				#start automatic time synchronization with remote NTP server,
timedatectl set-ntp false				#disable NTP time synchronization


sudo dpkg-reconfigure tzdata				#debian: reconfig timerzone
cat /etc/timezone					#show current timezone
ls -ltrh /etc/localtime					#show current timezone[lrwxrwxrwx 1 root root 31 اوت   21 23:40 /etc/localtime -> /usr/share/zoneinfo/Asia/Tehran]
date							#Show time
date +%Y%m%d-%H%M%S					#Out: 20190707-134444
  • behrooz mohamadi nsasab
۲۴
شهریور
مدت زمانی که یک برنامه یا پردازه طول میکشد:
time cp مبدأ    مقصد


  • behrooz mohamadi nsasab
۲۴
شهریور
نمایش تقویم (ماه کنونی)
cal

نمایش سه ماه قبل , جاری , و بعد
cal -3

نمایش 12 ماه سال جاری
cal -y

نمایش 12 ماه سال مورد نظر
cal 2005

نمایش تقویم فارسی (باید قبلاً نصب کنیم تا دستور اجرا شود)
jcal

نمایش سه ماه از تقویم فارسی(ماه قبل و ماه بعد)
jcal -3


  • behrooz mohamadi nsasab
۲۴
شهریور

برای تعیین سطح دسترسی، اجازه داشتن و یا اجازه نداشتن، از فایل های زیر استفاده نمایید:

/etc/cron.allow

/etc/cron.deny

و نیز:

/etc/at.allow

/etc/at.deny

برای تعیین مجوز این فایل‌ها را بسازید.(پیشفرض وجود ندارند)

Allow:ONLY users mentioned in this file are allowed to run this service. All other users will be denied
Deny: Everybody can use the service except the users mentione


  • behrooz mohamadi nsasab
۲۴
شهریور

گاهی پیش می‌آید که یک یوزر بنا بر نیاز، دستور را با مالکیت یوزر خود اجرا نماید.

در این صورت باید با یکی از روش های زیر عمل نماید:


۱− باید در داخل یوزر خود لاگین نموده و از دستور زیر برای زمان گذاری اقدام نماید

crontab -e

۲− فایل زیر را با یک ادیتور باز کرده

vim /etc/crontab

و با فرمت زیر

m  h  dom mon dow  USER    command and arguments

برای زمان گذاری اقدام نماید


۳− در مسیر زیر

/etc/cron.d/

یک فایل ایجاد کرده و با فرمت

m  h  dom mon dow  USER    command and arguments

برای زمان گذاری اقدام نماید


۴−

  • behrooz mohamadi nsasab
۲۴
شهریور

اجرای یک دستور تنها یکبار

برنامه‌ریزی یک دستور در یک دقیقه بعد

at now + 1 min


برنامه‌ریزی یک دستور در روز بعد در زمان اکنون

at tomorrow


نکته:باید برای خروج ctrl+d رابفشرید

نکته:دستورات در شل بنام sh اجرا خواهند شدیعنیbin/sh/
مشاهده تمام کارهای موجود در صف انتظار

atq


حذف یک کار موجود در صف انتظار برحسب شماره آن

atrm 3

  • behrooz mohamadi nsasab
۲۴
شهریور


تفاوت cron و anacron در این است که اگر کاری در cron تعریف شود درصورت خاموش بودن سیستم، آن کار منقضی می‌شود و دیگر اجرا نخواهد شد. اما در anacron  مکانیزم بدین صورت است که حتس در صورت خاموش بودن سیستم عامل، کار مورد نظر پس از روشن شدن انجام خواهد شد.

معمولا برای تهیه فایل پشتیبانی یا backup از این مورد استفاده می‌شود .


/etc /anacrontab

  • behrooz mohamadi nsasab
۲۴
شهریور

Minute Hour DayOfMonth Month DayOfWeek Command


Minute: دقیقه(0-59)

Hour: ساعت(0-23)

DayOfMonth: روز از ماه(1-31)

Month: ماه(1-12 یا نام ماه)

DayOfWeek: روز از هفته(0-7 یا نام روز )، صفر یعنی یک‌شنبه و برای دیگر روزها به ترتیب از یک‌شنبه محاسبه شود


نکته: اگر جای یکی از موارد بالا ستاره گذاشته شود یعنی همه (مثلاً دقیقه را ستاره بود یعنی هر دقیقه)

نکته: اگر بجای زمان در موارد بالا تنها از reboot@ استفاده شود یعنی هربار که سیستم ریست شود کار خاص مورد نظر انجام بشود

نکته: اگر بجای زمان در موارد بالا تنها از daily@ استفاده شود یعنی هرروز کار خاص مورد نظر انجام بشود

نکته: وقتی دستوری در cron اجرا میشودخروجی آن دستور به owner آن cron ایمیل خواهد شد

نکته:cron یک سرویس است.

نکته: با افزودن یک job جدید تنظیمات و کارها در مکان زیر قرار می‌گیرند:

/var/spool/cron/tabs/ or /var/spool/crontabs

که به هیچ وجه نباید مستقیماً این فایل را ادیت کنیم بلکه باید توسط دستور crontab -e جاب را مدیریت کنیم که باعث بروز رسانیدر این فایل خواهد شد


مشاهده تمام job های موجود در cron کاربر فعلی

crontab -l


برای ادیت کردن و افزودن job  در گستره کاربر فعلی  از دستور زیر استفاه شود:

crontab -e

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

/etc/cron.daily:        once on each days

/etc/cron.hourly :     once on each hours

/etc/cron.monthly:   once on each month

/etc/cron.weekly:     once on each week


نکته: هرچه در داخل دایرکتوری /etc/cron.d/ قرار بگیرد گویی در ادامه فایل etc/crontab/ قرار گرفته است.این مکانیزم برای تمیز ماندن دستورات و فایل‌ها و ایجاد نظم در دادن دستورات متفاوت در فایل های متفاوت بوجود آمده است.مثلا یک فایل بنام raw ایجاد میکنیم و درون آن مانند فرم دستورcron  یک job میسازیم و آن را میبندیم، ازین پس کار آن فایل هم به کارهای سرویس cron افزوده خواهد شد.



مثال‌ها:

اجرا دستور در ساعت 14:15  اول هرماه

15 14 1 * * command


اجرا دستور در ساعت 22:00 در دوشنبه تا جمعه

0 22 * * 1-5 command


اجرا دستور در دقیقه 23 در هر ساعت زوج (دقیقه های 23 در تمام سات های روز ، درحالت هر دوساعت یکبار) در هر ماه از سال(مثلا:00:23 و 02:23 و 04:23 و 06:23 و ...)

23 0-23/2 * * * command



اجرا دستور در ساعت 04:05  در روزهای یک‌شنبه در هر ماه از سال

5 4 * * sun command


اجرا دستور در هر 5 دقیقه یکبار

*/5 * * * * command


اجرا دستور در هر 8:42 و 18:42 دقیقه در هر دوشنبه تا جمعه در هر ماه

42 8,18 * * 1-5 command


اجرا دستور در هر ریست شدن سیستم عامل

@reboot command


اجرا دستور در هر دقیقه 42 در هر چهارساعت یکبار

42*/4 * * * command


اجرا دستور در هر دوروز یکبار در روزهای دوشنبه تا پنج‌شنبه

* * * * 1-4/2 command


  • behrooz mohamadi nsasab