چند دستور خارق العاده در ترمینال لینوکس

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

دستورات لینوکس

انواع دستورات لینوکس

در ادامه به معرفی  رایج ترین و پرکاربردترین دستورات لینوکس می پردازیم.

1-جستجوی فایل

از پرکاربردترین دستورات لینوکس کدهای مربوط به جستجوی یک فایل است.

Searching for certain files are inevitable for admins.  

find /home -type f -name "*.conf"

استفاده از دستور locate که ساده ترین و بهترین راه و از معروف ترین دستورات لینوکس است:

sudo updatedb
locate mickey.cpp

در میان انواع دستورات لینوکس کدهای مربوط به جستجوی فایل نیز وجود دارد. جستجوی فایل با دستور grep

$ cat /etc/ hosts | grep -i  "localhost"

برای لیست کردن فایل هایی که حجمشان بیشتر از 500mb هست از دستور زیر استفاده کنید .

find /home/ -type f -size +500M -exec ls -lh {} \;

2-زیپ کردن و از زیپ خارج کردن

شما با دستور زیر به سادگی میتوانید فایل های با پسوند .tar.gz و .bz2. را فشرده سازی کنید یا از از حالت فشرده خارج کنید . لطفا به این نکته توجه کنید که فایل های bz2 با استفاده از “j” flag مدت بیشتری زمان نیاز خواهد داشت .

tar cvfj example.tar.bz2 /home/example (create .bz2 using j flag)
 tar cvzf example.tar.gz  /home/images (create .tar.gz using z flag)
 tar -xzf example.tar.gz -C /home/justin (extract .tar.gz using x and z flag)
 tar -xjf example.bz2 -C /home/melissa (extract .bz2 using x and j flag)

3- پاکسازی فایل ها

شما می توانید فایل هایتان را با استفاده از دستورات sed ، tr و awk پاکسازی کنید (بسیار سریع تر از نوشتن یک اسکریپت).

دستور  tr تمام حروف الفبا ، اعداد و کاراکتر ها ی خاص را از فایل های ورودی پاکسازی میکند .

tr -c "A-Za-z0-9@-._ \n" " " < input.txt > output.txt

دستور زیر حروف بزرگ را به کوچک ترجمه خواهد کرد

tr '[:upper:]' '[:lower:]' < rawfiltered.txt > data.txt

دستور sed برای جایگزینی یک رشته یا کلمه در فایل به کار می رود .

sed 's/unix/linux/g' myfile.txt

دستور زیر خطوط خالی را در فایل حذف می کند .

sed '/^$/d' input.txt > output.txt

همچنین می توانید از sort استفاده کنید تا محتویات را در یک فایل مرتب کنید، این دستور  می تواند با sed هم ادغام شود.

sort data.txt > output.txt

4-امنیت

یکی دیگر از انواع دستورات لینوکس netstat است. این دستور برای بررسی اتصالات آی پی های یکسان از پورت 80  برای چندین حمله ی دیداس می باشد .

netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
 netstat -apn | grep ":80"

و هم چنین کد زیر  فرایند های http را بررسی می کند .

netstat -n | grep :80 |wc -l

5-ارور های هارد درایو

با استفاده از smartctl میتوانید مشکلات هارد درایو را جستجو کنید .

$ smartctl -q errorsonly -H -l selftest -l error /dev/sda
 Warning: ATA error count 17 inconsistent with error log pointer 1
 ATA Error Count: 17 (device log contains only the most recent five errors)
 Error 17 occurred at disk power-on lifetime: 47355 hours (1973 days + 3 hours)
 Error 16 occurred at disk power-on lifetime: 47355 hours (1973 days + 3 hours)
 Error 15 occurred at disk power-on lifetime: 47355 hours (1973 days + 3 hours)
 Error 14 occurred at disk power-on lifetime: 47355 hours (1973 days + 3 hours)
 Error 13 occurred at disk power-on lifetime: 47355 hours (1973 days + 3 hours)

هم چنین می توانید از iostat برای مانیتور کردن کارایی هارد محلی و دیسک های راه دور استفاده کنید

# iostat
 Linux 2.6.18-308.1.1.el5 (server1.example.com)     02/24/2016
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
 2.72    0.05    1.11    0.22    0.00   95.89
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              10.71       390.59       208.68  301731339  161206205
sda1              0.00         0.27         0.00     210670          4
sda2              4.81       112.90        94.88   87211079   73297681
sda3              2.23        67.60        37.70   52217183   29124792
sda4              0.00         0.00         0.00        134          0
sda5              1.02        29.13        42.69   22504042   32978328
sda6              0.04         5.43         0.00    4195402       1200
sda7              2.45       175.25        29.83  135379849   23041280
sda8              0.16         0.02         3.58      12282    2762920

6- بکاپ و ریستور کردن در سی پنل

