Academy and Foundation unixmens | Your skills, Your future
2.28K subscribers
6.66K photos
1.37K videos
1.23K files
6.02K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
مفهوم HAL : این نرم افزار یا ابزار یا تکنیک سخت افزار را از نرم افزار جدا می کند و برای نرم افزارها پیچیدگی های موجود در کار کردن با سخت افزارها را کاهش می دهد ، هدف اصلی HAL این است که سخت افزارهای مختلف با کارایی های مختلف و معماری های مختلف به صورت یک سیستم یکپارچه برای سیستم عامل به نمایش گذاشته شوند. HAL به این دلیل در سیستم عامل ها قرار گرفته است برای اینکه دیگر نیازی نباشد برای اینکه یک نرم افزار بتواند از یک سخت افزار استفاده کند لازم باشد در Kernel سیستم عامل دستکاری شود ، شما با HAL دیگر درگیری های سخت افزاری و معماری های مختلف سخت افزاری و هماهنگ کردن آنها با سیستم عامل و نرم افزارهایتان را نخواهید داشت. HAL قابلیت های زیر را به شما می تواند ارائه بدهد :

امکان استفاده حداکثری از کارایی منابع سخت افزاری
امکان کار کردن نرم افزارها فارق از معماری موجود در سخت افزارهای مختلف
امکان مستقل کردن نرم افزارها از سخت افزارها و از بردن وابستگی های آنها
امکان دسترسی مستقیم درایورها به سخت افزارها
ایجاد کردن امکانات توسعه نرم افزارهای قابل حمل یا portable

امروز میخوایم بیشتر با HAL لایه ای که با سخت افزارها در ارتباط هستش و در واقع به صورت عامیانه ی خودمون لباس بسیار ساده تر از چیز یکه سخت افزارهای سیستمی ما هستن رو براشون آماده میکنه, آشنا بشیم. خب در قسمت قبلی در مورد ماهیت و کارایی هر کدوم از لایه ها در سطح سیستم عامل صحبت کردیم ولی خب خارج از لایه ی انتزاعی حتما با خودمون باید بگیم این مواردی که گفته شد رو چطوری میشه بهشون دسترسی داشت. در پوشه root دایرکتوری به نام sys داریم که HAL کل اطلاعات خودش رو اونجا نگه میداره. ابتدا با دستور cd sys به پوشه ی sys رفته سپس دستور ls رو برای نشان دادن محتوای این دایرکتوری میزنیم که محتویات زیر رو داخل سیستم خودتون مشاهده خواهید کرد:

➜ /sys ls
block class devices fs kernel power
bus dev firmware hypervisor module


برای نمونه دایرکتوری block, بلوک های سیستمی که اغلب هاردها یا فضاهای ذخیره سازی داخلی یا خارجی سیستم هستن رو نشون میده. این فضاها میتونن هارد داخلی, خارجی, USB ها و Logical Volume هایی باشند که موقع نصب یا پیکربندی سیستم ایجاد میشوند.

➜ /sys cd block
➜ block ls
dm-0 dm-1 sda sr0


اگر برای نمونه وارد پوشه ی sda بشیم, این امکانات و مشخصات و تنظیمات رو به من خواهد داد:

➜ block cd sda
➜ sda ls
alignment_offset events integrity sda1 sda7 subsystem
bdi events_async power sda2 sda8 trace
capability events_poll_msecs queue sda3 sda9 uevent
dev ext_range range sda4 size
device holders removable sda5 slaves
discard_alignment inflight ro sda6 stat


