My folder vip
76 subscribers
202 photos
82 videos
622 files
499 links
آرشیو یادگیری هک/امنیت

اینجا فولدر شخصی من برای یادگیری و ثبت مطالب Linux، Networking و Cyber Security است.

🔐 LPIC | Network+ | CEH | SANS
🐧 Linux & System Administration
🌐 Networking & Troubleshooting
💻 Python & Security Tools
🧪 Labs | CTF | Prac
Download Telegram
فصل پنجم — قسمت چهل و هشتم - INTRO 🐧
راه اندازی اولیه و مجازی سازی

————————-
در فصل پنجم می‌خواهیم ببینیم وقتی یک سیستم لینوکسی روشن می‌شود چه اتفاقی می‌افتد و چطور می‌توانیم روند Boot را مدیریت کنیم. همچنین با مجازی‌سازی در لینوکس آشنا می‌شویم.

—————-

1️⃣ تغییر در راه‌اندازی سیستم و Reboot
یاد می‌گیریم:
سیستم چطور Boot می‌شود؟
reboot و shutdown
تغییر وضعیت سیستم
مدیریت سرویس‌ها در زمان Boot
Runlevel / Target
بررسی وضعیت Boot

——————-

2️⃣ نصب و مدیریت Boot Manager
اینجا با Boot Manager آشنا می‌شویم.
مهم‌ترین چیزی که در لینوکس می‌بینیم:
GRUB

مثلاً وقتی سیستم روشن می‌شود و صفحه‌ای می‌بینی که می‌توانی بین چند Kernel یا سیستم‌عامل انتخاب کنی، معمولاً GRUB در این قسمت نقش دارد.

————————

3️⃣ مجازی‌سازی در لینوکس 🖥
می‌بینیم Virtualization چیست و لینوکس چطور می‌تواند:
Linux Host
│
├── VM 1 → Debian
├── VM 2 → Ubuntu
└── VM 3 → Fedora

را اجرا کند.
با مفاهیمی مثل:
KVM
QEMU
Virtual Machine
Host / Guest
Hypervisor
آشنا می‌شویم.

——————

4️⃣ مراحل راه‌اندازی سیستم 🚀
از لحظه‌ای که دکمه Power را می‌زنیم تا رسیدن به Login:
Power ON
↓
BIOS / UEFI
↓
Bootloader (GRUB)
↓
Linux Kernel
↓
initramfs
↓
systemd
↓
Services
↓
Login

این بخش خیلی مهم است چون در فصل‌های قبلی هم با بعضی از این مفاهیم برخورد کردیم.
👏1
فصل پنجم — قسمت چهل و نهم 🐧
مراحل
راه اندازی در لینوکس
————————-

وقتی دکمه Power را می‌زنیم، لینوکس یک‌دفعه اجرا نمی‌شود؛ چند مرحله پشت سر هم اتفاق می‌افتد.

🧠 تصویر کلی
Power ON
↓
BIOS / UEFI
↓
Bootloader (GRUB)
↓
Kernel
↓
initramfs
↓
systemd
↓
Services
↓
Login

حالا مرحله‌به‌مرحله 👇

————-

1️⃣ روشن شدن سیستم → BIOS / UEFI
اول سیستم روشن می‌شود و Firmware سخت‌افزار را بررسی می‌کند.
مثلاً:
CPU
RAM
Disk
Keyboard
Network
...

در سیستم‌های قدیمی‌تر معمولاً BIOS و در سیستم‌های جدیدتر UEFI داریم.

——————

2️⃣ Bootloader → GRUB
بعد Firmware دنبال یک Bootloader می‌گردد.
در بیشتر سیستم‌های Linux:
GRUB

وظیفه GRUB این است که Kernel لینوکس را پیدا و اجرا کند.
اگر چند سیستم‌عامل داشته باشی، GRUB می‌تواند منوی انتخاب هم نشان دهد:
Ubuntu
Advanced options for Ubuntu
Windows


————-

3️⃣ Kernel وارد کار می‌شود 🧠

GRUB، Kernel لینوکس را در حافظه قرار می‌دهد و اجرا می‌کند.

Kernel مسئول مدیریت چیزهایی مثل:

CPU
RAM
Disk
Network
Hardware
Processها

است.

—————-

4️⃣ initramfs
قبل از اینکه سیستم فایل اصلی / کاملاً در دسترس قرار بگیرد، معمولاً یک محیط موقت به نام:
initramfs

راه‌اندازی می‌شود.
مثلاً اگر برای پیدا کردن Root Filesystem به یک Driver یا ابزار خاص نیاز باشد، initramfs می‌تواند آن را فراهم کند.
بعد سیستم به Root Filesystem اصلی منتقل می‌شود.

——————

systemd 🚀
در سیستم‌های مدرن Linux معمولاً:
systemd

اولین Process اصلی سیستم است.
PID آن معمولاً:
ps -p 1

و می‌بینی:
PID 1

systemd سرویس‌ها و بخش‌های مختلف سیستم را راه‌اندازی می‌کند.


——————-
🔎 دیدن پیام‌های Kernel با dmesg
بعد از Boot می‌توانی پیام‌هایی که Kernel ثبت کرده را ببینی:
dmesg

مثلاً:
dmesg | less

برای جستجو:
dmesg | grep -i usb

یعنی پیام‌های مربوط به USB را پیدا کن.
یا:
dmesg | grep -i error

🧠 dmesg = پیام‌های مربوط به Kernel و Hardware
——————

📖 journalctl چیست؟
در سیستم‌هایی که systemd دارند، journal لاگ‌های سیستم را جمع‌آوری می‌کند.
برای دیدن لاگ‌ها:
journalctl

لاگ‌های Boot فعلی:
journalctl -b

لاگ Boot قبلی:
journalctl -b -1

فقط خطاهای Boot:
journalctl -b -p err

و برای دیدن Kernel:
journalctl -k

فرق مهم:
dmesg
↓
پیام‌های Kernel

journalctl
↓
لاگ‌های systemd و سرویس‌ها + Kernel و بخش‌های مختلف سیستم



———————-

📁 لاگ Boot کجاست؟
این قسمت را یک مقدار اصلاح کنیم:
در Debian/Ubuntu ممکن است بعضی لاگ‌های مربوط به Boot در:
/var/log/

باشند، اما وجود /var/log/boot به‌صورت ثابت و یکسان در همه نسخه‌ها را نباید فرض کرد.
در سیستم‌های جدید، برای بررسی Boot بهتر است از:
journalctl -b

استفاده کنی.
در بعضی سیستم‌های RHEL/Fedora ممکن است فایل‌هایی مثل:
/var/log/boot.log



——————-


🖥 آیا سیستم با UEFI Boot شده؟
یک روش خیلی ساده:
ls /sys/firmware/efi

اگر این مسیر وجود داشته باشد، معمولاً یعنی سیستم با UEFI Boot شده.
مثلاً:
ls /sys/firmware/efi

اگر پوشه‌هایی مثل این دیدی:
efivars

fw_platform_size

runtime

...

یعنی:
UEFI ✅

اگر مسیر وجود نداشت:
No such file or directory

معمولاً سیستم با حالت Legacy BIOS بوت شده است.
👏1
فصل پنجم — قسمت پنجاهم 🐧
نگاهی به بوت لودر


—————————-
قبل از GRUB یک نکته را یاد بگیریم:
🧠 Bootloader چیست؟
Bootloader یک برنامه کوچک است که بعد از BIOS/UEFI اجرا می‌شود و سیستم‌عامل را برای اجرا آماده می‌کند.
در لینوکس معروف‌ترین Bootloader:
GRUB

است.
مثال واقعی:
Power ON
↓
BIOS / UEFI
↓
GRUB ← اینجا
↓
Linux Kernel
↓
Linux



———————-

1️⃣ تاریخچه GRUB
اول نسخه قدیمی‌تر را داشتیم:
GRUB Legacy

بعد نسخه جدیدتر آمد:
GRUB 2

امروزه تقریباً تمام توزیع‌های مدرن Linux از GRUB 2 استفاده می‌کنند.

——————-

2️⃣ GRUB Legacy چیست؟
GRUB Legacy نسخه قدیمی GRUB است.
ساختار تنظیمات اصلی آن معمولاً:
/boot/grub/menu.lst

بود.
مثلاً در آن می‌توانستیم مشخص کنیم:
کدام Kernel اجرا شود؟
Root filesystem کجاست؟
چه Kernel Parameterهایی ارسال شوند؟



——————-

3️⃣ GRUB 2 چیست؟
GRUB 2 ساختار جدیدتر و قدرتمندتری دارد.
یکی از تفاوت‌های مهم:
GRUB Legacy
↓
menu.lst

ولی در:
GRUB 2
↓
grub.cfg

قرار داریم.
مسیر معمول:
/boot/grub/grub.cfg

در سیستم‌های UEFI ممکن است فایل‌های مربوط به GRUB را در مسیرهایی مثل:
/boot/efi/

هم ببینی.

———————-
4️⃣ فایل grub.cfg چیست؟
فایل اصلی‌ای که GRUB هنگام Boot از آن برای منوی Boot و تنظیمات استفاده می‌کند:
/boot/grub/grub.cfg

مثلاً داخلش ممکن است اطلاعاتی مربوط به:
Kernel
initrd
root
boot parameters