با استفاده از دستور زیر می توانید از یک اکانت در سی پنل بکاپ گیری کنید یا یک بکاپ را ریستور کنید . اینگونه دستورات لینوکس باعث صرفه جویی در زمان می شوند.

/scripts/pkgacct username
 /scripts/restoracct username

7-انتقال فایل راه دور

با استفاده از دستور زیر می توانید از یک هاست به هاست دیگری اطلاعات را منتقل کنید .

scp /home/file.tar.gz user@host.example.com:21Feb16/

8-بارگزاری های سرور

از جمله دستورات لینوکس برای بررسی لود یوزرها ، میزان استفاده از سی پی یو و لود سرور میتوانید از دستورات زیر استفاده کنید .

$ uptime
 19:07  up 29 mins, 2 users, load averages: 0.48 0.59 0.55
$ w
18:27  up  2:08, 2 users, load averages: 1.25 1.53 1.44
 USER     TTY      FROM              LOGIN@  IDLE WHAT
 prabhubalakrishnan console  -                16:20    2:06 -
 prabhubalakrishnan s000     -                17:21       - w
$ iostat
disk0       cpu     load average
 KB/t tps  MB/s  us sy id   1m   5m   15m
 51.45  12  0.60   4  1 94  1.06 1.42 1.40

 

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

$ ps aux | more

9-فضای خالی دیسک

ابتدا با دستور زیر فضای دیسک را چک کنید. این یکی از پرکاربردترین دستورات لینوکس است.

# df -h
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda5             9.7G  533M  8.7G   6% /
 /dev/sda8             996M   34M  911M   4% /tmp
 /dev/sda7             194G  4.2G  180G   3% /home
 /dev/sda3             9.7G  2.1G  7.2G  23% /var
 /dev/sda2             9.7G  6.0G  3.2G  66% /usr
 /dev/sda1              99M   17M   77M  18% /boot
 tmpfs                1014M     0 1014M   0% /dev/shm

سپس فایل های بزرگتر از 100 mb  را جستجو کنید.

find /var/www/ -size +100000000c | more

10-تنظیمات DNS

با استفاده از دستور زیر میتوانید تنظیمات صحیح DNS را بررسی کنید .(A و AAA ipv6)

dig example.com
 host -t  A example.com (ipv4)
 host -t   AAAA example.com (ipv6)

11- ردیابی مسیر شبکه

Traceroute یک ابزار بسیار مفید برای رفع مشکلات مسیر شبکه است. این ابزار مسیر انتقال را در سراسر شبکه ها برای قاره های مختلف نشان می دهد.

$ traceroute example.com
traceroute to example.com (93.184.216.34), 64 hops max, 52 byte packets
 1  192.168.0.1 (192.168.0.1)  1.267 ms  1.601 ms  1.009 ms
 2  10.23.240.1 (10.23.240.1)  7.628 ms  15.619 ms  11.351 ms
 3  113.193.5.169 (113.193.5.169)  9.953 ms  19.261 ms  8.973 ms
 4  59.163.111.81.static-chennai.vsnl.net.in (59.163.111.81)  9.017 ms  13.421 ms  9.451 ms
 5  172.25.81.134 (172.25.81.134)  56.100 ms  59.540 ms
 172.31.29.245 (172.31.29.245)  52.476 ms
 6  ix-0-100.tcore1.mlv-mumbai.as6453.net (180.87.38.5)  69.474 ms  67.030 ms  47.591 ms
 7  if-9-5.tcore1.wyn-marseille.as6453.net (80.231.217.17)  157.941 ms  153.891 ms  159.319 ms
 8  if-8-1600.tcore1.pye-paris.as6453.net (80.231.217.6)  164.418 ms  170.447 ms  159.127 ms
 9  if-2-2.tcore1.pvu-paris.as6453.net (80.231.154.17)  183.550 ms  158.083 ms  166.330 ms
 10  ae-7.r04.parsfr01.fr.bb.gin.ntt.net (129.250.8.1)  165.362 ms  171.770 ms  167.023 ms
 11  ae-8.r23.londen03.uk.bb.gin.ntt.net (129.250.6.206)  162.218 ms  164.905 ms  165.397 ms
 12  ae-0.r22.londen03.uk.bb.gin.ntt.net (129.250.4.85)  168.716 ms  176.386 ms  173.211 ms
 13  ae-5.r24.nycmny01.us.bb.gin.ntt.net (129.250.2.18)  262.749 ms  305.414 ms  307.083 ms
 14  ae-1.r07.nycmny01.us.bb.gin.ntt.net (129.250.3.181)  307.158 ms  306.288 ms  307.215 ms
 15  ae-0.edgecast.nycmny01.us.bb.gin.ntt.net (129.250.196.174)  308.608 ms  302.816 ms  307.224 ms
 16  93.184.216.34 (93.184.216.34)  306.972 ms  243.375 ms  261.559 ms