در کل یک سری اطلاعات به صورت فایل از سخت افزارهای سیستم در اختیار قرار میده و کاری به اسم و مدل سخت افزارهای ما نداره, فقط میگه هارد تو فلان مدله و این امکانات رو در اختیار میذاره. در مورد دایرکتوری مربوط به HAL که اطلاعات سخت افزاری رو نشون میده صحبت کردیم ولی خب لینوکس به باز بودن و قابلیت تغییر مشهوره و چقد خوب میشه اگه بتونیم به بعضی از سخت افزارهامون دسترسی و باهاشون تعامل داشته باشیم.
در پوشه ی root دایرکتوری به نام proc وجود داره که ما علاوه بر دیدن پروسس های سیستم میتونیم به سخت افزارهامون و اطلاعات کرنل (هسته سیستم عامل) مون به صورت انتزاعی هم دسترسی داشته باشیم(اطلاعاتی رو ازشون بخونیم یا روشون بنویسیم.)
➜ ~ cd /proc
➜ /proc ls
1 1326 1505 184 20 30 459 7 832 loadavg
10 1336 1516 1840 2066 31 46 7010 834 locks
1032 1339 1547 1849 2067 3190 462 720 9 mdstat
11 1343 1592 185 2068 32 4641 721 938 meminfo
110 1348 16 1851 2080 33 47 724 acpi misc
111 1351 1606 1853 2082 34 479 726 asound modules
112 1357 1611 1869 2090 3466 48 727 buddyinfo mounts
1129 1363 1622 1870 21 36 480 74 bus mtrr
113 1383 1626 1875 2101 3694 4875 745 cgroups net
1130 14 1628 1883 2115 37 49 747 cmdline pagetypeinfo
1131 1404 1633 1885 2119 3734 50 748 consoles partitions
1133 1405 1636 1886 2122 3778 51 752 cpuinfo sched_debug
1134 1412 1673 1887 2126 378 5167 753 crypto schedstat
114 1415 1678 1889 2154 38 52 754 devices scsi
115 1426 1681 1893 2184 3811 53 755 diskstats self
116 1427 1693 1894 22 385 54 756 dma slabinfo
117 1434 1698 1895 2212 386 542 758 driver softirqs
118 1447 17 1901 2213 387 55 759 execdomains stat
1184 1448 1714 1917 2254 388 56 764 fb swaps
119 1449 1728 1927 2270 3882 565 769 filesystems sys
12 1450 1737 1928 23 389 58 776 fs sysrq-trigger
120 1457 1751 1934 24 39 589 785 interrupts sysvipc
121 1458 1755 1948 2479 4 59 786 iomem thread-self
122 1464 1757 1961 25 40 594 787 ioports timer_list
123 1465 1762 1962 2592 4085 6 788 irq tty
1264 1468 1764 1974 26 4152 60 789 kallsyms uptime
1268 1474 1775 1976 2649 4161 612 790 kcore version
1270 1476 1777 1977 27 4241 632 791 keys vmallocinfo
1275 1477 1783 1978 28 43 635 8 key-users vmstat
1277 1478 18 1979 2812 44 6460 806 kmsg zoneinfo
13 1494 182 1980 2822 448 6746 811 kpagecgroup
130 1498 1822 1983 2840 45 6769 814 kpagecount
131 15 1829 1984 29 4503 697 823 kpageflags
1322 1501 1836 2 2978 451 698 830 latency_stats


چون یادگیری ما قرار هست ساده باشه و نمیخوایم با تنظیمات پیچیده جلو بریم به سراغ پوشه ی procsysfs خواهیم رفت و که فایلی با عنوان file_max که حداکثر تعداد باز بودن فایل درون سیستم عامل از طریف یک کاربر را مشخص میکند:

➜ fs ls
aio-max-nr file-nr mqueue protected_hardlinks
aio-nr inode-nr nr_open protected_symlinks
binfmt_misc inode-state overflowgid quota
dentry-state inotify overflowuid suid_dumpable
dir-notify-enable lease-break-time pipe-max-size
epoll leases-enable pipe-user-pages-hard
file-max mount-max pipe-user-pages-soft
➜ fs cat file-max
385672


که به صورت کاملا Live قابلیت تغییر

[root@fedora]/proc/sys/fs# echo 100000 > file-max
[root@fedora]/proc/sys/fs# cat file-max
100000


همچنین در پوشه ی proc به اطلاعات دیگه مثل اطلاعات cpu و ریز جزيیات هر پروسسور خودتون و همچنین اطلاعات حافظه به منظور درک بهتر نسبت به جزییات سیستم خودتون داشته باشید, میتونید با دستور زیر دسترسی پیدا کنید:

➜ /proc cat cpuinfo| less



➜ /proc cat meminfo | less


و همچنین تمام بلوک های حافظه قابل خواندن سیستمی را هم از طریق دستور زیر میتوانیم ببینیم :

➜ /proc cat mounts