ببینی.
⚠️ نکته مهم: معمولاً نباید grub.cfg را مستقیم و دستی ویرایش کنیم.
چرا؟
چون این فایل معمولاً تولیدشده (generated) است و با تغییر تنظیمات اصلی دوباره ساخته می‌شود.

——————-
5️⃣ تنظیمات اصلی GRUB کجاست؟
یکی از مهم‌ترین فایل‌ها:
/etc/default/grub

مثلاً:
cat /etc/default/grub

ممکن است چیزی شبیه این ببینی:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

معنی:
GRUB_DEFAULT=0

اولین گزینه Boot به صورت پیش‌فرض انتخاب شود.
GRUB_TIMEOUT=5

پنج ثانیه منتظر بمان.
GRUB_CMDLINE_LINUX_DEFAULT

پارامترهایی که هنگام اجرای Kernel ارسال می‌شوند.
————-

6️⃣ تغییر تنظیمات GRUB
مثلاً:
nano /etc/default/grub

فرض کن:
GRUB_TIMEOUT=5

را تغییر بدهیم:
GRUB_TIMEOUT=10

یعنی منوی GRUB به‌جای ۵ ثانیه، ۱۰ ثانیه نمایش داده شود.
اما هنوز کار تمام نشده!
باید تنظیمات جدید را به grub.cfg اعمال کنیم.
در Debian/Ubuntu:
update-grub

این فرمان معمولاً فایل:
/boot/grub/grub.cfg

را دوباره تولید می‌کند.

———————-

🔥 چند دستور کاربردی
دیدن GRUB:
ls /boot/grub

دیدن تنظیمات:
cat /etc/default/grub

جستجوی Kernel در GRUB:
grep menuentry /boot/grub/grub.cfg

تولید مجدد در Debian/Ubuntu:
update-grub
👏1
فصل پنجم — قسمت پنجاه و یکم 🐧
راه اندازی دستی لینوکس


———————
راه‌اندازی دستی لینوکس
گاهی فایل تنظیمات GRUB مشکل پیدا می‌کند یا سیستم نمی‌تواند به‌صورت عادی بوت شود. در این حالت می‌توانیم از خود GRUB به‌صورت دستی سیستم‌عامل را بالا بیاوریم.
1. ورود به محیط GRUB
هنگام روشن شدن سیستم، در منوی GRUB معمولاً با فشردن Shift یا در بعضی سیستم‌ها Esc می‌توان منوی GRUB را نمایش داد.
سپس:
کلید e → ویرایش Entry مربوط به لینوکس.
———————-

2. دستورات insmod
در محیط GRUB می‌توان ماژول‌های موردنیاز را بارگذاری کرد:
insmod linux
insmod gzip
insmod lvm


linux → پشتیبانی از کرنل لینوکس
gzip → برای فایل‌های فشرده
lvm → برای دسترسی به Logical Volumeهای LVM

———————
3. دستور ls
با:
ls

می‌توان دیسک‌ها و پارتیشن‌هایی که GRUB شناسایی کرده را مشاهده کرد.
مثلاً:
(hd0) (hd0,msdos1) (hd0,msdos2)

حالا می‌توانیم بررسی کنیم کدام پارتیشن شامل فایل‌های لینوکس است:
ls (hd0,msdos1)/

ممکن است چیزهایی مثل این ببینیم:
boot/
etc/
home/
usr/
var/


——————-

4. تعیین Root
اگر پارتیشن موردنظر hd0,msdos1 باشد:
set root=(hd0,msdos1)

یعنی به GRUB می‌گوییم:
«از این پارتیشن به‌عنوان محل فایل‌های سیستم استفاده کن.»


———————-

5. ساخت مجدد فایل تنظیمات GRUB
برای ساخت مجدد فایل grub.cfg در سیستم لینوکسی، دستور درست این است:

grub2-mkconfig > /boot/grub2/grub.cfg
👏1
فصل پنجم — قسمت پنجاه و دوم 🐧
single user mode


———————
Single User Mode در AlmaLinux 9
Single User Mode یا حالت تک‌کاربره یک حالت ویژه برای عیب‌یابی و تعمیر سیستم لینوکس است که در آن سیستم با حداقل سرویس‌های لازم اجرا می‌شود.
🔹 Single User Mode به چه درد می‌خورد؟
مهم‌ترین کاربردهایش:
بازیابی یا تغییر پسورد Root
تعمیر فایل‌سیستم
رفع مشکلات بوت
تعمیر تنظیمات سیستم
انجام کارهای مدیریتی وقتی سیستم عادی بالا نمی‌آید
مثلاً اگر پسورد root را فراموش کرده باشیم، می‌توانیم از این روش برای تغییر آن استفاده کنیم.

————————
روش اول — rd.break در AlmaLinux 9
مرحله 1 — ورود به GRUB
سیستم را Restart کن.
در صفحه GRUB:
روی AlmaLinux بایست → کلید e را بزن.
—————————
مرحله 2 — پیدا کردن خط Kernel
خطی را پیدا کن که با چیزی شبیه این شروع می‌شود:
linux /vmlinuz-...

یا:
linux16 /vmlinuz-...

در انتهای همین خط اضافه کن:
rd.break

مثلاً:
linux /vmlinuz-... root=/dev/mapper/almalinux-root ro ... rd.break


——————

مرحله 3 — اجرای بوت
بعد از اضافه کردن:
rd.break

کلید:
Ctrl + X

را بزن.
سیستم وارد محیط Recovery می‌شود و معمولاً چیزی شبیه این می‌بینی:
switch_root:/#


——————

مرحله 4 — قابل نوشتن کردن /sysroot
در این مرحله سیستم اصلی معمولاً در /sysroot قرار دارد.
اول آن را Read/Write می‌کنیم:
mount -o remount,rw /sysroot


————————

مرحله 6 — تغییر پسورد Root
دستور:
passwd root

پسورد جدید را دو بار وارد کن.
مثلاً:
New password:

Retype new password:

passwd: all authentication tokens updated successfully.


————————-

مرحله 7 — SELinux
چون در محیط Recovery تغییراتی روی سیستم انجام داده‌ایم، برای اینکه SELinux در بوت بعدی Contextها را دوباره تنظیم کند:
touch /.autorelabel

این فایل به سیستم می‌گوید:
«در بوت بعدی فایل‌ها را دوباره با Context مناسب SELinux برچسب‌گذاری کن.»


——————

مرحله 8 — خروج و Restart
ابتدا:
exit

بعد:
reboot

سیستم دوباره راه‌اندازی می‌شود.
ممکن است به دلیل:
touch /.autorelabel

بوت اول کمی بیشتر طول بکشد؛ چون SELinux در حال Relabel کردن فایل‌هاست.

———————-

روش دوم — init=/bin/bash
یک روش دیگر برای ورود مستقیم به Shell، اضافه کردن این پارامتر به انتهای خط Kernel است:
rw init=/bin/bash

یعنی در GRUB:
linux /vmlinuz-... root=/dev/mapper/almalinux-root ro ... rw init=/bin/bash

بعد:
Ctrl + X

را بزن.
در این روش، Kernel به جای اجرای فرآیند معمول init، مستقیماً:
/bin/bash

را اجرا می‌کند.
سپس بسته به وضعیت Mountها، ممکن است لازم باشد Root filesystem را Read/Write کنی.
مثلاً:
mount -o remount,rw /

بعد:
passwd root

و برای SELinux:
touch /.autorelabel

سپس:
exec /sbin/reboot


—————

enforcing=0 چیست؟

enforcing=0

این پارامتر باعث می‌شود SELinux در آن بوت به حالت Permissive برود.
یعنی SELinux در آن بوت جلوی عملیات را نمی‌گیرد، ولی همچنان می‌تواند موارد نقض Policy را گزارش کند.
مثلاً در بعضی روش‌های Recovery ممکن است انتهای خط Kernel این‌طور باشد:
rd.break enforcing=0

اما برای بازیابی معمول پسورد در AlmaLinux 9، روش rd.break به‌تنهایی و سپس mount، chroot، passwd و touch /.autorelabel مسیر اصلی و قابل‌فهم‌تری است.

——————————
👏1
فصل پنجم — قسمت پنجاه و سوم 🐧
single user mode

اما روی الما 10
———————
1️⃣ بوت از ISO
ISO آلما لینوکس 10 را به ماشین وصل کن و سیستم را از روی آن Boot کن.
در منوی اولیه گزینه‌ای شبیه:
Troubleshooting

را انتخاب کن.
سپس گزینه:
Rescue a AlmaLinux system

را بزن.

———————

2️⃣ پیدا کردن سیستم نصب‌شده
محیط Rescue سیستم نصب‌شده را پیدا می‌کند و معمولاً از تو می‌پرسد که آیا می‌خواهی سیستم نصب‌شده را Mount کند.
گزینه:
1) Continue

را انتخاب کن.
در این حالت سیستم نصب‌شده معمولاً در:
/mnt/sysroot

Mount می‌شود.

——————-

3️⃣ ورود به سیستم نصب‌شده
حالا:
chroot /mnt/sysroot

از این لحظه به بعد، انگار وارد سیستم AlmaLinux نصب‌شده شده‌ای.
مثلاً:
passwd root


———————


4️⃣ تغییر پسورد Root
passwd root

رمز جدید را دو بار وارد کن.
اگر موفق باشد:
passwd: all authentication tokens updated successfully.


————

5️⃣ SELinux
برای اینکه بعد از تغییرات، SELinux هنگام بوت دوباره Contextها را بررسی کند:
touch /.autorelabel


—————————-