12-Bootable drive

شما می توانید یک درایو قابل بوت USB از ISO دلخواهتان  را با یک تک دستور در ترمینال ایجاد کنید.

$ dd if=/home/user/Downloads/ubuntu.iso of=/dev/sdb1 bs=512M; sync

13-MySQL database

شما می توانید با پایگاه داده های MySQL با استفاده از خط فرمان به طور مستقیم ارتباط برقرار کنید و  آنها را مدیریت کنید، روشی ساده تر از این برای مدیریت پایگاه داده ها وجود ندارد . شما به phpmyadmin نیاز ندارید .:)

mysql -u root -p
create database mydatabase;
create user 'myuser'@'localhost' identified by 'password';
grant all previleges on * . * to 'newuser'@'localhost';
Flush previleges

این روش در شرایطی که میخواهید بدون هیچ نرم افزار اضافی و با سرعت بالا ، CMS نصب کنید یا اینکه یک دیتابیس بسازید .

14-Mass Deletion یا حذف جمعی

برای حذف تمام فایل ها میتوانید از r(recursive) و f (force) استفاده کنید ، پس دستور rf.

rm -Rf /home/temp *.tar.gz

لطفا از این دستور با دقت استفاده کنید زیرا تمام فایل ها و پوشه ها را بدون هیچگونه هشداری حذف می کند .

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

extundelete utility for ext3/ext4 file systems

$ extundelete /dev/sda4 --restore-all

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

15- نصب ابزار های توسعه

قبل از اینکه هر پکیج یا نرم افزاری را کامپایل کنید ، باید اطمینان حاصل کنید که سرورتان با GNU c/c++  و کتابخانه های توسعه ای  آماده شده باشد .

yum groupinstall "Development Tools"

16- تاریخچه ی دستورات

گاهی اوقات شما میخواهید تاریخچه ی دستوراتتان را مشاهده کنید . برای اینکار تنها یک دستور ساده نیاز است .

$ history
    3   sed -f <(sed 's/.*/s|\\b&\\b||g/' stopwords.txt) rawfiltered.txt > data.txt
    4   sed -f -i  <(sed 's/.*/s|\\b&\\b||g/' stopwords.txt) rawfiltered.txt > data.txt
    5   sed -fi  <(sed 's/.*/s|\\b&\\b||g/' stopwords.txt) rawfiltered.txt > data.txt
    6   sed -i  <(sed 's/.*/s|\\b&\\b||g/' stopwords.txt) rawfiltered.txt > data.txt
    7  tr -s '[:blank:]' '\n' < rawfiltered.txt | fgrep -vwf stopwords.txt > data.txt 
    8  sed -e -f rawfiltered.txt stopwords.txt > data.txt
    9  sed -ef rawfiltered.txt stopwords.txt > data.txt

17-Dropbox

شما میتوانید در ترمینال لینوکس dropbox  را نصب کنید .

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
 ~/.dropbox-dist/dropboxd

18-اسکرین شات گرفتن از سرور

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

./screenshot.sh urls.txt

19- تبدیل تصویر

شما می توانید تغییر اندازه، تبدیل تصاویر به فرمت های مختلف با استفاده از ابزار تبدیل imagemagick انجام دهید .  ویژگی های دیگر شامل blur، threshold، morphology و tonnes از جمله چیزهایی ست که با این ابزار انجام می شود .

convert rose.jpg -resize 50% rose.png
convert dragon.gif    -resize 64x64  resize_dragon.gif

هم چنین با استفاده از دستور زیر میتوانید تصاویر را به pdf تبدیل کنید .

convert -density 300 -trim example.pdf -quality 100 pdf.jpg

با استفاده از دستور زیر میتوان دسته ای از تصاویر را به PDF تبئیل کنید .

 convert *.JPG  output.pdf

20-Cron Jobs

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

فایل cron  را ویرایش کرده و دستور زیر را جایگزاری کنید :

$crontab -e

فرمت به شکل زیر است :

a b c d e /home/backup.sh

a: Minute (0-59)

b: Hours (0-23)

c: Day (0-31)

d: Month (0-12)

e: Day of the week(0-7 starts Sunday as 0)

* denotes every day

اسکریپت زیر بصورت روزانه ساعت  12:00 AM آغاز می شود

 0 24 * * * /scripts/shell.py

اسکریپت زیر هر یکشنبه راس ساعت 5 اغاز می شود

 0 5 * * 0 /scripts/backups.php

21-تبدیل داکیومنت به پی دی اف

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

sudo apt-get install wv tetex-extra ghostscript  
wvPDF test.doc test.pdf

یا با استفاده از ابزار cups  pdf میتوانید اینکار را انجام دهید 

sudo apt-get install cups-pdf
 oowriter -pt pdf your_word_file.doc

امیدواریم از آموزش دستورات لینوکس راضی بوده باشید. موفق باشید.