تنظیمات جالب شبکه ای سطح کرنل سیستم عامل هم داخل پوشه ی procsysnet موجود میباشد, که شما میتونید تنظیمات مربوط به حافظه tcp در سیستم خودتون (tcp-mem) و یا اطلاعات مربوط به پروتکل icmp (دریافت ایمیل) و اطلاعات مربوط به بسته های ip را تغییر دهید. برای نمونه بعد از گرفتن دستور cat ip-forward میتونید مقدار این دستور رو دست خوش تغییر کنید در واقع این فایل به شما میگه که آیا سیستم شما نقض روتر را ایفا میکند و ip ها را از از خود به مسیر دیگری عبور میدهد
مفهوم dbus چیست ؟!
همینطور که از اسمش مشخصه dBUS مثل یک اتوبوسه ! که وظیفه ی اطلاع رسانی رو داره ٬‌یعنی چی ؟! یعنی وقتی فلان دیوایس رو متصل کردید به نرم افزار میگه که فلان مثلا کیبورد به دستگاه متصل شد میتونی ازش استفاده کنی ...
کاربرد dbus چی هست ؟ برای اینکه پاسخ این سئوال رو پیدا کنید از خودتون یک سئوال بپرسید ، آیا همه نرم افزارها از جمله سیستم عامل و application های کاربردی سیستم باید مستقیما با دایرکتوری های dev یا proc یا sys کار کنن ؟ طبیعتا خیر نیازی نیست ، این بین ما میایم یک واسط قرار میدیم که نقش دلال رو داره و واسطه بین همه این مجموعه ها و نرم افزارها هست ، الان فرض کنید که یک سخت افزار به سیستم شما اضافه میشه و شما از یک دسکتاپ به نام KDE استفاده می کنید ، این dbuss هست که میره اطلاعات مربوط به سخت افزار رو از لایه های پایین دریافت می کنه و سیگنال اینکار رو به سمت Desktop Managerr میفرسته و شما از محیط گرافیکی متوجه میشید که خوب یک سخت افزار جدید به سیستم اضافه شده یا حذف شده ، هر موقع اسم dbus رو شنیدید دقیقا یاد یک اتوبوس بیوفتید که قرار هست مسافرانش رو به مقصد برسونه و به محل کار مسافراش هم میگه کاری نداشته باشید مسافراتون از کجا میان شما باهاشون کار داشتید من آوردمشون ، کاری نداشته باشید هم می برمشون .

مفهوم dev یا udev چیست ؟!
یودو یه قانون گذار به تمام معناست ٬ چیزی که وظیفه ی قانون گذاری روی دستگاه های سخت افزاری رو داره . مثلا شما یک فلش به دستگاه وصل کردی با udev میتونی بهش دستور بدی که هر وقت مثلا این فلش وصل شد فایل های درایو D رو فقط عکس هاش رو کپی کن داخل همین فلش مخصوص ! خیلی هم باحاله !

دایرکتوری sys یا sysfs چی هست ؟!
یک دایرکتوری که اطلاعات HAL رو ذخیره میکنه و HAL وظیفه کنترل کردن sys رو داره . مثلا شما میخوایید یک آمار از سیستمتون بگیرید ببینید چه سخت افزارهایی متصل هستش میتونید با دستور sys کل سخت افزارهای بخش های مختلفی که متصل هستند رو دربیارید . sysfs هم در حقیقت مخفف sys file system هستش که کاربرد نداره و همون از sys باید استفاده بشه .


دایرکتوری Proc یا procfs در لینوکس چیست ؟!
مکانی برای ذخیره اطلاعات پردازنده ها هست و شما با استفاده از دایرکتوری proc میتونید اطلاعات پردازنده هاتون رو داشته باشید .
البته این مفهوم خیلی خیلی قدیمی هست و برمیگرده به سالهای 1990 و همون حدودها بنابراین یه مقدار دیدتون رو قدیمیتر کنید ، خوب در اون وهله زمانی ما مجبور بودیم دونه دونه پردازش ها یا Process های سیستم رو مدیریت کنیم ، خوب قبل از اینکه ادامه بدیم یک یادآوری هم بکنیم ، همه چیز در سیستم عامل لینوکس و خانواده یونیکس در قالب فایل هست و procfs هم همین هست یعنی یک فایل هست که داخلش مدیریت پردازش های CPU ما انجام میشه ، وقتی یک دستگاه یه سیستم ما متصل میشه داخل این فایل محتوایی قرار می گیره که باعث میشه ما بتونیم پردازش های مربوط به اون سخت افزار رو انجام بدیم ، خوب با توجه به حرف خودمون که همه چیز در قالب فایل ذخیره میشه بنابراین محتویات sysfs هم باید داخل یک فایل و یک فولدر قرار بگیرند که این محتویات در دایرکتوری به نام proc/ در سیستم عامل لینوکس وجود داره ، توجه کنید که proc/ یک فایل سیستم هست .