6️⃣ خروج
exit

بعد سیستم را Restart کن:
reboot

ISO/CD را قبل از بوت بعدی از ماشین جدا کن تا دوباره وارد محیط نصب نشود.


——————-
❤1👏1
فصل پنجم — قسمت پنجاه و چهارم 🐧
systemd

———————
🧠 systemd چیست؟
بعد از اینکه Kernel بالا آمد، سیستم باید بقیه قسمت‌ها را راه‌اندازی کند؛ مثل:
شبکه
SSH
سرویس‌ها
لاگ‌ها
زمان سیستم
سرویس‌های مختلف
اینجا Init System وارد عمل می‌شود.
در لینوکس دو سیستم معروف داریم:
SysVinit

systemd

امروزه بیشتر توزیع‌های مدرن مثل Debian، Ubuntu، Fedora، RHEL و AlmaLinux از systemd استفاده می‌کنند.

—————————
🔹 ساختار کلی systemd
BIOS / UEFI
↓
GRUB
↓
Kernel
↓
systemd (PID 1)
↓
Services / Targets / Mounts / ...


نکته مهم:
ps -p 1

معمولاً می‌بینی:
PID 1

systemd

یعنی systemd اولین Process سیستم است.
——————-

🔹 systemctl چیست؟
مهم‌ترین ابزار مدیریت systemd است:
systemctl

مثلاً:
systemctl status ssh

یا در بعضی سیستم‌های Red Hat:
systemctl status sshd

————
🔹 مشاهده Unitها
نمایش Unitهای فعال:
systemctl list-units

نمایش تمام Unit Fileها:
systemctl list-unit-files


——————

🔹 Unit چیست؟
در systemd تقریباً همه چیز به صورت Unit مدیریت می‌شود.
مثلاً:

.service
.socket
.target
.mount
.timer
.device

مثلاً:

systemctl status sshd.service


——————

دیدن فایل سرویس:
systemctl cat sshd

مثلاً:
[Unit]
Description=OpenSSH server

[Service]
ExecStart=...

[Install]
WantedBy=multi-user.target


———————————-

🎯 Target چیست؟
در SysVinit چیزی به نام Runlevel داشتیم.
در systemd مفهوم مشابهی با Target داریم.
مثلاً:
Runlevel 3
↓
multi-user.target

Runlevel 5
↓
graphical.target

مشاهده Target پیش‌فرض:
systemctl get-default

مثلاً:
graphical.target

تغییر به حالت متنی:
systemctl set-default multi-user.target

تغییر به حالت گرافیکی:
systemctl set-default graphical.target



——————-

🔥 مدیریت سرویس‌ها
روشن کردن سرویس
systemctl start sshd

خاموش کردن
systemctl stop sshd

ریستارت
systemctl restart sshd

بررسی وضعیت
systemctl status sshd

بررسی فعال بودن
systemctl is-active sshd

خروجی مثلاً:
active


—————-

🔄 اجرا شدن سرویس بعد از روشن شدن سیستم
فعال کردن:
systemctl enable sshd

یعنی:
بعد از Boot سیستم، SSH هم خودکار اجرا شود.

غیرفعال کردن:
systemctl disable sshd



—————————
🛑 Power Management
خاموش کردن:
systemctl poweroff

ریبوت:
systemctl reboot

خاموش کردن با shutdown:
shutdown -h now

ریبوت با shutdown:
shutdown -r now

Sleep:
systemctl suspend

Hibernate:
systemctl hibernate
👏1
فصل پنجم — قسمت پنجاه و پنجم 🐧
send messeage یا ارسال پیام به کاربر
———————
در لینوکس چند روش برای نمایش یا ارسال پیام به کاربر داریم:
قبل از Login
بعد از Login
پیام به یک کاربر خاص
پیام به همه کاربران
پیام از طریق Mail



———————

1️⃣ پیام قبل از Login — فایل /etc/issue
وقتی کاربر می‌خواهد از طریق کنسول وارد سیستم شود، محتوای این فایل می‌تواند نمایش داده شود:
cat /etc/issue

مثلاً:
Welcome to Alireza Server
Authorized users only!

ویرایش:
nano /etc/issue

🧠 مثال واقعی
می‌توانی بنویسی:
================================
Welcome to My Linux Server
Unauthorized access prohibited
================================


———————-


2️⃣ پیام SSH قبل از Login
برای SSH معمولاً از Banner استفاده می‌کنیم.
یک فایل بساز:
nano /etc/ssh/banner

داخلش:
********************************
WARNING!
Authorized users only.
********************************

بعد فایل تنظیمات SSH را باز کن:
nano /etc/ssh/sshd_config

اضافه کن:
Banner /etc/ssh/banner

بعد:
systemctl restart sshd

حالا وقتی کاربر با SSH وصل شود، قبل از Login این پیام را می‌بیند.

——————

3️⃣ پیام بعد از Login — /etc/motd
MOTD یعنی:
Message Of The Day
یعنی:
پیام روز برای کاربر.

در بعضی سیستم‌ها می‌توانی:
nano /etc/motd

مثلاً:
Welcome Alireza!
This server is managed by IT.

بعد از Login نمایش داده می‌شود.

——————

4️⃣ /etc/motd.d/
در سیستم‌هایی که از motd.d پشتیبانی می‌کنند، می‌توان پیام‌ها را به صورت فایل‌های جداگانه قرار داد:
ls /etc/motd.d/

مثلاً:
nano /etc/motd.d/cockpit

اگر پیام مربوط به Cockpit را نمی‌خواهی، می‌توانی فایل مربوطه را حذف یا غیرفعال کنی.
مثلاً:
rm /etc/motd.d/cockpit

⚠️ اسم و محل فایل‌های Cockpit ممکن است بسته به توزیع و نسخه متفاوت باشد؛ قبل از حذف بهتر است محتویات /etc/motd.d/ را ببینی.

————————

5️⃣ wall — پیام به همه کاربران
یکی از مهم‌ترین دستورات این قسمت:
wall

یعنی:
Write ALL → پیام را برای تمام کاربران Login شده ارسال کن.

مثلاً:
echo "Server will reboot in 5 minutes!" | wall

تمام کاربرانی که در آن لحظه وارد سیستم هستند، پیام را دریافت می‌کنند.
برای دیدن کاربران:
who


——————

6️⃣ ارسال پیام به یک کاربر خاص
با write می‌توانی برای یک کاربر مشخص پیام بفرستی:
write ali

بعد پیام را تایپ کن:
Hello Ali
Server will reboot soon.

برای پایان:
Ctrl + D



———————

7️⃣ notify-send
این دستور برای نمایش Notification گرافیکی در محیط دسکتاپ است.
مثلاً:
notify-send "Warning" "Server will reboot soon!"

یک Notification روی دسکتاپ نمایش داده می‌شود.
⚠️ این روش برای سرورهای بدون محیط گرافیکی معمولاً کاربردی ندارد.

——————

8️⃣ ارسال Mail
در لینوکس می‌توان از ابزارهایی مثل:
mail

برای ارسال ایمیل استفاده کرد.
مثلاً:
echo "Server is down!" | mail -s "Server Alert" admin@example.com

اما برای ارسال واقعی ایمیل معمولاً باید یک Mail Transfer Agent (MTA) مثل Postfix تنظیم شده باشد.
👏1
فصل پنجم — قسمت پنجاه و ششم 🐧
virtualisations مجازی سازی در لینوکس
———————
🧠 مجازی‌سازی چیست؟
خیلی ساده:
مجازی‌سازی یعنی یک کامپیوتر فیزیکی را طوری تقسیم کنیم که بتوانیم چند سیستم یا محیط مستقل روی آن اجرا کنیم.
مثلاً یک سرور فیزیکی داریم:
Server
CPU: 16 Core
RAM: 64GB
↓
┌───────────────┐
│ VM 1 Ubuntu │
│ VM 2 Debian │
│ VM 3 Windows │
│ VM 4 AlmaLinux│
└───────────────┘

هر VM فکر می‌کند یک کامپیوتر واقعی دارد.

——————

🔥 دو نوع اصلی مجازی‌سازی
در آموزش‌ها معمولاً این دو مدل را با Type 1 و Type 2 می‌شناسیم.


1️⃣ Type 1 — Bare Metal
در این مدل Hypervisor تقریباً مستقیماً روی سخت‌افزار قرار می‌گیرد.
Hardware
↓
Hypervisor
↓
VM1 VM2 VM3

یعنی سیستم‌عامل معمولی مثل Windows یا Ubuntu در وسط نیست.
معروف‌ها:
VMware ESXi
Microsoft Hyper-V
Xen
KVM در زیرساخت‌های لینوکسی
مثلاً:
ESXi را روی یک سرور واقعی نصب می‌کنی و بعد داخلش چندین VM می‌سازی.
👉 برای دیتاسنترها بسیار رایج است.


——————

2️⃣ Type 2 — Hosted
اینجا اول یک سیستم‌عامل معمولی نصب می‌کنی و بعد نرم‌افزار مجازی‌سازی را روی آن نصب می‌کنی.
Hardware
↓
Windows / Linux
↓
VMware Workstation
↓
Ubuntu VM
Kali VM
Windows VM

معروف‌ها:
VMware Workstation
VirtualBox
VMware Fusion
مثلاً روی لپ‌تاپت Windows داری و:
VMware Workstation
↓
Kali Linux

را اجرا می‌کنی.
این همان چیزی است که احتمالاً در VMware با آن کار کرده‌ای.

