مقدمه
با این راهنمای جامع برای دستورات ضروری لینوکس، از تمام پتانسیل سیستم لینوکس خود استفاده کنید. چه یک مدیر باتجربه باشید و چه تازه کار، تسلط بر این دستورات برای مدیریت کارآمد سرور، نوشتن اسکریپت و عیبیابی بسیار مهم است. در این آموزش، پرکاربردترین و قدرتمندترین دستورات برای مدیریت فایل، کنترل فرآیند، دسترسی کاربر، پیکربندی شبکه و اشکالزدایی سیستم را خواهید آموخت.
بیش از ۵۰ دستور ضروری لینوکس را خواهید آموخت که شما را به یک کاربر قدرتمند لینوکس تبدیل میکند. از مقدماتی تا پیشرفته، این دستورات به ابزارهای مورد استفاده شما برای انجام هر کاری که پیش میآید تبدیل میشوند.
پیشنیازها
ما این دستورات را روی یک سرور اوبونتو اجرا خواهیم کرد، اما شما میتوانید این آموزش را روی هر توزیع مدرن لینوکس دنبال کنید. میتوانید با دنبال کردن راهنمای ما در مورد راهاندازی اولیه سرور در اوبونتو، یک سرور اوبونتو را برای این آموزش راهاندازی کنید.
- ls – پرکاربردترین دستور در لینوکس برای فهرست کردن دایرکتوریها.
- pwd – دستور چاپ دایرکتوری کاری در لینوکس.
- cd – دستور لینوکس برای پیمایش در دایرکتوریها.
- mkdir – دستور مورد استفاده برای ایجاد دایرکتوریها در لینوکس.
- mv – انتقال یا تغییر نام فایلها در لینوکس.
- cp – کاربرد مشابه mv اما برای کپی کردن فایلها در لینوکس.
- rm – حذف فایلها یا دایرکتوریها.
- touch – ایجاد فایلهای خالی/خالی.
- ln – ایجاد لینکهای نمادین (میانبرها) به فایلهای دیگر.
- clear – پاک کردن صفحه نمایش ترمینال.
- cat – نمایش محتویات فایل در ترمینال.
- echo – چاپ هر متنی که پس از دستور میآید.
- less – دستور لینوکس برای نمایش خروجیهای صفحهبندی شده در ترمینال.
- man – دسترسی به صفحات راهنما برای همه دستورات لینوکس.
- uname – دستور لینوکس برای دریافت اطلاعات اولیه در مورد سیستم عامل.
- whoami – دریافت نام کاربری فعال.
- tar – دستور استخراج و فشردهسازی فایلها در لینوکس.
- grep – جستجوی یک رشته در یک خروجی.
- head – برگرداندن تعداد مشخص شده خطوط از بالا.
- tail – برگرداندن تعداد مشخص شده خطوط از پایین.
- diff – یافتن تفاوت بین دو فایل.
- cmp – به شما امکان میدهد بررسی کنید که آیا دو فایل یکسان هستند یا خیر.
- comm – عملکرد diff و cmp را ترکیب میکند.
- sort – دستور لینوکس برای مرتبسازی محتوای یک فایل هنگام خروجی گرفتن.
- export – متغیرهای محیطی را در لینوکس صادر میکند.
- zip – فایلهای زیپ در لینوکس.
- unzip – فایلها را در لینوکس از حالت زیپ خارج میکند.
- ssh – دستور Secure Shell در لینوکس.
- service – دستور لینوکس برای شروع و توقف سرویسها.
- ps – نمایش فرآیندهای فعال.
- kill و killall – فرآیندهای فعال را بر اساس شناسه یا نام فرآیند از بین میبرد.
- df – نمایش اطلاعات سیستم فایل دیسک.
- mount – سیستم فایلها را در لینوکس mount میکند.
- chmod – دستور تغییر مجوزهای فایل.
- chown – دستور اعطای مالکیت فایلها یا پوشهها.
- ifconfig – نمایش رابطهای شبکه و آدرسهای IP.
- traceroute – ردیابی تمام مسیرهای شبکه برای رسیدن به مقصد.
- wget – دانلود مستقیم فایلها از اینترنت.
- ufw – دستور فایروال.
- iptables – فایروال پایه برای سایر ابزارهای فایروال برای ارتباط با.
- apt، pacman، yum، rpm – مدیران بسته به توزیع.
- sudo – دستور افزایش امتیازات در لینوکس.
- cal – مشاهده خط فرمان تقویم.
- alias – ایجاد میانبرهای سفارشی برای دستوراتی که مرتباً استفاده میکنید.
- dd – عمدتاً برای ایجاد فلش مموریهای USB قابل بوت استفاده میشود.
- whereis – یافتن صفحات باینری، منبع و راهنمای یک دستور.
- whatis – یافتن اینکه یک دستور برای چه چیزی استفاده میشود.
- top – مشاهده فرآیندهای فعال به صورت زنده با میزان مصرف سیستم آنها.
- useradd و usermod – اضافه کردن یک کاربر جدید یا تغییر دادههای کاربر موجود.
- passwd – ایجاد یا بهروزرسانی رمزهای عبور برای کاربران موجود.
دستورات فایل و دایرکتوری
Command | Description | Example |
---|---|---|
ls | List directory contents. | ls |
cd | Change directory. | cd /path/to/directory |
pwd | Show current directory. | pwd |
mkdir | Create a new directory. | mkdir new_directory |
rmdir | Remove an empty directory. | rmdir empty_directory |
rm | Delete files or directories. | rm file.txt |
touch | Create an empty file. | touch new_file.txt |
cp | Copy files or directories. | cp file.txt /path/to/destination |
mv | Move or rename files. | mv file.txt /path/to/new_location |
cat | Display file contents. | cat file.txt |
nano / vim | Edit files in terminal. | nano file.txt |
find | Search for files in a directory hierarchy. | find . -name "file.txt" |
grep | Search text using patterns. | grep "pattern" file.txt |
tar | Archive and compress files. | tar -cvf archive.tar file1.txt file2.txt |
df | Show disk usage of file systems. | df |
du | Show directory/file size. | du -sh /path/to/directory |
chmod | Change file permissions. | chmod 755 file.txt |
chown | Change file owner. | chown user:group file.txt |
mount | Mount a filesystem. | mount /dev/sdb1 /mnt |
umount | Unmount a filesystem. | umount /mnt |
دستورات شبکه
Command | Description | Sample Usage |
---|---|---|
ping | Test connectivity to a host. | ping google.com |
ifconfig / ip a | Display network interfaces. | ifconfig or ip a |
netstat / ss | Show network connections. | netstat -tuln or ss -tuln |
wget | Download files via HTTP/FTP. | wget http://example.com/file.zip |
curl | Transfer data using URL syntax. | curl -O http://example.com/file.zip |
nc (Netcat) | Network debugging and data transfer. | nc -zv 192.168.1.1 80 |
tcpdump | Capture and analyze network packets. | tcpdump -i eth0 |
iptables | Configure firewall rules. | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
traceroute | Trace the path packets take to a network host. | traceroute example.com |
nslookup | Query DNS to obtain domain name or IP address mapping. | nslookup example.com |
ssh | Securely connect to a remote host. | ssh [email protected] |
دستورات نظارت بر فرآیند و سیستم
Command | Description | Example Command |
---|---|---|
ps | Show running processes. | ps aux |
top | Dynamic process viewer. | top |
htop | Enhanced version of top. | htop |
kill | Send a signal to a process. | kill <PID> |
killall | Kill processes by name. | killall <process_name> |
uptime | System uptime and load. | uptime |
whoami | Current logged-in user. | whoami |
env | Display environment variables. | env |
strace | Trace system calls of a process. | strace -p <PID> |
systemctl | Manage systemd services. | systemctl status <service_name> |
journalctl | View system logs. | journalctl -xe |
free | Display memory usage. | free -h |
vmstat | Report virtual memory statistics. | vmstat 1 |
iostat | Report CPU and I/O statistics. | iostat |
lsof | List open files by processes. | lsof |
dmesg | Print kernel ring buffer messages. | dmesg |
دستورات مدیریت کاربر و مجوز
Command | Description | Example Command |
---|---|---|
passwd | Change user password. | passwd <username> |
adduser / useradd | Add a new user. | adduser <username> or useradd <username> |
deluser / userdel | Delete a user. | deluser <username> or userdel <username> |
usermod | Modify user account. | usermod -aG <group> <username> |
groups | Show group memberships. | groups <username> |
sudo | Execute commands as root. | sudo <command> |
chage | Change user password expiry information. | chage -l <username> |
id | Display user identity information. | id <username> |
newgrp | Log in to a new group. | newgrp <group> |
دستورات انتقال فایل و همگامسازی
Command | Description | Example Command |
---|---|---|
scp | Securely copy files over SSH. | scp user@remote:/path/to/file /local/destination |
rsync | Efficiently sync files and directories. | rsync -avz /local/directory/ user@remote:/path/to/destination |
ftp | Transfer files using the File Transfer Protocol. | ftp ftp.example.com |
sftp | Securely transfer files using SSH File Transfer Protocol. | sftp user@remote:/path/to/file |
wget | Download files from the web. | wget http://example.com/file.zip |
curl | Transfer data from or to a server. | curl -O http://example.com/file.zip |
دستورات پردازش متن
Command | Description | Example Command |
---|---|---|
awk | Pattern scanning and processing. | awk '{print $1}' file.txt |
sed | Stream editor for filtering/modifying text. | sed 's/old/new/g' file.txt |
cut | Remove sections from lines of text. | cut -d':' -f1 /etc/passwd |
sort | Sort lines of text. | sort file.txt |
grep | Search for patterns in text. | grep 'pattern' file.txt |
wc | Count words, lines, and characters. | wc -l file.txt |
paste | Merge lines of files. | paste file1.txt file2.txt |
join | Join lines of two files on a common field. | join file1.txt file2.txt |
head | Output the first part of files. | head -n 10 file.txt |
tail | Output the last part of files. | tail -n 10 file.txt |
دستورات کاربردی و میانبرهای Shell
Command | Description | Example Command |
---|---|---|
alias | Create shortcuts for commands. | alias ll='ls -la' |
unalias | Remove an alias. | unalias ll |
history | Show previously entered commands. | history |
clear | Clear the terminal screen. | clear |
reboot | Reboot the system. | reboot |
shutdown | Power off the system. | shutdown now |
date | Display or set the system date and time. | date |
echo | Display a line of text. | echo "Hello, World!" |
sleep | Delay for a specified amount of time. | sleep 5 |
time | Measure the duration of command execution. | time ls |
watch | Execute a program periodically, showing output fullscreen. | watch -n 5 df -h |
حالا بیایید کمی عمیقتر به هر یک از این دستورات بپردازیم و آنها را با جزئیات بیشتری درک کنیم. ما در حال حاضر مقالات زیادی برای هر یک از این دستورات داریم. برای راحتی شما، لینکهایی به تمام مقالات موجود اضافه خواهیم کرد و با پوشش موضوعات جدید، مقاله را بهروزرسانی خواهیم کرد.
دستور ls در لینوکس
دستور ls برای فهرست کردن فایلها و دایرکتوریهای موجود در دایرکتوری کاری فعلی استفاده میشود. این یکی از پرکاربردترین دستورات لینوکس است که باید با آن آشنا باشید.
root@ubuntu:~# ln -s <source path> <link name>
همانطور که در تصویر بالا مشاهده میکنید، استفاده از خود دستور بدون هیچ آرگومانی، خروجیای با تمام فایلها و دایرکتوریهای موجود در آن دایرکتوری به ما میدهد. این دستور از نظر نمایش دادهها در خروجی، انعطافپذیری زیادی ارائه میدهد.
دستور pwd در لینوکس
دستور pwd به شما امکان میدهد دایرکتوری کاری فعلی را در ترمینال خود چاپ کنید. این یک دستور بسیار ابتدایی است و هدف خود را به خوبی برآورده میکند.
خب، در هر صورت، ترمینال شما معمولاً باید دایرکتوری کامل را داشته باشد. اما در صورتی که اینطور نباشد، این میتواند یک دستور سریع برای دیدن دایرکتوری باشد که در آن هستید. کاربرد دیگر این دستور هنگام ایجاد اسکریپتها است که این دستور میتواند به ما امکان دهد دایرکتوری که اسکریپت در آن ذخیره شده است را پیدا کنیم.
دستور cd در لینوکس
هنگام کار با ترمینال، جابجایی در دایرکتوریها تقریباً یک ضرورت است. دستور cd یکی از دستورات مهم لینوکس است که باید بدانید و به شما در پیمایش در دایرکتوریها کمک میکند. کافیست cd و به دنبال آن directory را تایپ کنید، همانطور که در زیر نشان داده شده است.
root@ubuntu:~# cd <directory path>
همانطور که در دستور بالا میبینید، من به سادگی cd /etc/ را تایپ کردم تا به دایرکتوری /etc بروم. ما از دستور pwd برای چاپ دایرکتوری کاری فعلی استفاده کردیم.
دستور mkdir در لینوکس
دستور mkdir به شما امکان میدهد دایرکتوریها را از داخل ترمینال ایجاد کنید.
root@ubuntu:~# mkdir <folder name>
همانطور که در تصویر بالا مشاهده میکنید، ما دایرکتوری JournalDev را تنها با همین دستور ساده ایجاد کردیم.
دستورات cp و mv
دستورات cp و mv معادل دستورات copy-paste و cut-paste در ویندوز هستند. اما از آنجایی که لینوکس واقعاً دستوری برای تغییر نام فایلها ندارد، ما از دستور mv نیز برای تغییر نام فایلها و پوشهها استفاده میکنیم.
root@ubuntu:~# cp <source> <destination>
در دستور بالا، ما یک کپی از فایل با نام Sample ایجاد کردیم. بیایید ببینیم اگر از دستور mv به همین روش استفاده کنیم، چه اتفاقی میافتد.
root@ubuntu:~# mv <source> <destination
در مورد بالا، از آنجایی که ما فایل را در همان دایرکتوری منتقل میکردیم، این کار به عنوان تغییر نام عمل کرد. اکنون نام فایل تغییر کرده است.
دستور rm در لینوکس
در بخش قبلی، فایل Sample-Copy را حذف کردیم. دستور rm برای حذف فایلها و پوشهها استفاده میشود و یکی از دستورات مهم لینوکس است که باید آن را بدانید.
root@ubuntu:~# rm <file name>
برای حذف یک دایرکتوری، باید آرگومان -r را به آن اضافه کنید. بدون آرگومان -r، دستور rm دایرکتوریها را حذف نمیکند.
علامت -r در دستور rm در لینوکس مخفف کلمه “recursive” است. وقتی با دستور rm استفاده شود، نه تنها فایل مشخص شده، بلکه تمام زیرشاخههای آن و فایلهای درون آن زیرشاخهها را نیز به صورت بازگشتی حذف میکند.
به عنوان مثال، برای حذف دایرکتوری mydir و محتویات آن با تایید، میتوانید از این دستور استفاده کنید:
root@ubuntu:~# rm -ri mydir
این کار قبل از حذف هر فایل و دایرکتوری در دایرکتوری mydir از شما تأیید میخواهد.
دستور touch در لینوکس
دستور touch در لینوکس یک فایل خالی ایجاد میکند یا مهر زمانی یک فایل موجود را بهروزرسانی میکند.
root@ubuntu:~# touch <file name>
دستور ln در لینوکس
برای ایجاد لینک به فایل دیگر، از دستور ln استفاده میکنیم. این یکی از مهمترین دستورات لینوکس است که اگر قصد دارید به عنوان مدیر لینوکس کار کنید، باید بدانید.
root@ubuntu:~# ln -s <source path> <link name>
پرچم -s یک پیوند نمادین (که به عنوان پیوند نمادین یا پیوند نرم نیز شناخته میشود) به یک فایل یا دایرکتوری ایجاد میکند. پیوند نمادین نوع خاصی از فایل است که به عنوان میانبر یا اشارهگر به فایل یا دایرکتوری دیگر عمل میکند.
به طور پیشفرض، دستور ln به جای پیوندهای نمادین یا نرم، پیوندهای سخت ایجاد میکند.
یک پیوند سخت، یک کپی آینهای از یک فایل اصلی با همان محتوا است. مانند پیوندهای نمادین، اگر محتوای فایل اصلی را ویرایش کنید، آن تغییرات در پیوند سخت منعکس میشوند. با این حال، اگر فایل اصلی را حذف کنید، پیوند سخت همچنان کار خواهد کرد و میتوانید آن را مانند یک کپی معمولی از فایل اصلی مشاهده و ویرایش کنید.
دستور clear در لینوکس
دستور clear در لینوکس صفحه ترمینال را پاک میکند. این دستور تمام متن و خروجی نمایش داده شده در ترمینال را حذف میکند و یک صفحه خالی برای کار به شما میدهد.
در اینجا مثالی از نحوه استفاده از دستور clear آورده شده است:
root@ubuntu:~# clear
این کار صفحه ترمینال را پاک میکند و مکاننما را به گوشه سمت چپ بالای صفحه منتقل میکند.
همچنین میتوانید از دستور clear در ترکیب با سایر دستورات مانند این استفاده کنید:
root@ubuntu:~# ls -l; clear
این دستور فایلها و دایرکتوریهای موجود در دایرکتوری فعلی را فهرست میکند و سپس صفحه ترمینال را پاک میکند.
دستورات cat، echo و less
وقتی میخواهید محتوای یک فایل را در خروجی ترمینال چاپ کنید یا چیزی را چاپ کنید، از دستورات cat یا echo استفاده میکنیم. بیایید کاربرد اساسی آنها را بررسی کنیم.
root@ubuntu:~# cat <file name>
root@ubuntu:~# echo <Text to print on terminal>
همانطور که در مثال بالا میبینید، دستور cat، وقتی در فایل جدید ما استفاده میشود، محتویات فایل را چاپ میکند. در عین حال، وقتی از دستور echo استفاده میکنیم، به سادگی هر آنچه را که بعد از دستور میآید چاپ میکند.
دستور less زمانی استفاده میشود که خروجی چاپ شده توسط هر دستوری بزرگتر از فضای صفحه نمایش باشد و نیاز به پیمایش داشته باشد. دستور less به کاربر اجازه میدهد تا خروجی را تجزیه کند و با استفاده از کلیدهای enter یا space در آن پیمایش کند.
روش ساده برای انجام این کار استفاده از عملگر pipe (|) است.
root@ubuntu:~# cat /boot/grub/grub.cfg | less
از پرچم -N به همراه less برای نمایش شماره خطوط استفاده کنید. این میتواند زمانی مفید باشد که نیاز به دانستن شماره خط یک متن خاص دارید.
میتوانید از این پرچمهای مفید به روش زیر استفاده کنید:
root@ubuntu:~# cat /boot/grub/grub.cfg | less -SN
استفاده از less به همراه عملگر pipe میتواند در موقعیتهای مختلفی مفید باشد. در اینجا چند مثال آورده شده است:
- مشاهده خروجی یک دستور طولانی مدت، مانند top یا htop.
- جستجوی متن خاص در خروجی یک دستور، مانند grep یا cat.
دستور man در لینوکس
دستور man یک دستور بسیار مفید لینوکس است که باید آن را بلد باشید. هنگام کار با لینوکس، بستههایی که دانلود میکنیم میتوانند قابلیتهای زیادی داشته باشند. دانستن همه آنها غیرممکن است.
دستور man در لینوکس برای نمایش صفحه راهنمای یک دستور خاص استفاده میشود. این دستور اطلاعات دقیقی در مورد دستور، از جمله نحو، گزینهها و مثالهای آن ارائه میدهد.
در اینجا مثالی از نحوه استفاده از دستور man آورده شده است:
- یک ترمینال باز کنید و دستور man ls را تایپ کنید تا صفحه راهنمای دستور ls نمایش داده شود.
root@ubuntu:~# man ls
این صفحهای را نمایش میدهد که چیزی شبیه به این است:
OutputLS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
-c with -lt: sort by, and show, ctime (time of last modification
of file status information) with -l: show ctime and sort
by name;
...
دستورات uname و whoami
دستورات uname و whoami به شما امکان دسترسی به برخی اطلاعات اولیه را میدهند که هنگام کار بر روی چندین سیستم مفید هستند.
دستور uname در لینوکس اطلاعاتی در مورد هسته سیستم، از جمله نام هسته، نام میزبان، نسخه هسته، نسخه هسته و نام سختافزار دستگاه را نمایش میدهد.
دستور whoami در لینوکس نام کاربری کاربر فعلی را برمیگرداند. این نام مخفف “who am I?” است و اغلب برای تعیین هویت کاربر فعلی در اسکریپتهای شل یا ترمینال استفاده میشود.
بیایید خروجی هر دو دستور و نحوه استفاده از آنها را ببینیم.
root@ubuntu:~# uname -a
پارامتر -a به همراه دستور uname مخفف “all” است. این دستور اطلاعات کامل را چاپ میکند. اگر پارامتر اضافه نشود، تنها چیزی که به عنوان خروجی دریافت خواهید کرد “Linux” است.
- برای نمایش نام هسته از uname -s استفاده کنید.
- برای نمایش نام میزبان از uname -n استفاده کنید.
- برای نمایش نسخه کرنل از دستور uname -r استفاده کنید.
- برای نمایش نسخه کرنل از دستور uname -v استفاده کن
- برای نمایش نام سختافزار دستگاه از دستور uname -m استفاده کنید.
دستورات tar، zip و unzip
دستور tar در لینوکس برای ایجاد و استخراج فایلهای آرشیو شده استفاده میشود. ما میتوانیم چندین فایل آرشیو مختلف را با استفاده از دستور tar استخراج کنیم.
برای ایجاد یک آرشیو، از پارامتر -c و برای استخراج یک آرشیو، از پارامتر -x استفاده میکنیم. بیایید ببینیم چگونه کار میکند.
#Compress
root@ubuntu:~# tar -cvf <archive name> <files separated by space>
#Extract
root@ubuntu:~# tar -xvf <archive name>
در خط اول، ما یک فایل بایگانی به نام Compress.tar با استفاده از New-File و New-File-Link ایجاد کردیم. در دستور بعدی، آن فایلها را از بایگانی استخراج کردهایم.
بیایید در مورد دستورات zip و unzip صحبت کنیم. هر دو بسیار سرراست هستند. میتوانید از آنها بدون هیچ پارامتری استفاده کنید و همانطور که در نظر گرفته شده است، کار خواهند کرد. بیایید مثالی را در زیر ببینیم.
root@ubuntu:~# zip <archive name> <file names separated by space>
root@ubuntu:~# unzip <archive name>
از آنجایی که ما از قبل آن فایلها را در همان دایرکتوری داریم، دستور unzip قبل از رونویسی آن فایلها از ما سوال میکند.
دستور grep در لینوکس
دستور grep یک ابزار جستجوی متن قدرتمند و همهکاره در سیستمعاملهای مبتنی بر لینوکس و یونیکس است. این دستور میتواند الگوها یا رشتههای خاص را در یک یا چند فایل جستجو کند و خروجی دستورات دیگر را فیلتر کند.
دستور grep مخفف عبارت “چاپ عبارت منظم جهانی” است که نشان دهنده توانایی آن در جستجوی عبارات منظم در چندین خط و فایل است.
root@ubuntu:~# <Any command with output> | grep "<string to find>"
این یک نمایش ساده از این دستور بود.
دستورات head و tail
هنگام خروجی گرفتن از فایلهای بزرگ، دستورات head و tail مفید واقع میشوند. این دستورات به ترتیب ابتدا یا انتهای یک فایل را نمایش میدهند. آنها معمولاً برای مشاهده سریع محتوای یک فایل بدون نیاز به باز کردن آن در یک ویرایشگر متن استفاده میشوند.
دستورات head و tail به طور پیشفرض 10 خط اول یک فایل را نمایش میدهند. برای نمایش تعداد متفاوتی از خطوط، میتوانید از گزینه -n و به دنبال آن تعداد خطوطی که میخواهید نمایش دهید استفاده کنید.
در اینجا مثالی از استفاده از دستورات head و tail آورده شده است:
root@ubuntu:~# head <file name>
root@ubuntu:~# tail <file name>
همانطور که میبینید، دستور head، 10 خط از بالای فایل را نشان داد.
دستور tail، ده خط پایینی فایل را نمایش داد.
از این دستورات میتوان برای مشاهده سریع محتوای یک فایل، نظارت بر بهروزرسانیهای بلادرنگ برای عیبیابی مشکلات، فیلتر کردن خروجی سایر دستورات و انجام تجزیه و تحلیل گزارشها استفاده کرد.
دستورات diff، comm و cmp
دستورات diff، comm و cmp همگی برای مقایسه فایلها در سیستمعاملهای مبتنی بر لینوکس و یونیکس استفاده میشوند. این دستورات میتوانند برای شناسایی تفاوتهای بین دو فایل، ادغام تغییرات و انجام سایر کارهای مقایسه فایلها مورد استفاده قرار گیرند.
root@ubuntu:~# diff <file 1> <file 2>
همانطور که در بالا میبینید، ما یک متن کوچک با عنوان «این خط ویرایش شده است» به فایل New-File-Edited اضافه کردهایم.
دستور cmp برای مقایسه دو فایل و نمایش اولین بایتی که بین آنها متفاوت است استفاده میشود. میتوان از آن برای شناسایی تفاوتهای بین فایلهای باینری یا بررسی خرابی در فایلها استفاده کرد.
root@ubuntu:~# cmp <file 1> <file 2>
دستور cmp فقط شماره خط را به ما میگوید که متفاوت است. متن اصلی را نشان نمیدهد.
دستور comm برای مقایسه دو فایل مرتب شده و نمایش خطوط منحصر به فرد هر فایل و همچنین خطوط مشترک هر دو فایل استفاده میشود.
root@ubuntu:~# comm <file 1> <file2>
متنی که در سمت چپ تراز شده است، فقط در فایل ۱ وجود دارد. متن وسطچین فقط در فایل ۲ وجود دارد. و متن راستچین در هر دو فایل وجود دارد.
از ظاهر آن، دستور comm زمانی بیشترین کاربرد را دارد که سعی میکنیم فایلهای بزرگتر را با هم مقایسه کنیم و میخواهیم همه چیز را مرتب ببینیم.
هر سه این دستورها ابزارهای ضروری برای کار با فایلها در سیستمعاملهای مبتنی بر لینوکس و یونیکس هستند. با درک نحوه استفاده مؤثر از دستورات diff، comm و cmp، میتوانید تفاوتهای بین فایلها را شناسایی کنید، تغییرات را ادغام کنید و سایر کارهای مقایسه فایل را انجام دهید.
این دستورات میتوانند به شما در شناسایی و حل مشکلات فایلها و همچنین ردیابی تغییرات و حفظ کنترل نسخه کمک کنند. چه توسعهدهنده باشید و چه مدیر سیستم، این دستورات بخش مهمی از جعبه ابزار شما هستند.
دستور sort در لینوکس
دستور sort برای مرتبسازی سطرها در یک فایل متنی یا ورودی استاندارد در سیستمعاملهای مبتنی بر لینوکس و یونیکس استفاده میشود. میتوان از آن برای مرتبسازی سطرها به ترتیب صعودی یا نزولی و انجام سایر عملیات مرتبسازی، مانند مرتبسازی بر اساس فیلدها یا استفاده از یک ترتیب مرتبسازی سفارشی، استفاده کرد.
نحوه کلی دستور sort به صورت زیر است:
root@ubuntu:~# sort <filename>
به طور پیشفرض، دستور sort سطرها را به ترتیب ASCII مرتب میکند، که میتواند هنگام مرتبسازی اعداد یا کاراکترهای خاص منجر به نتایج غیرمنتظرهای شود. برای مرتبسازی اعداد به ترتیب عددی، میتوانید از گزینه -n استفاده کنید.
در اینجا مثالی از استفاده از گزینه -n آورده شده است:
root@ubuntu:~# sort -n file.txt
دستور بالا سطرهای file.txt را به ترتیب عددی مرتب میکند.
دستور sort همچنین میتواند برای مرتبسازی سطرها بر اساس فیلدهای خاص با استفاده از گزینه -k استفاده شود.
در اینجا مثالی از استفاده از گزینه -k آورده شده است:
root@ubuntu:~# sort -k 2 file.txt
این دستور، سطرهای موجود در فایل file.txt را بر اساس فیلد دوم مرتب میکند.
دستور sort ابزاری قدرتمند و انعطافپذیر برای کار با فایلهای متنی در سیستمعاملهای مبتنی بر لینوکس و یونیکس است. با درک نحوهی استفادهی مؤثر از دستور sort، میتوانید سطرهای فایلهای متنی را مرتب کنید، سطرها را بر اساس فیلدهای خاص مرتب کنید و سایر عملیات مرتبسازی را انجام دهید.
این دستورات میتوانند به شما در سازماندهی و تجزیه و تحلیل دادهها و انجام سایر وظایف دستکاری فایل کمک کنند. چه توسعهدهنده باشید و چه مدیر سیستم، دستور sort بخش مهمی از مجموعه ابزارهای شماست.
دستور export در لینوکس
دستور export در سیستمعاملهای مبتنی بر لینوکس و یونیکس برای تنظیم متغیرهای محیطی استفاده میشود. متغیرهای محیطی برای ذخیره اطلاعاتی که میتوانند توسط فرآیندها یا دستورات استفاده شوند، استفاده میشوند.
پس از تنظیم یک متغیر محیطی، هر فرآیند یا دستوری که در همان پوسته اجرا میشود، میتواند به آن دسترسی داشته باشد.
متغیرهای محیطی میتوانند برای ذخیره طیف وسیعی از اطلاعات، مانند تنظیمات پیکربندی، تنظیمات کاربر یا اطلاعات سیستم، استفاده شوند.
در اینجا مثالی از استفاده از دستور export آورده شده است:
root@ubuntu:~# export <variable name>=<value>
دستور ssh در لینوکس
دستور ssh در سیستم عاملهای مبتنی بر لینوکس و یونیکس، یک اتصال shell امن به یک سرور راه دور برقرار میکند. این دستور یک اتصال رمزگذاری شده امن بین سرورهای محلی و راه دور فراهم میکند و به کاربران امکان میدهد دستورات را اجرا کرده و فایلها را به صورت ایمن منتقل کنند.
سینتکس اصلی دستور ssh به صورت زیر است:
root@ubuntu:~ ssh username@remote-server
این دستور با استفاده از نام کاربری، یک اتصال ssh به سرور راه دور برقرار میکند.
- پیکربندی روشهای احراز هویت (رمز عبور، کلید عمومی و غیره)
- پیکربندی الگوریتمهای رمزگذاری
- پیکربندی فشردهسازی
- پیکربندی انتقال پورت
- پیکربندی انتقال X11
- پیکربندی کلیدهای SSH
دستور سرویس در لینوکس
دستور service در لینوکس برای مدیریت سرویسهای سیستمی استفاده میشود که فرآیندهای طولانیمدتی هستند که در زمان بوت شدن سیستم شروع به کار میکنند و در پسزمینه اجرا میشوند. این سرویسها مسئول ارائه قابلیتهای مختلف سیستمی مانند شبکه، مدیریت پایگاه داده و احراز هویت کاربر هستند.
دستور service برای شروع، توقف، راهاندازی مجدد و بررسی وضعیت این سرویسها استفاده میشود. این یک رابط کاربری برای دستور systemctl است که برای مدیریت مدیر سرویس systemd استفاده میشود.
سینتکس اصلی دستور به صورت زیر است.
root@ubuntu:~ service ssh status
root@ubuntu:~ service ssh stop
root@ubuntu:~ service ssh start
همانطور که در تصویر مشاهده میکنید، سرور ssh روی سیستم ما در حال اجرا است.
دستورات ps، kill و killall
دستورات ps، kill و killall همگی برای مدیریت فرآیندها در لینوکس استفاده میشوند.
دستور ps برای نمایش اطلاعات مربوط به فرآیندهای در حال اجرا در سیستم استفاده میشود. در اینجا چند نمونه از استفاده از دستور ps آورده شده است:
نمایش لیست تمام فرآیندهای در حال اجرا:
root@ubuntu:~ ps -ef
نمایش لیستی از تمام فرآیندها برای یک شناسه فرآیند (PID) خاص:
root@ubuntu:~ ps -p PID
بیایید همه اینها را در عمل ببینیم:
root@ubuntu:~ ps
root@ubuntu:~ kill <process ID>
root@ubuntu:~ killall <process name>
برای اهداف نمایشی، ما یک اسکریپت پوسته با یک حلقه بینهایت ایجاد خواهیم کرد و آن را در پسزمینه اجرا خواهیم کرد.
با استفاده از نماد &، میتوانیم یک فرآیند را به پسزمینه منتقل کنیم. همانطور که میبینید، یک فرآیند bash جدید با PID 14490 ایجاد شده است.
حالا، برای کشتن یک فرآیند با دستور kill، میتوانید kill را تایپ کنید و به دنبال آن PID (شناسه فرآیند) فرآیند را بنویسید.
اما اگر شناسه فرآیند را نمیدانید و فقط میخواهید فرآیند را با نام آن از بین ببرید، میتوانید از دستور killall استفاده کنید.
متوجه خواهید شد که PID 14490 فعال مانده است. دلیلش این است که هر دو بار، فرآیند sleep را kill کردیم.
دستورات df و mount
هنگام کار با لینوکس، دستورات df و mount ابزارهای بسیار کارآمدی برای mount کردن سیستم فایلها و دریافت جزئیات سیستم فایل هستند.
دستور df برای نمایش میزان فضای دیسک استفاده شده و موجود در سیستم فایلها استفاده میشود و دستور mount برای mount کردن یک سیستم فایل یا دستگاه به یک دایرکتوری خاص استفاده میشود.
وقتی میگوییم mount، به این معنی است که دستگاه را به یک پوشه متصل میکنیم تا بتوانیم از سیستم فایل خود به فایلها دسترسی داشته باشیم. سینتکس پیشفرض برای mount کردن یک سیستم فایل به شرح زیر است:
root@ubuntu:~ mount /dev/cdrom /mnt
root@ubuntu:~ df -h
در مورد بالا، /dev/cdrom دستگاهی است که باید نصب شود. معمولاً یک دستگاه قابل نصب در داخل پوشه /dev قرار دارد. mnt پوشه مقصدی است که دستگاه باید در آن نصب شود. میتوانید آن را به هر پوشهای که میخواهید تغییر دهید، اما ما از /mnt استفاده کردهایم زیرا پوشه پیشفرض سیستم برای نصب دستگاهها است.
برای دیدن دستگاههای نصب شده و کسب اطلاعات بیشتر در مورد آنها، از دستور df استفاده میکنیم. فقط تایپ کردن df دادهها را به صورت بایت به ما میدهد که قابل خواندن نیست. بنابراین، از پارامتر -h برای قابل خواندن دادهها توسط انسان استفاده خواهیم کرد.
دستورات chmod و chown
دستورات chmod و chown برای تغییر مجوزهای فایل و مالکیت در لینوکس استفاده میشوند.
دستور chmod برای تغییر مجوزهای یک فایل یا دایرکتوری و دستور chown برای تغییر مالکیت یک فایل یا دایرکتوری استفاده میشود.
نحوه پیشفرض برای هر دو دستور chmod <parameter> filename و chown <user:group> filename است.
root@ubuntu:~ chmod +x loop.sh
root@ubuntu:~ chmod root:root loop.sh
در مثال بالا، ما با دستور chmod مجوزهای اجرایی را به فایل loop.sh اضافه میکنیم. علاوه بر این، با دستور chown، آن را فقط برای کاربر root و کاربران درون گروه root قابل دسترسی کردهایم.
همانطور که متوجه خواهید شد، بخش ریشه (root) اکنون به www-data تغییر یافته است که کاربر جدیدی است که مالکیت کامل فایل را در اختیار دارد.
دستورات ifconfig و traceroute
دستورات ifconfig و traceroute رابطهای شبکه را مدیریت کرده و مسیر بستههای شبکه را در لینوکس ردیابی میکنند.
دستور ifconfig لیستی از تمام رابطهای شبکه به همراه آدرسهای IP، آدرسهای MAC و سایر اطلاعات مربوط به رابط را در اختیار شما قرار میدهد.
root@ubuntu:~ ifconfig
پارامترهای متعددی وجود دارد که میتوان از آنها استفاده کرد، اما ما در اینجا با دستور پایه کار خواهیم کرد.
دستور traceroute برای ردیابی مسیر بستههای شبکه و تعیین مسیری که آنها برای رسیدن به یک مقصد خاص طی میکنند، استفاده میشود.
هنگام کار با traceroute، میتوانید به سادگی آدرس IP، نام میزبان یا نام دامنه نقطه پایانی را مشخص کنید.
root@ubuntu:~ traceroute <destination address>
بدیهی است که localhost فقط یک گام (خود رابط شبکه) است. میتوانید همین دستور را با هر نام دامنه یا آدرس IP دیگری امتحان کنید تا تمام روترهایی را که بستههای داده شما برای رسیدن به مقصد از آنها عبور میکنند، مشاهده کنید.
دستور wget در لینوکس
اگر میخواهید فایلی را از داخل ترمینال دانلود کنید، دستور wget یکی از کاربردیترین ابزارهای خط فرمان موجود است. این یکی از دستورات مهم لینوکس است که هنگام کار با فایلهای منبع باید بدانید.
وقتی لینک دانلود را مشخص میکنید، باید مستقیماً به فایل لینک شود. اگر فایل از طریق دستور wget قابل دسترسی نباشد، به جای فایل واقعی که میخواهید، صفحه وب را به صورت HTML دانلود میکند.
بیایید یک مثال بزنیم. سینتکس اصلی دستور wget به صورت زیر است:
root@ubuntu:~ wget <link to file>
یا،
root@ubuntu:~ wget -c <link to file>
آرگومان -c به ما امکان میدهد دانلودی که متوقف شده را از سر بگیریم.
دستورات ufw و iptables
دستورات ufw و iptables برای مدیریت فایروالها در لینوکس استفاده میشوند.
UFW و IPTables رابطهای فایروال برای فایروال netfilter هسته لینوکس هستند. IPTables مستقیماً قوانین فایروال را به Netfilter منتقل میکند در حالی که UFW قوانین را در IPTables پیکربندی میکند و سپس آن قوانین را به Netfilter ارسال میکند.
چرا وقتی IPTables داریم به UFW نیاز داریم؟ زیرا IPTables برای یک تازهکار بسیار دشوار است. UFW کارها را بسیار آسان میکند. به مثال زیر توجه کنید که در آن سعی داریم پورت ۸۰ را برای وبسرور خود مجاز کنیم.
root@ubuntu:~# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
root@ubuntu:~# ufw allow 80
مطمئنم حالا میدانید چرا UFW ساخته شد! ببینید که سینتکس آن چقدر آسان میشود. هر دوی این فایروالها بسیار جامع هستند و میتوانند به شما امکان دهند هر نوع پیکربندی مورد نیاز برای شبکه خود را ایجاد کنید. حداقل اصول اولیه فایروال UFW یا IPTables را یاد بگیرید، زیرا اینها دستورات لینوکسی هستند که باید بدانید.
مدیران بسته در لینوکس
توزیعهای مختلف لینوکس از مدیریت بستههای متفاوتی استفاده میکنند. از آنجایی که ما روی سرور اوبونتو کار میکنیم، مدیریت بسته apt را داریم. اما برای کسی که روی دستگاه فدورا، رد هت، آرچ یا سنتوس کار میکند، مدیریت بسته متفاوت خواهد بود.
در زیر دستوراتی در مورد نحوه استفاده از این مدیریت بستهها در توزیعهای مختلف لینوکس آمده است.
- Debian and Debian-based distros – apt install <package name>
- Arch and Arch-based distros – pacman -S <package name>
- Red Hat and Red Hat-based distros – yum install <package name>
- Fedora and CentOS – yum install <package>
دستور sudo در لینوکس
«قدرت زیاد، مسئولیت زیاد به همراه دارد»
این نقل قولی است که وقتی یک کاربر sudo-enabled (sudoer) برای اولین بار از دستور sudo برای افزایش امتیازات استفاده میکند، نمایش داده میشود. این دستور معادل ورود به سیستم به عنوان root است (بر اساس مجوزهایی که به عنوان sudoer دارید).
non-root-user@ubuntu:~# sudo <command you want to run>
Password:
فقط کافی است دستور sudo را قبل از هر دستوری که نیاز به اجرای آن با امتیازات افزایش یافته دارید، اضافه کنید و تمام. استفاده از آن بسیار ساده است، اما اگر یک کاربر مخرب به sudoer دسترسی پیدا کند، میتواند یک خطر امنیتی اضافی نیز ایجاد کند.
دستور cal در لینوکس
آیا تا به حال خواستهاید تقویم را در ترمینال مشاهده کنید؟ ظاهراً افرادی هستند که میخواهند این اتفاق بیفتد، و خب، این هم از این.
دستور cal یک تقویم با ظاهری زیبا را در ترمینال نمایش میدهد. فقط کافیست دستور cal را در اعلان ترمینال خود وارد کنید.
root@ubuntu:~# cal
root@ubuntu:~# cal March 2024
اگرچه اغلب به آن نیاز نداریم، اما افزونهی فوقالعادهای است! این یک گزینهی شگفتانگیز برای طرفداران پروپاقرص دستگاههای الکترونیکی است.
دستور alias
آیا دستورهایی دارید که هنگام استفاده از ترمینال مرتباً اجرا میکنید؟ میتواند rm -r یا ls -l باشد، یا میتواند چیزی طولانیتر مانند tar -xvzf باشد.
این یکی از دستورات لینوکس است که بهرهوری را افزایش میدهد و باید بدانید.
اگر دستوری را میشناسید که مرتباً اجرا میکنید، وقت آن است که یک alias ایجاد کنید.
alias چیست؟ به زبان ساده، نام دیگری برای دستوری است که تعریف کردهاید.
root@ubuntu:~# alias lsl="ls -l"
OR
root@ubuntu:~# alias rmd="rm -r"
اکنون، هر بار که lsl یا rmd را در ترمینال وارد میکنید، خروجیای را دریافت خواهید کرد که اگر از دستورات کامل استفاده میکردید، دریافت میکردید.
مثالهای اینجا برای دستورات بسیار کوچکی هستند که میتوانید هر بار آنها را دستی تایپ کنید. اما در برخی موقعیتها که یک دستور آرگومانهای زیادی دارد که باید تایپ کنید، بهتر است یک نسخه مختصر از آن را ایجاد کنید.
دستور dd در لینوکس
این دستور برای تبدیل و کپی فایلها از فرمتهای مختلف سیستم فایل ایجاد شده است. امروزه، این دستور به سادگی برای ایجاد USB قابل بوت برای لینوکس استفاده میشود، اما هنوز کارهای مهمی وجود دارد که میتوانید با این دستور انجام دهید.
دستور dd در لینوکس یک دستور همهکاره است که برای کپی و تبدیل سطح پایین دادهها استفاده میشود. این دستور مخفف “data-description” یا “data definition” است و میتواند برای کپی و تبدیل دادهها بین فرمتهای مختلف فایل و دستگاههای ذخیرهسازی استفاده شود.
به عنوان مثال، اگر میخواستیم از کل هارد دیسک به عنوان یک درایو دیگر پشتیبانگیری کنیم، از دستور dd استفاده میکردیم.
root@ubuntu:~# dd if=/dev/sdb of=/dev/sda
آرگومانهای if و of به معنای فایل ورودی و فایل خروجی هستند.
این یک ابزار قدرتمند و انعطافپذیر است، اما اگر با دقت استفاده نشود، میتواند خطرناک نیز باشد. همیشه نحو (syntax) خود را دوباره بررسی کنید و قبل از اجرای دستور، مطمئن شوید که میدانید دستور چه کاری انجام خواهد داد.
دستورات whereis و whatis
دستورات whereis و whatis در لینوکس برای جستجوی اطلاعات مربوط به برنامهها و فایلها استفاده میشوند.
دستور whereis صفحات باینری، منبع و راهنما را برای یک دستور یا برنامه خاص پیدا میکند و دستور whatis توضیح کوتاهی از یک دستور یا برنامه را نمایش میدهد.
root@ubuntu:~# whereis sudo
sudo: /usr/bin/sudo /usr/lib/sudo /usr/share/man/man8/sudo.8.gz
دستور whatis توضیحی در مورد اینکه یک دستور واقعاً چیست، به ما میدهد.
root@ubuntu:~# whatis sudo
sudo (8) - execute a command as another user
دستور top در لینوکس
چند بخش قبل، در مورد دستور ps صحبت کردیم. مشاهده کردید که دستور ps فرآیندهای فعال را نمایش میدهد و خودش را خاتمه میدهد.
دستور top مانند نسخه CLI از task manager در ویندوز است.
دستور top در لینوکس یک ابزار نظارت بر سیستم است که اطلاعات بلادرنگ در مورد فرآیندهای سیستم و میزان استفاده از منابع را نمایش میدهد. این دستور یک نمای پویا و بلادرنگ از فعالیت سیستم، از جمله میزان استفاده از CPU، میزان استفاده از حافظه و اطلاعات فرآیندها ارائه میدهد.
- مرتبسازی فرآیندها بر اساس میزان استفاده از حافظه:
root@ubuntu:~# top -o MEM
این کار لیست فرآیندها را بر اساس میزان استفاده از حافظه مرتب میکند و فرآیندهایی که بیشترین استفاده را از حافظه دارند در بالا قرار میگیرند.
- نمایش اطلاعات دقیق در مورد یک فرآیند خاص:
root@ubuntu:~# top -p PID
به جای PID، شناسهی فرآیندی را که میخواهید بررسی کنید، قرار دهید.
- نمایش خلاصهای از میزان استفاده از منابع سیستم:
root@ubuntu:~# top -n 1
نمایش خلاصهای از میزان استفاده از منابع سیستم:
این یک ابزار قدرتمند و انعطافپذیر برای نظارت بر فعالیت سیستم و عیبیابی مشکلات عملکرد است.
دستورات useradd و usermod
دستورات useradd و usermod در لینوکس برای مدیریت حسابهای کاربری استفاده میشوند.
دستورات useradd یا adduser دقیقاً همان دستوراتی هستند که adduser فقط یک پیوند نمادین به دستور useradd است. این دستور به ما امکان میدهد یک کاربر جدید در لینوکس ایجاد کنیم.
root@ubuntu:~# useradd JournalDev -d /home/JD
دستور بالا یک کاربر جدید به نام JournalDev با دایرکتوری خانه /home/JD ایجاد میکند.
از سوی دیگر، دستور usermod برای تغییر کاربران موجود استفاده میشود. میتوانید هر مقداری از کاربر، از جمله گروهها، مجوزها و غیره را تغییر دهید.
به عنوان مثال، اگر میخواهید گروههای بیشتری به کاربر اضافه کنید، میتوانید تایپ کنید:
root@ubuntu:~# usermod JournalDev -a -G sudo, audio, mysql
دستور passwd در لینوکس
حالا که میدانید چگونه کاربران جدید ایجاد کنید، بیایید برای آنها رمز عبور نیز تعیین کنیم. دستور passwd به شما امکان میدهد رمز عبور را برای حساب کاربری خود تنظیم کنید، یا اگر مجوز دارید، رمز عبور را برای حسابهای کاربری دیگر تنظیم کنید.
در اینجا چند نمونه از استفاده از دستور passwd آورده شده است:
- تغییر رمز عبور برای کاربر فعلی:
root@ubuntu:~# passwd
این از شما میخواهد که رمز عبور جدیدی برای کاربر فعلی وارد کنید.
- تغییر رمز عبور برای یک کاربر خاص:
root@ubuntu:~# passwd username
به جای username، نام کاربری که میخواهید رمز عبورش را تغییر دهید را بنویسید.
- کاربر را مجبور کنید در ورود بعدی رمز عبور خود را تغییر دهد:
root@ubuntu:~# passwd -f username
- تعیین تاریخ انقضا برای رمز عبور کاربر:
root@ubuntu:~# passwd -e -n days -w warndays username
به جای days تعداد روزهای قبل از انقضای رمز عبور و به جای warm days تعداد روزهای قبل از انقضای رمز عبور که به کاربر هشدار داده میشود را قرار دهید.
اینها تنها چند نمونه از استفاده از دستور passwd در لینوکس هستند. با درک نحوه استفاده موثر از این دستور، میتوانید حسابهای کاربری را مدیریت کرده و از امنیت سیستم خود اطمینان حاصل کنید.
خطاهای رایج و اشکالزدایی
هنگام کار با دستورات لینوکس، ممکن است با خطاها و مشکلات مختلفی روبرو شوید. در اینجا برخی از مشکلات رایج و نحوه حل آنها آورده شده است:
۱. رفع خطاهای «Command not found»
اگر خطای command not found را دریافت کردید، به این معنی است که دستوری که سعی در اجرای آن دارید توسط سیستم شناسایی نشده است. این میتواند به دلایل مختلف رخ دهد:
- این دستور روی سیستم شما نصب نشده است. میتوانید آن را با استفاده از مدیر بسته خود (مثلاً apt، yum، dnf) نصب کنید.
اگر دیدید:bash: xyz: command not found
استفاده:
which xyz
اگر دستور نصب نشده است، نصب را امتحان کنید:
apt-get install <package-name>
- دستور در مسیر سیستم شما نیست. میتوانید دایرکتوری حاوی دستور را به مسیر سیستم خود اضافه کنید.
export PATH=$PATH:/path/to/command
- شما اشتباه تایپی مرتکب شدید. دستور را برای هرگونه خطای املایی دوباره بررسی کنید.
2. حل مشکلات مجوز با sudo
اگر با مشکل مجوز مواجه شدید، میتوانید از sudo برای اجرای دستور با امتیازات superuser استفاده کنید. برای مثال:
sudo command_name
3. مدیریت تداخل فایلها
تداخل فایلها میتواند زمانی رخ دهد که چندین کاربر یا فرآیند سعی کنند همزمان یک فایل را تغییر دهند. در اینجا چند روش برای مدیریت تداخل فایلها آورده شده است:
1.استفاده از سیستمهای کنترل نسخه (VCS): ابزارهایی مانند گیت میتوانند با فراهم کردن امکان ادغام تغییرات و حل دستی تداخلها، به مدیریت تداخلهای فایل کمک کنند.
git merge <branch_name>
اگر تداخلی وجود داشته باشد، گیت از شما میخواهد که آنها را حل کنید. فایلهای تداخلدار را باز کنید، تغییرات لازم را اعمال کنید و سپس فایلهای حلشده را کامیت کنید.
git add <resolved_file>
git commit -m "Resolved merge conflict"
2.مکانیسمهای قفلگذاری: قفلگذاری فایل را پیادهسازی کنید تا از نوشتن همزمان چندین فرآیند روی یک فایل جلوگیری شود. از flock در لینوکس برای ایجاد قفل روی یک فایل استفاده کنید.
'''' flock -x <file> -c "<command>" ...
3.عملیات اتمی: از عملیات اتمی استفاده کنید تا مطمئن شوید که نوشتن فایلها در یک مرحله انجام میشود و خطر تداخل کاهش مییابد.
mv temp_file target_file
یا، از mv با -f (اجباری) یا cp با -i (تعاملی) استفاده کنید:
mv -f file1 file2
cp -i file1 file2
۴. اشکالزدایی گلوگاههای عملکرد
گلوگاههای عملکرد میتوانند به طور قابل توجهی بر کارایی سیستم شما تأثیر بگذارند. در اینجا چند مرحله برای اشکالزدایی و رفع آنها آورده شده است:
- شناسایی گلوگاه: از ابزارهایی مانند top، htop، vmstat و iostat برای نظارت بر عملکرد سیستم و شناسایی منبعی که باعث گلوگاه میشود (CPU، حافظه، ورودی/خروجی دیسک و غیره) استفاده کنید.
top
- تحلیل گزارشها: گزارشهای سیستم و برنامهها را برای هرگونه خطا یا هشداری که ممکن است نشاندهنده مشکلات عملکرد باشد، بررسی کنید.
tail -f /var/log/syslog
- بهینهسازی کد: کد خود را برای بهبود عملکرد بررسی و بهینهسازی کنید. به دنبال الگوریتمهای ناکارآمد، محاسبات غیرضروری و نشت حافظه باشید.
- برنامه خود را پروفایل کنید: از ابزارهای پروفایلینگ مانند gprof، perf یا valgrind برای تجزیه و تحلیل عملکرد برنامه خود و شناسایی توابع کند یا مشکلات حافظه استفاده کنید.
gprof <فایل اجرایی> gmon.out
- مقیاسبندی منابع: اگر گلوگاه به دلیل محدودیت منابع است، مقیاسبندی سختافزار خود یا استفاده از متعادلسازی بار را برای توزیع بار بین چندین سرور در نظر بگیرید.
- شناسایی گلوگاه: از ابزارهایی مانند top، htop، vmstat و iostat برای نظارت بر عملکرد سیستم و شناسایی منبعی که باعث گلوگاه میشود (CPU، حافظه، ورودی/خروجی دیسک و غیره) استفاده کنید.
سوالات متداول
۱. پرکاربردترین دستورات لینوکس کدامند؟
پرکاربردترین دستورات لینوکس شامل cd، ls، mkdir، rm، cp، mv، echo، cat، grep، find، man، sudo، apt-get، ssh، ping، df، du، free، top، ps، kill، killall، service، systemctl، reboot، shutdown، whoami، uname، uptime، history و clear است.
۲. چگونه میتوانم تمام دستورات موجود در لینوکس را لیست کنم؟
شما میتوانید با استفاده از دستور compgen -c تمام دستورات موجود در لینوکس را لیست کنید. این دستور لیستی از تمام دستورات موجود در سیستم شما را نمایش میدهد.
۳. چگونه میتوانم یک فایل را در لینوکس پیدا کنم؟
شما میتوانید با استفاده از دستور find یک فایل را در لینوکس پیدا کنید. سینتکس اصلی find <path> -name “<filename>” است، که <path> دایرکتوری است که میخواهید جستجو را از آنجا شروع کنید و <filename> نام فایلی است که به دنبال آن هستید. برای مثال، /home/user -name “example.txt” را پیدا کنید.
۴. چگونه یک فرآیند را در لینوکس kill کنم؟
شما میتوانید با استفاده از دستور kill، یک فرآیند را در لینوکس kill کنید. ابتدا، باید شناسه فرآیند (PID) فرآیندی را که میخواهید kill کنید با استفاده از دستور ps یا top پیدا کنید. سپس، از دستور kill و به دنبال آن PID استفاده کنید. به عنوان مثال، kill 1234، که 1234 PID فرآیند است.
۵. تفاوت بین cp و mv چیست؟
دستور cp برای کپی کردن فایلها یا دایرکتوریها استفاده میشود، در حالی که دستور mv برای انتقال یا تغییر نام فایلها یا دایرکتوریها استفاده میشود. cp یک کپی از فایل اصلی ایجاد میکند و فایل اصلی را دست نخورده باقی میگذارد، در حالی که mv فایل را به مکان جدیدی منتقل میکند و آن را از مکان اصلی حذف میکند.
۶. چگونه میزان استفاده از حافظه سیستم لینوکس خود را بررسی کنم؟
شما میتوانید میزان استفاده از حافظه سیستم لینوکس خود را با استفاده از دستور free بررسی کنید. این دستور مقدار کل حافظه فیزیکی و swap آزاد و استفاده شده در سیستم را نمایش میدهد. برای مثال، free -h میزان استفاده از حافظه را در قالبی قابل خواندن توسط انسان نمایش میدهد.