مفهوم lsmod (ال اس مود )‌ چیست ؟!
در واقع ls مخفف list size و بخش بعدی mod مخفف ماژول module هستش . یعنی لیست ماژول های که کرنل (هسته لینوکس) لود کرده است .
برای حذف کردن Drive Kernel Modulee ها ما می توانیم به راحتی با لیست کردن ماژول های کرنل با دستور lsmod و مشاهده نام آن ماژول و در نهایت وارد کردن دستور rmmod آن ماژول را حذف کنیم ، اما چگونه می توانیم آن را نصب کنیم ؟ برای نصب کردن Drive Kernel Module ما از دو دستور insmod و modprobe استفاده می کنیم ، اما مهمترین نکته تفاوت بین این دو دستور است ، زمانیکه صحبت از insmod می شود فقط و فقط درایورهایی نصب می شوند که چند فایل وابسته ندارند ، یعنی در اصطلاح فایل شما دارای Dependency نیست ، در چنین حالتی دستور insmod کار می کند ، اما در بسیاری از موارد ما هیچوقت از چنین دستوری استفاده نمی کنیم زیرا فاقد کارایی می باشد و اکثر درایورهای ما امروزه دارای وابستگی یا Dependency هستند ، برای اینکه در سیستم بصورت خودکار این وابستگی ها یا Dependency ها نصب شوند ما از دستور modprobe استفاده می کنیم .

مفهوم lsusb در لینوکس
مخفف ال اس را که میدانیم usb هم که همه با آن آشنا هستیم ! خب حله الان ؟! LSUSB راهیست برای لیست کردن usb های متصل به سیستم در لینوکس ...


#linux #dbus #udev @unixmens
🔰 ابزار شش کلاه تفکر به شما کمک میکنه نسبت به یک موضوع خاص دید 360 درجه پیدا کنید...
به درخواست دوستان سروری با مشخصات زیر به فروش میرسد ,
Forwarded from Dan
DELL
CPU : 2 x X5650
RAM : 74 GB Ram
SSD : 256GB
HDD: 3 x 4TB WD Enterprise
LAN : 2 x 1GB
ilo
۱۱ میلیون تومان
فیزیکی موجود می باشد.

در صورت نیاز ، اجاره فضا در دیتاسنتری مانند پارس آنلاین برای این سرور ماهیانه ۲۰۰.۰۰۰ تومان می باشد.

۰۹۱۲۰۳۲۸۲۷۲
پیمان هدایتی
کتاب مدیریت بسته ها در گنو/لینوکس
https://unixmen.ir/%da%a9%d8%aa%d8%a7%d8%a8-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%a8%d8%b3%d8%aa%d9%87-%d9%87%d8%a7-%d8%af%d8%b1-%da%af%d9%86%d9%88-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/
آنچه در این کتاب می خوانیم :
مفهوم نرم افزار های متن باز
مدیریت بسته چیست ؟
بروز رسانی بسته ها در توزیع های محتلف
پیدا کردن بسته ها در توزیع های مختلف
مشاهده مشخصات کامل بسته ها در توزیع های مختلف
نصب بسته ها در توزیع های مختلف
نصب از سیستم محلی
حذف یک بسته در توزیع های مختلف
ویژگی های مدیر بسته Yum
مفهوم ریپوزیتوری ها
انواع ریپوزیتوری در رد هت بیس ها
بررسی رابط گرافیکی نصاب ها ی بسته
بررسی yumdownloader
تبدیل بسته های rpm به deb و سورس و بالعکس
بررسی مدیر بسته pip
بررسی yarn
بررسی slackpkg
ایجاد محزن محلی در دبیان بیس ها
و ...
#linux #package_manager #yashar_esmaildokht @unixmens
با 7 مدرک پردرآمد در رشته IT در سال 2017 آشنا شوید.

مجله معتبر PC Magazine در گزارشی 7 مدرک پردرآمد در حوزه IT را معرفی کرد. این مدارک معتبر عبارتند از:

1. Certified in Risk and Information Systems Control (CRISC)
2. Certified Information Security Manager (CISM)
3. AWS Certified Solutions Architect – Associate
4. Certified Information Systems Security Professional (CISSP)
5. Certified Information Systems Auditor (CISA)
6. Project Management Professional (PMP)
7. Citrix Certified Professional – Virtualization (CCP-V)

🔶از نکات قابل توجه در این گزارش:
▪️3 مدرک از 7 مدرک پر درآمد در حوزه امنیت اطلاعات هستند
▪️2 مدرک مرتبط با مجازی سازی و Cloud هستند

#security @unixmens
life-quality-30.pdf
951.1 KB
کتاب افزایش کیفیت زندگی
سن ، جز واژه ، مفهومی نیست // مهم رسیدن به مناسب ترین حالت بودن هست
نوشته ای که از سالها پیش می خوانم و انرژی بخش هست برای من در هر زمان
درآمد پزشکان و مهندسان در کشورهای جهان
مرکز آموزش شرکت عصر دانش افزار به منظور تکمیل کادر آموزشی خود از افرادی که در زمینه Oracle APEX از تخصص و تجربه ی کافی در حوزه آموزش برخوردارند دعوت به همکاری می نماید. #oracle @unixmens
معرفی قابلیت جدید Temporal Validity در SQL نسخه 12c

این قابلیت جدید به شما امکان فراخوانی رکوردها با تعریف ستونهای پریود زمانی روی جدول در یک زمان مشخص (point in time) را با استفاده از قابلیت flashback می دهد. ابتدا جدول را به این قابلیت مجهز می کنیم (چه در زمان ایجاد و چه پس از آن).

ALTER TABLE employees ADD PERIOD FOR emp_valid_time (start_time_column, end_time_column);


این دستور دو ستون invisible با نامهای start_time_column و end_time_column را به جدول employees اضافه می کند که شما نمی توانید آنها را visible کنید. در این مثال اگر دستور را بدون تعیین نام ستونها اجرا کنید خود اوراکل دو ستون با نامهای emp_valid_time_start و emp_valid_time_end ایجاد می کند. یکی از محدودیتهای اصلی این قابلیت عدم کارکرد آن در محیط multitenant است. محدودیت دیگر آن عدم کارکرد ILM است مگر اینکه partition بندی را بر اساس ستون end انجام دهید.

پس از تجهیز جدول به این قابلیت نتیجه کوئری آن (به صورت پیش فرض) تمامی نسخه های تغییرات رکوردها (با توجه به flashback retention) خواهد بود. نام خانوادگی کارمند 100 سه بار تغییر کرده است و شما هر سه نسخه را می بینید.

SELECT * FROM employees;

EMPNO LAST_NAME EMP_PERIOD_START EMP_PERIOD_END
—--- —---------- —------— —------—
100 Valad 01-JAN-18
100 Vald 01-JAN-18 11-FEB-18
100 Valadkhani 11-FEB-18
101 Gerard 01-JAN-18 08-FEB-18
101 Grard 08-FEB-18
102 nosin 01-JAN-18

اگر قصد دارید فقط دیتای جاری را در نتیجه کوئری ببینید، در سطح session تنظیم را تغییر دهید و مجدد کوئری را اجرا کنید.

BEGIN
dbms_flashback_archive.enable_at_valid_time('CURRENT');
END;
/

SELECT * FROM employees;

یا کوئری را به صورت زیر اجرا کنید.

SELECT * FROM employees AS OF PERIOD FOR emp_valid_time SYSDATE;

اگر قصد دارید نتیجه کوئری را در یک زمان مشخص ببینید، یکی از روشهای زیر را انتخاب کنید.

BEGIN
sys.dbms_flashback_archive.enable_at_valid_time('ASOF',TO_DATE( '30-01-2018', 'DD-MM-YYYY' ));
END;
/

SELECT * FROM employees;

<OR>

SELECT * FROM employees
AS OF PERIOD FOR emp_valid_time TO_DATE( '30-01-2018', 'DD-MM-YYYY' );

برای برگشتن به وضعیت پیش فرض نمایش دیتا در سطح session دستور زیر را اجرا کنید.

BEGIN
sys.dbms_flashback_archive.enable_at_valid_time('ALL');
END;
/
#oracle @unixmens