———————

🐳 اما Container چیست؟
اینجا یک تفاوت خیلی مهم داریم.
Container مثل VM یک سیستم‌عامل کامل جداگانه اجرا نمی‌کند.
مثلاً:
Hardware
↓
Linux Kernel
↓
Docker
┌──────┬──────┬──────┐
│ App1 │ App2 │ App3 │
└──────┴──────┴──────┘

کانتینرها Kernel سیستم میزبان را Share می‌کنند.

به همین دلیل معمولاً:
سبک‌ترند
سریع‌تر بالا می‌آیند
RAM کمتری مصرف می‌کنند
برای اجرای Application بسیار مناسب‌اند

معروف‌ترین ابزار:
Docker
و ابزارهای دیگر مثل:
Podman
LXC
containerd

———————

⚔️ VM vs Container
مثلاً می‌خواهی سه Ubuntu اجرا کنی.
VM:
هر VM معمولاً:
Virtual Hardware
↓
Kernel
↓
OS
↓
Application

دارد.
Container:
Host Kernel
↓
Container
↓
Application

پس Container خیلی سبک‌تر است.

———————

🧠 یک مثال واقعی
فرض کن یک سرور 64GB RAM داری.
برای ساخت 4 سرور مستقل می‌توانی:
با VM:
VM1 → 8GB
VM2 → 8GB
VM3 → 8GB
VM4 → 8GB

هرکدام سیستم‌عامل خودشان را دارند.
با Container:
Docker
├── Nginx
├── PHP
├── MySQL
└── Redis

همه از Kernel میزبان استفاده می‌کنند.

———————-

⚠️ یک نکته مهم درباره «سطح یک و دو»
Type 1 و Type 2 مربوط به Hypervisor هستند، نه Container.
پس این دسته‌بندی را قاطی نکن:
Virtualization
│
├── Type 1
│ ├── ESXi
│ ├── Hyper-V
│ └── Xen
│
├── Type 2
│ ├── VMware Workstation
│ └── VirtualBox
│
└── Containerization
├── Docker
├── Podman
└── LXC

🎯 فقط اینو فعلاً حفظ کن:
VM = یک کامپیوتر مجازی کامل
Container = یک محیط ایزوله برای اجرای برنامه
و مهم‌تر از همه:
VM معمولاً Kernel جدا دارد؛ Container معمولاً Kernel میزبان را Share می‌کند.
👏1
فصل پنجم — قسمت پنجاه و هفت 🐧
docker - نصب داکر
———————
🐳 Docker چیست؟

قبل از نصب، خیلی ساده:
Docker ابزاری برای اجرای برنامه‌ها داخل Container است.
مثلاً به‌جای اینکه برای اجرای Nginx کل یک VM بسازیم:
VM
├── OS
├── Kernel
├── Nginx
└── Config

با Docker می‌توانیم فقط Container مربوط به Nginx را اجرا کنیم.

———————-

🐳 نصب Docker در Ubuntu / Debian
1️⃣ آپدیت مخازن
sudo apt update

2️⃣ نصب ابزارهای موردنیاز
sudo apt install ca-certificates curl

3️⃣ اضافه کردن کلید Repository داکر
sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc

برای Ubuntu باید مسیر Repository را متناسب با Ubuntu تنظیم کنی؛ روش رسمی Docker از Repository خود Docker استفاده می‌کند.

———————-

در Debian/Ubuntu بعد از اضافه کردن Repository رسمی:
sudo apt update

سپس:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

——————
🔍 بررسی نصب
docker --version

مثلاً:
Docker version 28.x.x

و:
systemctl status docker

اگر دیدی:
Active: active (running)

یعنی Docker در حال اجراست. ✅

—————-

🚀 تست Docker
مهم‌ترین تست:
sudo docker run hello-world

Docker یک Image کوچک به نام hello-world دریافت می‌کند و یک Container از روی آن اجرا می‌کند.
اگر پیام:
Hello from Docker!

را دیدی، یعنی Docker درست نصب شده. 🎉

——————

👤 اجرای Docker بدون sudo
به‌صورت پیش‌فرض ممکن است مجبور باشی بنویسی:
sudo docker ps

اگر می‌خواهی کاربر فعلی بدون sudo از Docker استفاده کند:
sudo usermod -aG docker $USER

بعد یک‌بار Logout/Login کن.
سپس:
docker ps

⚠️ عضویت در گروه docker عملاً دسترسی بسیار بالایی روی سیستم می‌دهد؛ روی سرور چندکاربره باید با احتیاط انجام شود.

——————-

🐧 نصب روی RHEL / AlmaLinux / Rocky
در سیستم‌های Red Hat:
sudo dnf install -y dnf-plugins-core

Repository داکر را اضافه می‌کنیم:
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

بعد:
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

سرویس را فعال و اجرا می‌کنیم:
sudo systemctl enable --now docker

تست:
docker --version

و:
sudo docker run hello-world



——————

🧠 چند دستور اولیه که بعد از نصب لازم داری
docker ps

کانتینرهای در حال اجرا
docker ps -a

همه کانتینرها
docker images

Imageهای موجود
docker pull nginx

دریافت Image
docker run nginx

ساخت و اجرای Container
docker stop CONTAINER

توقف Container
docker start CONTAINER

اجرای دوباره Container


——————-

🎯 زنجیره Docker را این‌طوری حفظ کن:
Docker
↓
Image
↓
Container
↓
Application

مثلاً:
nginx Image
↓
nginx Container
↓
Web Server

نکته: برای آموزش دوره، بهتر است نصب Docker را روی VM آزمایشگاهی انجام بدهی، نه سرور اصلی؛ مخصوصاً چون Docker دسترسی‌های سطح بالایی به سیستم میزبان دارد.
فصل پنجم — قسمت پنجاه و هشت 🐧
KVM - نصب kvm
———————
🧠 KVM چیست؟
KVM = Kernel-based Virtual Machine
یعنی قابلیت مجازی‌سازی که داخل Kernel لینوکس قرار دارد.
خیلی ساده:
Hardware
↓
Linux Kernel
↓
KVM
↓
VM1 VM2 VM3

KVM به لینوکس اجازه می‌دهد ماشین مجازی اجرا کند.
نکته: خود KVM بیشتر نقش لایه مجازی‌سازی را دارد و معمولاً در کنار QEMU + libvirt استفاده می‌شود.



——————

1️⃣ بررسی پشتیبانی CPU
اول ببینیم CPU قابلیت Virtualization دارد:
egrep -c '(vmx|svm)' /proc/cpuinfo

اگر عددی مثل:
8

دیدی یعنی CPU قابلیت Virtualization دارد.
vmx → Intel VT-x
svm → AMD-V
همچنین:
lscpu | grep Virtualization


—————

2️⃣ نصب KVM در Debian / Ubuntu
ابتدا:
sudo apt update

بعد:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager

برای بررسی:
lsmod | grep kvm

مثلاً:
kvm_intel
kvm

یا روی AMD:
kvm_amd
kvm



—————

3️⃣ فعال کردن Libvirt
sudo systemctl enable --now libvirtd

بررسی:
systemctl status libvirtd

اگر:
Active: active (running)

دیدی، سرویس فعال است.

—————

4️⃣ اضافه کردن کاربر به گروه‌ها
برای اینکه لازم نباشد همیشه با sudo کار کنی:
sudo usermod -aG libvirt $USER

و:
sudo usermod -aG kvm $USER

بعد باید Logout/Login کنی.


——————

🖥 Virt-Manager چیست؟
Virt-Manager یک رابط گرافیکی برای مدیریت ماشین‌های مجازی KVM/libvirt است.
یعنی به‌جای اینکه همه‌چیز را با دستور انجام دهی:
KVM
↓
libvirt
↓
Virt-Manager
↓
GUI

Virt-Manager خودش KVM نیست.
خیلی مهم:
KVM       → موتور/قابلیت مجازی‌سازی
QEMU → شبیه‌سازی و اجرای VM
libvirt → مدیریت VMها
Virt-Manager → رابط گرافیکی


—————-

🚀 اجرای Virt-Manager
در محیط دسکتاپ:
virt-manager

پنجره برنامه باز می‌شود.
معمولاً یک Connection به شکل:
QEMU/KVM

می‌بینی.

————-

🖥 ساخت VM با Virt-Manager
داخل Virt-Manager:
Create a new virtual machine
↓
Local install media
↓
ISO File
↓
انتخاب RAM
↓
انتخاب CPU
↓
انتخاب Disk
↓
Network
↓
Finish

مثلاً:
Name: Ubuntu-Test
RAM: 4 GB
CPU: 2 Core
Disk: 30 GB
ISO: ubuntu.iso

بعد VM را Start می‌کنی.




——————

🧰 چند دستور مهم KVM/libvirt
دیدن VMها:
virsh list

همه VMها:
virsh list --all

روشن کردن:
virsh start ubuntu-test

خاموش کردن:
virsh shutdown ubuntu-test

اجباری خاموش کردن:
virsh destroy ubuntu-test

ریستارت:
virsh reboot ubuntu-test

نمایش اطلاعات:
virsh dominfo ubuntu-test



—————

🧠 virsh چیست؟
اگر Virt-Manager رابط گرافیکی باشد، virsh ابزار خط فرمان libvirt است.
مثلاً:
Virt-Manager
↓
libvirt
↓
KVM
↓
Hardware

یا از طریق Terminal:
virsh
↓
libvirt
↓
KVM


——————

یک مثال واقعی
می‌خواهی روی Ubuntu یک Windows VM بسازی:
Ubuntu
↓
KVM
↓
QEMU
↓
libvirt
↓
Virt-Manager
↓
Windows VM

پس Virt-Manager خودش ماشین مجازی‌ساز نیست؛ فقط یک پنل مدیریتی برای زیرساخت KVM/libvirt است.
👏1
فصل پنجم — قسمت پنجاه و نه 🐧
Proxmox - نصب Proxmox
———————
Proxmox
چیست؟
Proxmox یک پلتفرم مدیریت مجازی‌سازی است که روی یک سرور نصب می‌شود و به ما اجازه می‌دهد چندین VM و Container را روی یک سخت‌افزار اجرا و مدیریت کنیم.
مثلاً:
سرور فیزیکی
│
└── Proxmox
├── VM 101 → Ubuntu
├── VM 102 → Debian
├── VM 103 → Windows
└── CT 104 → Debian Container

یعنی به‌جای اینکه برای هر سیستم یک سرور فیزیکی داشته باشیم، همه را روی یک سرور اجرا می‌کنیم.

———————

1️⃣ پیش‌نیازهای نصب
حداقل چیزهایی که لازم داریم:
CPU با قابلیت Virtualization
Intel → VT-x
AMD → AMD-V
RAM مناسب
هارد/SSD
کارت شبکه
فایل ISO مربوط به Proxmox
💡 برای محیط واقعی بهتر است Proxmox روی خود سرور فیزیکی نصب شود، نه داخل VMware یا VirtualBox.

———————

2️⃣ ساخت USB بوت
ISO پروکس‌موکس را روی فلش Bootable می‌ریزیم.
سپس سرور را با USB بوت می‌کنیم.
در BIOS/UEFI معمولاً:
Boot Menu
↓
USB
↓
Proxmox Installer


—————-

3️⃣ نصب Proxmox
بعد از بوت، صفحه نصب را می‌بینیم:
Install Proxmox VE

انتخابش می‌کنیم.
سپس:
Target Disk
هاردی که قرار است Proxmox روی آن نصب شود.
مثلاً:
/dev/sda  500GB SSD

⚠️ انتخاب این هارد معمولاً باعث پاک شدن اطلاعات آن می‌شود.


——————

Country / Time Zone
کشور، منطقه زمانی و Keyboard را انتخاب می‌کنیم.
مثلاً:
Time Zone: Asia/Tehran
Keyboard: US


—————-

Password
برای کاربر:
root

رمز تعیین می‌کنیم.

——————

Network
اینجا خیلی مهم است.
مثلاً:
Hostname:
pve.example.local

IP:
192.168.1.10

Gateway:
192.168.1.1

DNS:
8.8.8.8

Proxmox برای مدیریت معمولاً با IP ثابت تنظیم می‌شود.


———————

4️⃣ شروع نصب
در پایان تنظیمات را بررسی می‌کنیم:
Install

و سیستم شروع به نصب می‌کند.
بعد از پایان، سرور Reboot می‌شود.

———————

5️⃣ ورود به پنل Proxmox
بعد از نصب، معمولاً با این آدرس وارد می‌شویم:
https://IP-SERVER:8006

مثلاً:
https://192.168.1.10:8006

پورت مهم Proxmox:
8006



———————
6️⃣ ورود
Username: root
Password: رمز نصب

بعد وارد پنل مدیریتی می‌شویم.
از اینجا می‌توانیم:
VM بسازیم
Container بسازیم
هارد اضافه کنیم
Network تنظیم کنیم
Backup بگیریم
Snapshot بگیریم
VM را روشن/خاموش کنیم


—————-

🧠 نکته مهم برای دوره
KVM موتور مجازی‌سازی است.
QEMU وظیفه شبیه‌سازی/اجرای ماشین را بر عهده دارد.
Proxmox یک لایه مدیریتی روی این تکنولوژی‌هاست که همه‌چیز را راحت‌تر مدیریت می‌کند.
پس:
Hardware
↓
Proxmox VE
↓
KVM/QEMU
↓
VM

و برای Containerها:
Hardware
↓
Proxmox VE
↓
LXC
↓
Container

خلاصه:
Proxmox خودش «سیستم‌عامل مهمان» نیست؛ یک پلتفرم مدیریت مجازی‌سازی است که روی سرور نصب می‌شود و از طریق پنل وب، VM و Containerهای مختلف را مدیریت می‌کنیم.
👏1
خب خب رسما
لینوکس الپیک 1 قسمت 101 رو تموم کردیم با اتمام فصل پنج

از فردا فصل شش و شروع میشه و استارت قسمت دوم الپیک یک(102) به امید خدا میخوره
🔥2👏1
فصل ششم — قسمت شصتم 🐧
محیط GUI در لینوکس

————————

در این فصل از محیط متنی (CLI) فاصله می‌گیریم و وارد محیط گرافیکی (GUI) لینوکس می‌شویم.

🖥 GUI چیست؟
GUI یعنی:
Graphical User Interface
یعنی محیطی که به‌جای اینکه همه‌چیز را با دستور انجام بدهیم، با پنجره، آیکون، منو و ماوس کار می‌کنیم.
مثلاً در CLI:
mkdir test
cd test

ولی در GUI می‌توانیم با کلیک راست و انتخاب New Folder پوشه بسازیم.

———————-

1️⃣ Desktop Environment چیست؟
لینوکس خودش یک محیط دسکتاپ مشخص ندارد.
ما می‌توانیم Desktop Environment نصب کنیم.
چند مورد معروف:
GNOME
محیط پیش‌فرض بسیاری از توزیع‌ها، مخصوصاً Fedora و Ubuntu.
KDE Plasma
ظاهر بسیار قابل تنظیم و شبیه‌تر به محیط‌های کلاسیک دسکتاپ.
XFCE
سبک و کم‌مصرف؛ مناسب سیستم‌های ضعیف‌تر.
Cinnamon
محیطی ساده و شبیه دسکتاپ سنتی.
MATE
سبک و کلاسیک.
LXQt
خیلی سبک و مناسب سیستم‌های ضعیف.
مثلاً:
Linux
├── GNOME
├── KDE Plasma
├── XFCE
├── Cinnamon
├── MATE
└── LXQt

🧠 نکته:
توزیع لینوکس و Desktop Environment یکی نیستند.
مثلاً:
Ubuntu + GNOME
Ubuntu + KDE
Ubuntu + XFCE

همه Ubuntu هستند ولی ظاهر و محیط دسکتاپشان متفاوت است.

——————

2️⃣ نصب محیط GUI
مثلاً در Debian/Ubuntu می‌توانیم GNOME نصب کنیم:
sudo apt install task-gnome-desktop

در سیستم‌های Red Hat مانند Fedora:
sudo dnf group install "GNOME Desktop Environment"

بعد می‌توانیم Target گرافیکی را فعال کنیم:
systemctl set-default graphical.target

و برای ورود فوری به محیط گرافیکی:
systemctl isolate graphical.target


——————————-

3️⃣ Accessibility چیست؟
Accessibility یعنی امکاناتی که استفاده از سیستم را برای افراد با نیازهای متفاوت راحت‌تر می‌کند.
مثلاً:
بزرگ کردن نوشته‌ها
Screen Reader
بزرگ‌نمایی صفحه
کیبورد مجازی
High Contrast
تنظیم سرعت ماوس
تنظیم Sticky Keys
مثلاً فردی که دید ضعیف دارد می‌تواند:
Settings
↓
Accessibility
↓
Large Text

را فعال کند.
🧠 خیلی ساده:
Accessibility یعنی سیستم را طوری تنظیم کنیم که افراد مختلف راحت‌تر بتوانند از آن استفاده کنند.


————————


4️⃣ تنظیم زبان
در محیط GUI می‌توانیم زبان سیستم را تغییر دهیم.
مثلاً:
Settings
↓
Region & Language
↓
Language

زبان روی مواردی مثل:
منوها
پیام‌های سیستم
تاریخ
بعضی برنامه‌ها
تأثیر می‌گذارد.

——————

5️⃣ تنظیم جغرافیا و Region
Region مشخص می‌کند سیستم از چه قواعد منطقه‌ای استفاده کند.
مثلاً:
Language → English
Region → Iran

این موارد می‌توانند روی:
فرمت تاریخ
فرمت ساعت
واحد پول
فرمت اعداد
اولین روز هفته
تأثیر داشته باشند.

————

6️⃣ تنظیم Time Zone
مثلاً:
timedatectl

برای دیدن وضعیت زمان سیستم.
مثلاً:
timedatectl set-timezone Asia/Tehran

و برای دیدن Time Zoneهای موجود:
timedatectl list-timezones
❤1👏1
فصل ششم — قسمت شصت‌ویکم 🐧
نصب و پیکربندی محیط GUI

——————-
🖥
اول GUI چیست؟
GUI = Graphical User Interface
یعنی محیط گرافیکی که با ماوس، پنجره، آیکون و منو با لینوکس کار می‌کنیم.
مثلاً به‌جای:
mkdir test

در GUI می‌توانی با کلیک راست → New Folder پوشه بسازی.

—————-

2️⃣ Window Manager چیست؟
اینجا یک لایه پایین‌تر داریم.
Window Manager مسئول مدیریت پنجره‌هاست؛ مثلاً:
پنجره را کجا قرار بده؟
پنجره را Maximize کن
پنجره را Minimize کن
پنجره را ببند

برای محیط‌های مختلف:
GNOME    → Mutter
KDE → KWin
Cinnamon → Muffin
MATE → Marco

Metacity هم Window Manager قدیمی GNOME بود.
پس خیلی ساده:
Desktop Environment
↓
Window Manager
↓
پنجره‌ها


——————

3️⃣ XFree86 چیست؟
XFree86 یکی از پیاده‌سازی‌های قدیمی سیستم X Window System بود.
در گذشته وظیفه‌اش فراهم کردن زیرساخت نمایش گرافیکی در سیستم‌های Unix/Linux بود.
بعداً X.Org جایگزین اصلی آن شد.

—————

4️⃣ X.Org چیست؟
X.Org Server یکی از پیاده‌سازی‌های سیستم X Window System است.
به زبان ساده:
برنامه‌ها می‌خواهند چیزی روی مانیتور نمایش دهند؛ X.Org واسطه‌ای بین برنامه‌ها، ورودی‌ها و سخت‌افزار گرافیکی است.

ساختار ساده:
Application
↓
Desktop Environment
↓
X.Org
↓
GPU / Display


—————

5️⃣ Wayland چیست؟
Wayland یک معماری جدیدتر برای سیستم نمایش گرافیکی است که برای بسیاری از سناریوها جایگزین X11/X.Org می‌شود.
ساختار آن ساده‌تر است:
Application
↓
Wayland Compositor
↓
Display

مثلاً در GNOME، Mutter می‌تواند نقش compositor مربوط به Wayland را هم انجام دهد.
🧠 پس تفاوت اصلی را این‌طور حفظ کن:
قدیمی‌تر:
XFree86 → X.Org / X11

جدیدتر:
Wayland



—————-


6️⃣ نصب GUI در Red Hat / Fedora
اگر از سیستم‌های مبتنی بر Red Hat استفاده می‌کنی، ابتدا می‌توانی گروه‌های نرم‌افزاری را ببینی:
dnf group list

مثلاً برای نصب محیط GUI:
dnf group install "Server with GUI"

یا در بعضی نسخه‌ها:
dnf group install "Workstation"

⚠️ اسم دقیق Group ممکن است بین نسخه‌های Fedora/RHEL/AlmaLinux متفاوت باشد؛ اول با dnf group list بررسی کن.

—————

فعال کردن GUI هنگام Boot
بعد از نصب:
systemctl set-default graphical.target

بعد:
reboot

حالا سیستم به‌جای محیط متنی، به محیط گرافیکی می‌رود.
برای دیدن Target فعلی:
systemctl get-default

اگر دیدی:
graphical.target

یعنی GUI به‌عنوان حالت پیش‌فرض انتخاب شده.

——————

7️⃣ نصب GUI در Debian / Ubuntu
اول معمولاً Repositoryها باید درست باشند.
برای X.Org:
apt install xorg

برای GNOME:
apt install gnome

یا بسته‌های دسکتاپ مناسب نسخه تو، مثلاً:
apt install ubuntu-desktop

برای X11 authentication هم:
apt install xauth

نکته مهم درباره دستورهای نوشته‌شده
این‌هایی که نوشتی احتمالاً اشتباه تایپی دارند:
apt-get install unmtu-desktop
apt-get install gnome-desktop-environmaent

این اسم‌ها به این شکل صحیح نیستند.
مثلاً:
apt install ubuntu-desktop

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

———————-
👏1
فصل ششم — قسمت شصت و دوم 🐧
قابلیتهای استاندارد در محیط های gui
————————————

حالا که فهمیدیم GUI چیست، ببینیم یک Desktop Environment از چه قسمت‌هایی تشکیل شده.
————-
🖥 1. Desktop Settings
بخش تنظیمات دسکتاپ.
مثلاً:
Settings
├── Display
├── Network
├── Sound
├── Keyboard
├── Mouse
└── Background

یعنی جایی که ظاهر و رفتار سیستم را تنظیم می‌کنیم.

———————

🖥 2. Display Manager
قبل از ورود به دسکتاپ، صفحه Login را نمایش می‌دهد.
مثلاً:
Username
Password
↓
Login
↓
Desktop

نمونه‌ها:
GDM → معمولاً GNOME
SDDM → معمولاً KDE
LightDM → سبک و قابل استفاده با محیط‌های مختلف
🧠 Display Manager با Window Manager فرق دارد.
Display Manager → ورود به سیستم
Window Manager → مدیریت پنجره‌ها

——————-

📁 3. File Manager
برای مدیریت فایل و پوشه‌ها.
مثلاً:
Home
├── Documents
├── Downloads
├── Pictures
└── Videos

نمونه‌ها:
GNOME → Files / Nautilus
KDE → Dolphin
XFCE → Thunar
Cinnamon → Nemo
MATE → Caja

—————-

🔹 4. Icon
آیکون‌ها میانبرهای گرافیکی برای برنامه‌ها، فایل‌ها و پوشه‌ها هستند.
مثلاً:
🗑 Trash
📁 Home
🌐 Firefox


———————-

🧩 5. Widget
ابزارهای کوچک روی دسکتاپ یا پنل.
مثلاً:
CPU: 20%
RAM: 45%
Weather: 25°C
Clock: 18:40


—————-

⭐️ 6. Favorite Bar / Dock
برنامه‌های مورد علاقه را سریع در اختیارمان می‌گذارد.
مثلاً در GNOME می‌توانی برنامه‌های پرکاربرد را در Dash/Dock قرار بدهی.
——————-

🚀 7. Launcher
برای اجرای سریع برنامه‌ها.
مثلاً:
Super
↓
Firefox

یا جستجو می‌کنی:
terminal

و Terminal را اجرا می‌کنی.

——————-

📋 8. Menu
منوی برنامه‌ها.
مثلاً:
Applications
├── Internet
├── Office
├── System
├── Utilities
└── Settings



————-

📊 9. Panel
نوارهایی در بالا یا پایین صفحه که معمولاً اطلاعات و ابزارهای مختلف را نشان می‌دهند.
مثلاً:
┌──────────────────────────────────────┐
│ Applications Network 🔊 🔋 18:40│
└──────────────────────────────────────┘


—————-

🪟 10. Window Manager
مسئول مدیریت پنجره‌هاست.
مثلاً:
باز کردن پنجره
بستن
Minimize
Maximize
جابجایی
Resize


———————

🟠 GNOME
GNOME ظاهر مدرن و ساده‌ای دارد.
7
ویژگی مهم:
ساده و تمیز
Activities Overview
جستجوی سریع
مناسب لپ‌تاپ و دسکتاپ
قابلیت گسترش با Extensions

🔵 KDE Plasma
6
KDE خیلی قابل تنظیم است.
مثلاً می‌توانی:
پنل را جابه‌جا کنی
ظاهر را تغییر بدهی
Widget اضافه کنی
رفتار پنجره‌ها را تغییر بدهی
🧠 اگر GNOME را ساده و مینیمال بدانیم، KDE بیشتر قابل شخصی‌سازی است.


🟢 Cinnamon
6
ظاهرش برای کسی که از Windows آمده بسیار آشناست:
┌─────────────────────────┐
│ │
│ Desktop │
│ │
├─────────────────────────┤
│ Menu Apps Clock │
└─────────────────────────┘




🟡 XFCE
7
سبک و کم‌مصرف است.
برای:
سیستم‌های قدیمی
VMها
سیستم‌هایی با RAM کم
انتخاب خوبی است.




🟣 MATE
5

MATE هم سبک و کلاسیک است و ساختار سنتی دسکتاپ را حفظ می‌کند.




—————————-


🧩 GNOME Extensions
یکی از قابلیت‌های جذاب GNOME همین Extensions است.
با Extension می‌توانیم امکانات جدید به GNOME اضافه کنیم.
مثلاً:
GNOME
↓
Extension
↓
قابلیت جدید

مثلاً:
اضافه کردن پنل
نمایش CPU/RAM
تغییر رفتار پنجره‌ها
اضافه کردن Dock
تغییر ظاهر Shell
🧠 مثل افزونه مرورگر است؛ ولی برای محیط GNOME.


———————
❤1👏1🙏1
فصل ششم — قسمت شصت و سوم 🐧
Accessibility - برای افراد با مشکلات بینایی


——————-
Accessibility یعنی قابلیت‌هایی که کمک می‌کنند افراد دارای محدودیت‌های بینایی، شنوایی یا حرکتی راحت‌تر با کامپیوتر کار کنند.
اینجا تمرکز ما روی Keyboard Accessibility است.

—————-

⌨️ Keyboard Accessibility چیست؟
فرض کن کسی نمی‌تواند به‌راحتی چند کلید را همزمان فشار دهد.
مثلاً برای:
Ctrl + Alt + Delete

باید سه کلید را با هم بگیرد.
Accessibility می‌تواند این کار را راحت‌تر کند.

—————

1️⃣ Sticky Keys
یکی از مهم‌ترین قابلیت‌هاست.
با Sticky Keys لازم نیست کلیدهای ترکیبی را همزمان نگه داری.
مثلاً به‌جای:
Ctrl + Alt + T

می‌توانی:
Ctrl
↓
Alt
↓
T

را جداگانه فشار بدهی.
سیستم متوجه می‌شود که Ctrl و Alt همچنان در ترکیب هستند.
🧠 مثال واقعی:
اگر فردی مشکل حرکتی داشته باشد، به‌جای اینکه سه انگشتش را همزمان روی کیبورد بگذارد، کلیدها را یکی‌یکی می‌زند.

——————-

2️⃣ Slow Keys
Slow Keys باعث می‌شود سیستم فشارهای خیلی سریع یا اتفاقی روی کلیدها را نادیده بگیرد.
مثلاً اگر دستت روی کیبورد کشیده شود:
aaaaaaaaaaaa

سیستم می‌تواند تنظیم شود که کلید باید مدت مشخصی نگه داشته شود تا ثبت شود.
مناسب افرادی است که کنترل حرکتی دست برایشان سخت است.

——————-

3️⃣ Bounce Keys
اگر یک کلید را چند بار پشت سر هم به‌صورت ناخواسته فشار بدهی، Bounce Keys می‌تواند فشارهای تکراری سریع را نادیده بگیرد.
مثلاً:
aaaaaaaa

به دلیل چند بار لرزش انگشت ایجاد شده؛ سیستم می‌تواند جلوی ثبت همه آن‌ها را بگیرد.


—————

4️⃣ Toggle Keys
وقتی کلیدهایی مثل:
Caps Lock
Num Lock
Scroll Lock

را فشار می‌دهی، Toggle Keys می‌تواند با صدای متفاوت فعال یا غیرفعال شدن آن‌ها را اعلام کند.
مثلاً:
Caps Lock ON  → 🔊
Caps Lock OFF → 🔊

این برای کسی که نمی‌تواند وضعیت چراغ‌های کیبورد را ببیند مفید است.

———————

🔄 5️⃣ Switch / Switching
در Accessibility مفهوم Switch Access هم وجود دارد.
یعنی کاربر می‌تواند به‌جای استفاده از ماوس و کیبورد معمولی، با یک یا چند کلید یا وسیله ورودی ساده بین گزینه‌ها جابه‌جا شود.
مثلاً:
[Firefox]  [Terminal]  [Files]

↓
Switch

[Terminal] انتخاب شد

سیستم گزینه‌ها را یکی‌یکی Highlight می‌کند و کاربر با فشار یک کلید انتخاب می‌کند.


—————
🌍 اول یک نکته مهم: تغییر زبان Accessibility نیست
تغییر زبان کیبورد معمولاً در بخش Keyboard / Input Sources تنظیم می‌شود، نه Accessibility.
مثلاً می‌خواهی بین:
🇮🇷 فارسی
🇺🇸 English

سوییچ کنی.
در GNOME معمولاً از:
Settings
↓
Keyboard
↓
Input Sources
↓
Add Input Source

زبان فارسی و انگلیسی را اضافه می‌کنی.
بعد معمولاً با:
Super + Space

بین زبان‌ها جابه‌جا می‌شوی.
در بعضی محیط‌ها میانبر می‌تواند متفاوت باشد.

—————-


👁 1. قابلیت‌های مربوط به بینایی
Screen Reader
صفحه را برای کاربر می‌خواند.
مثلاً کاربر روی یک آیکون می‌رود:
Firefox

Screen Reader اعلام می‌کند:
Firefox، application

در GNOME معمولاً ابزار معروف آن Orca است.


—————

🔍 Zoom / Magnification
قسمتی از صفحه را بزرگ می‌کند.
مثلاً:
عادی:
[ Settings ]

Zoom:
[ SETTINGS ]

برای افرادی که دید ضعیف دارند بسیار کاربردی است.

——————-
📝 Large Text

اندازه نوشته‌ها را بزرگ می‌کند.

🎨 High Contrast

تضاد رنگ‌ها را بیشتر می‌کند تا نوشته‌ها و عناصر صفحه راحت‌تر دیده شوند.

——————

👂 2. قابلیت‌های مربوط به شنوایی
برای افرادی که مشکل شنوایی دارند، بعضی سیستم‌ها می‌توانند به‌جای تکیه بر صدا، نمایش بصری ارائه کنند.
مثلاً:
Notification Sound
↓
Visual Flash

یعنی اتفاقی که با صدا اعلام می‌شد، به‌صورت تصویری هم مشخص شود.

—————-
🖱 4. قابلیت‌های مربوط به Mouse
مثلاً Mouse Keys اجازه می‌دهد با صفحه‌کلید، نشانگر ماوس را کنترل کنی.
یعنی به‌جای حرکت دادن فیزیکی ماوس:
Keyboard
↓
Mouse Pointer

همچنین می‌توان سرعت حرکت ماوس و مدت نگه‌داشتن کلیک را تنظیم کرد.

————-

🧠 5. Switch Access
برای افرادی که نمی‌توانند به‌راحتی از ماوس و کیبورد معمولی استفاده کنند.
سیستم گزینه‌ها را یکی‌یکی انتخاب می‌کند:
Firefox
↓
Terminal
↓
Files
↓
Settings

و کاربر با یک Switch یا ورودی ساده گزینه موردنظر را انتخاب می‌کند.

—————-

🖥 6. Accessibility در محیط‌های مختلف
ممکن است اسم و محل این گزینه‌ها در:
GNOME
KDE
XFCE
Cinnamon
MATE

کمی متفاوت باشد.
ولی مفهوم کلی یکی است:
👁 Vision
👂 Hearing
⌨️ Keyboard
🖱 Mouse
🗣 Speech / Reading




——————
❤1👏1
فصل ششم — قسمت شصت و چهارم 🐧
مفهوم
localization
——————-

Localization یا بومی‌سازی یعنی سیستم‌عامل بداند کاربر در چه زبان، کشور و منطقه‌ای کار می‌کند و اطلاعات را متناسب با آن نمایش دهد.
مثلاً:
زبان: فارسی
کشور: ایران
تقویم/فرمت تاریخ: متناسب با تنظیمات منطقه
فرمت عدد: متناسب با Locale
کیبورد: فارسی / انگلیسی


—————

🌍 Locale چیست؟
Locale مجموعه‌ای از تنظیمات مربوط به زبان و منطقه کاربر است.
در لینوکس این اطلاعات معمولاً از طریق Environment Variableها مشخص می‌شوند.
برای دیدن Locale فعلی:
locale

مثلاً ممکن است ببینی:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=



——————

🧠 مهم‌ترین متغیرها
LANG
تنظیم پیش‌فرض Locale سیستم/کاربر است.
echo $LANG

مثلاً:
en_US.UTF-8

یعنی:
en → English
US → United States
UTF-8 → Encoding



—————

LC_ALL
اگر مقدار داشته باشد، می‌تواند تنظیمات سایر LC_*ها را override کند.
مثلاً:
echo $LC_ALL

معمولاً بهتر است برای تنظیم دائمی بی‌دلیل از آن استفاده نکنیم.


———————

LC_TIME
فرمت نمایش زمان و تاریخ:
echo $LC_TIME

LC_NUMERIC
فرمت اعداد:
echo $LC_NUMERIC

LC_MONETARY
فرمت پول:
echo $LC_MONETARY

LC_MESSAGES
زبان پیام‌های برنامه‌ها:
echo $LC_MESSAGES

—————-

🔤 حالا Encoding چیست؟
اینجا باید یک تفاوت مهم را بفهمی:
Locale ≠ Encoding
Locale می‌گوید:
«سیستم از چه زبان و منطقه‌ای استفاده کند؟»

Encoding می‌گوید:
«کاراکترها را چطور به داده قابل ذخیره در کامپیوتر تبدیل کنیم؟»


————-

1️⃣ ASCII
قدیمی‌ترین ساختار معروف برای نمایش کاراکترهاست.
مثلاً:
A → 65
B → 66
C → 67

ASCII عمدتاً برای حروف انگلیسی، اعداد و تعدادی علامت طراحی شده.
❌ مشکل:
فارسی، عربی، چینی و بسیاری زبان‌های دیگر را پوشش نمی‌دهد.



2️⃣ ISO-8859
برای گسترش ASCII مجموعه‌هایی از استانداردهای 8 بیتی ایجاد شدند.
مثلاً:
ISO-8859-1

برای بسیاری از کاراکترهای زبان‌های اروپای غربی استفاده می‌شد.
اما هر نسخه مجموعه متفاوتی از کاراکترها را پوشش می‌دهد.
پس هنوز مشکل چندزبانه بودن کامل وجود داشت.



3️⃣ Unicode
Unicode آمد تا برای تقریباً تمام زبان‌های دنیا یک استاندارد واحد برای کاراکترها داشته باشیم.
مثلاً:
A
ش
中
😀

همگی می‌توانند در Unicode تعریف شوند.
🧠 خیلی ساده:
ASCII یک محله بود؛ Unicode یک شهر خیلی بزرگ برای کاراکترهای زبان‌های مختلف است. 😄




4️⃣ UTF
اینجا یک نکته خیلی مهم:
Unicode و UTF یکی نیستند.
Unicode مشخص می‌کند چه کاراکتری چه کدی دارد.
UTF مشخص می‌کند این اطلاعات چطور در حافظه/فایل به صورت بایت ذخیره یا منتقل شود.
معروف‌ترین آن:
UTF-8

مثلاً:
LANG=en_US.UTF-8

یعنی Locale انگلیسی آمریکا با Encoding مبتنی بر UTF-8.






——————

🔍 در لینوکس چطور ببینیم؟
مهم‌ترین دستور:
locale

برای دیدن Localeهای موجود:
locale -a

مثلاً:
C
C.utf8
en_US.utf8

و برای دیدن مقدار یک متغیر:
echo $LANG

یا:
echo $LC_ALL
👏1
فصل ششم — قسمت شصت و پنجم 🐧
Remote Desktop — اتصال گرافیکی از راه دور به لینوکس
——————-
در این قسمت می‌خواهیم یاد بگیریم چطور از یک کامپیوتر دیگر به محیط گرافیکی لینوکس وصل شویم.
مثلاً:
Windows / Linux
│
│ Network
↓
Linux Server
│
└── GUI


————-

Remote Desktop چیست؟
یعنی به‌جای اینکه جلوی خود سرور باشیم، از کامپیوتر خودمان به آن وصل شویم و محیط گرافیکی آن را ببینیم و کنترل کنیم.
مثلاً:
PC خودت
↓
Remote Connection
↓
Linux Server
↓
GNOME / KDE / XFCE




——————

2️⃣ X11 چیست؟
X11 یکی از سیستم‌های قدیمی و معروف Linux/Unix برای نمایش GUI است.
نکته مهم:
X11 خودش «Remote Desktop» نیست؛ ولی قابلیت اجرای برنامه‌های گرافیکی از راه دور را دارد.

مثلاً روی سرور:
gedit

و پنجره برنامه روی کامپیوتر کلاینت نمایش داده شود.


—————


3️⃣ X11 Forwarding چیست؟
یعنی اتصال گرافیکی یک برنامه را از طریق SSH منتقل کنیم.
ساختار:
Client
│
│ SSH
↓
SSH Server
│
↓
X11 Application

مثلاً:
ssh -X ali@192.168.1.10

بعد روی سرور:
xclock

اگر X11 Forwarding درست تنظیم شده باشد، پنجره xclock روی سیستم کلاینت نمایش داده می‌شود.


—————-


4️⃣ فعال کردن X11 Forwarding در SSH
روی سرور فایل:
nano /etc/ssh/sshd_config

را باز کن.
دنبال این گزینه بگرد:
X11Forwarding yes

اگر # اولش بود:
#X11Forwarding yes

به:
X11Forwarding yes

تغییر بده.
بعد:
systemctl restart sshd




—————-

نصب X11 روی سیستم
در Debian/Ubuntu ممکن است نیاز داشته باشی:
apt install xauth

بعد از کلاینت:
ssh -X user@server-ip

یا در بعضی شرایط:
ssh -Y user@server-ip

🧠 تفاوت ساده:
-X → X11 Forwarding معمولی
-Y → Trusted X11 Forwarding



——————
5️⃣ Remmina چیست؟
Remmina یک برنامه GUI برای اتصال Remote به سیستم‌های دیگر است.
می‌تواند با پروتکل‌هایی مثل:
RDP
SSH
VNC
SPICE

کار کند.
مثلاً در Ubuntu:
sudo apt install remmina

بعد Remmina را باز می‌کنی:
Remmina
↓
New Connection
↓
Protocol: RDP
↓
Server: 192.168.1.10
↓
Username
↓
Password
↓
Connect


——————-

6️⃣ Remote Desktop واقعی با RDP
اگر می‌خواهی کل Desktop لینوکس را از راه دور ببینی، X11 Forwarding انتخاب مناسبی نیست.
برای این کار می‌توانی از RDP استفاده کنی.
مثلاً روی بعضی سیستم‌های Linux می‌توانی xrdp نصب کنی:
sudo apt install xrdp

سپس:
systemctl enable --now xrdp

بعد از Windows می‌توانی برنامه:
Remote Desktop Connection

را باز کنی و IP لینوکس را وارد کنی.


——————-

7️⃣ X11 Forwarding vs Remote Desktop
این تفاوت را حتماً بفهم:
X11 Forwarding
فقط یک یا چند برنامه گرافیکی را اجرا می‌کنی:
SSH
↓
xclock
↓
پنجره xclock روی Client

Remote Desktop
کل محیط دسکتاپ را می‌بینی:
RDP
↓
Linux Desktop
├── Files
├── Terminal
├── Browser
└── Settings






——————-
❤2👏1
فصل ششم —قسمت اخر - قسمت شصت و ششم 🐧
time and printer
- زمان و پرینتر
——————-
در این قسمت دو موضوع مهم داریم:

🕐 مدیریت زمان در لینوکس
🖨 مدیریت پرینتر در لینوکس

———————

🕐 بخش اول — زمان در لینوکس
1️⃣ date
برای نمایش تاریخ و ساعت فعلی سیستم:
date

مثلاً:
Mon Aug 24 20:10:30 +0330 2026

یعنی سیستم تاریخ، ساعت و Time Zone را نشان می‌دهد.

——————-

2️⃣ date +%s
این یکی خیلی مهم است.
date +%s

یک عدد بزرگ می‌دهد، مثلاً:
1787582430

این عدد Unix Timestamp است.
یعنی تعداد ثانیه‌هایی که از:
1970-01-01 00:00:00 UTC

گذشته است.
🧠 چرا 1970؟
سیستم‌های Unix یک نقطه شروع استاندارد برای شمارش زمان انتخاب کردند که به آن:
Unix Epoch
می‌گوییم.
مثلاً:
1970
↓
شروع شمارش
↓
1 ثانیه
2 ثانیه
3 ثانیه
...

به همین دلیل در برنامه‌نویسی و سیستم‌ها خیلی زیاد Timestamp می‌بینی.
مثلاً:
date +%s

یا در PHP:
time();

———-

3️⃣ دستور time
اینجا یک اشتباه رایج وجود دارد:
time

با date فرق دارد.
time برای اندازه‌گیری مدت زمان اجرای یک دستور است.
مثلاً:
time ls

خروجی ممکن است چیزی شبیه این باشد:
real    0m0.005s
user 0m0.001s
sys 0m0.004s

یعنی می‌گوید اجرای ls چقدر زمان برده.
مثال واقعی
اگر بخواهی ببینی یک اسکریپت چقدر طول می‌کشد:
time ./backup.sh

🧠 پس:
date → الان ساعت چند است؟
time → این برنامه چقدر طول کشید؟

——————-

4️⃣ timedatectl
یکی از مهم‌ترین ابزارهای مدیریت زمان در Linux است.
timedatectl

اطلاعاتی مثل:
Local time
Universal time
RTC time
Time zone
NTP

را نمایش می‌دهد.


———————

تغییر Time Zone
اول Time Zoneهای موجود:
timedatectl list-timezones

مثلاً:
sudo timedatectl set-timezone Asia/Tehran

بعد:
timedatectl

را بزن.

————

🌍 Local Time و UTC
در لینوکس معمولاً چند مفهوم زمانی داریم:
Local Time
UTC
RTC

Local Time
زمان محلی سیستم.
مثلاً:
20:30

UTC
زمان استاندارد جهانی.
مثلاً:
17:00 UTC

RTC
Real-Time Clock
ساعتی است که در سخت‌افزار سیستم وجود دارد و حتی وقتی سیستم‌عامل خاموش است، زمان را نگه می‌دارد.


—————-

🧠 5️⃣ NTP چیست؟
NTP = Network Time Protocol
وظیفه‌اش این است که ساعت سیستم را با یک Time Server هماهنگ کند.
مثلاً:
Linux Server
│
│ NTP
↓
Time Server
│
↓
زمان صحیح

چرا مهم است؟
چون ساعت اشتباه می‌تواند باعث مشکلاتی مثل:
اشتباه بودن زمان Logها
مشکل Certificate
مشکل Authentication
مشکل Kerberos
مشکل هماهنگی سرورها
شود.
برای دیدن وضعیت NTP:
timedatectl

ممکن است ببینی:
System clock synchronized: yes
NTP service: active

——————

🖨 بخش دوم — Printer در Linux
حالا برویم سراغ پرینتر.
در لینوکس سیستم معروفی برای مدیریت پرینتر وجود دارد:
CUPS
CUPS = Common UNIX Printing System
CUPS سیستم اصلی چاپ در بسیاری از توزیع‌های Linux و Unix است.
ساختار ساده:
Application
↓
CUPS
↓
Printer

مثلاً Firefox می‌خواهد یک صفحه را چاپ کند:
Firefox
↓
CUPS
↓
Printer




—————-

🖨 نصب CUPS
در Debian/Ubuntu:
sudo apt install cups

فعال کردن سرویس:
sudo systemctl enable --now cups

بررسی:
systemctl status cups

———

📋 دیدن پرینترها
یکی از ابزارهای مهم CUPS:
lpstat

مثلاً:
lpstat -p

برای دیدن Printerهای موجود.
و:
lpstat -a

برای دیدن Printerهایی که درخواست‌های چاپ را قبول می‌کنند.

—————

دستور:
lp file.txt

یعنی فایل را برای چاپ ارسال کن.
مثلاً:
lp report.pdf



—————

❌ حذف یک Job چاپ
اگر اشتباهی فایل بزرگی را برای چاپ فرستادی:
cancel JOB-ID

مثلاً:
cancel printer-123

برای دیدن Jobها:
lpstat -o




—————

🌐 پنل گرافیکی CUPS
CUPS یک Web Interface هم دارد.
معمولاً:
http://localhost:631

در آن می‌توانی:
Printer اضافه کنی
Printer حذف کنی
Jobها را ببینی
Printer پیش‌فرض تعیین کنی
وضعیت Printer را بررسی کنی
❤2👏2
خب خب فصل شش کاملا و کلا امروز تموم شد.

از فردا به امید خدا فصل هفت رو استارت میزنیم
👏3🕊2❤1