رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

تخته امتیازات

  1. D3F417

    D3F417

    کاربر رسمی


    • امتیاز

      3

    • ارسال ها

      51


  2. R3DN4X314

    R3DN4X314

    کد نویس


    • امتیاز

      2

    • ارسال ها

      217


  3. EvilEye

    EvilEye

    کاربر رسمی


    • امتیاز

      2

    • ارسال ها

      91


مطالب محبوب

در حال نمایش مطالب دارای بیشترین امتیاز در 07/08/2020 در همه بخش ها

  1. شما اصلا اشتباه میزنی ifcofig نیست ifconfig هست
    3 امتیاز
  2. یک راه دیگه برای جلوگیری از رلود شدن صفحه توسط دستور preventDefault زمانی که دکمه سابمیت داریم روی فرممون و دیگه با این روش مجبور نیستیم باتن قرار بدیم... $("#Form_Test").submit(function (e) { alert("Hello ... "); e.preventDefault(); });
    2 امتیاز
  3. بخش دوم - قسمت چهاردهم ساخت یک tmp directory : اپشن d- به دستور میگه به جای یک فایل , یک دایرکتوری ایجاد کنه $ cat test21 #!/bin/bash # estefade az yek temporary directory # tempdir=$(mktemp -d dir.XXXXXX) cd $tempdir tempfile1=$(mktemp temp.XXXXXX) tempfile2=$(mktemp temp.XXXXXX) # exec 7> $tempfile1 exec 8> $tempfile2 # echo "ersale data be directory: $tempdir" echo "yek teste data baraye $tempfile1" >&7 echo "yek teste data baraye $tempfile2" >&8 $ ./test21 ersale data be directory: dir.ouT8S8 $ ls -al total 72 drwxr-xr-x 3 rednaxela rednaxela 4096 Oct 17 22:20 ./ drwxr-xr-x 9 rednaxela rednaxela 4096 Oct 17 09:44 ../ drwx------ 2 rednaxela rednaxela 4096 Oct 17 22:20 dir.ouT8S8/ -rwxr--r-- 1 rednaxela rednaxela 338 Oct 17 22:20 test21* $ cd dir.ouT8S8 [dir.ouT8S8]$ ls -al total 16 drwx------ 2 rednaxela rednaxela 4096 Oct 17 22:20 ./ drwxr-xr-x 3 rednaxela rednaxela 4096 Oct 17 22:20 ../ -rw------- 1 rednaxela rednaxela 44 Oct 17 22:20 temp.N5F3O6 -rw------- 1 rednaxela rednaxela 44 Oct 17 22:20 temp.SQslb7 [dir.ouT8S8]$ cat temp.N5F3O6 yek teste data baraye temp.N5F3O6 [dir.ouT8S8]$ cat temp.SQslb7 yek teste data baraye temp.SQslb7 [dir.ouT8S8]$ بعضی وقتا لازمه خروجی رو , هم به مانیتور و هم به یک فایل برای لاگ برداری بفرستیم به جای اینکه خروجی رو دو بار ریدایرکت کنیم , میتونیم از دستور tee استفاده کنیم این دستور مثل یک T - connector برای پایپ ها عمل میکنه , که دیتا رو از STDIN به دو مقصد ارسال میکنه $ date | tee testfile Sun jun 19 18:56:21 EDT 2020 $ cat testfile Sun jun 19 18:56:21 EDT 2020 دیدید که خروجی دستور همزمان در مانیتور و فایل مورد نظر ذخیره شد نکته مهم استفاده از دستور در حالت پیشفرضه که باعث میشه دیتا ها روی هم نوشته بشن : $ who | tee testfile rednaxela pts/0 2020-5-17 18:41 (192.168.1.2) $ cat testfile rednaxela pts/0 2020-5-17 18:41 (192.168.1.2) اگه میخواید دیتای جدید به جای جایگزین شدن به فایل اضافه بشه از اپشن a- استفاده کنید $ date | tee -a testfile Sun jun 19 18:58:05 EDT 2020 $ cat testfile rednaxela pts/0 2020-5-17 18:41 (192.168.1.2) Sun jun 19 18:58:05 EDT 2020 استفاده از این تکنیک برای ذخیره اطلاعات و نمایش همزمان به کاربر : $ cat test22 #!/bin/bash # estefade az dastoore tee baraye logging # tempfile=test22 # echo "inja test shoroo mishe" | tee $tempfile echo "in khate dovome teste" | tee -a $tempfile echo "inja payane teste" | tee -a $tempfile $ ./test22 inja test shoroo mishe in khate dovome teste inja payane teste $ cat test22file inja test shoroo mishe in khate dovome teste inja payane teste سیگنال ها : لینوکس از سیگنال ها برای تعامل با پروسه های در حال اجرا استفاده میکنه مثل نمونه هایی که در قسمت های اولیه بخش اول مشاهده کردید , اعم از قطع , وصل و متوقف کردن پروسه ها شما میتونید با کد نویسی داخل اسکریپتتون بهش بگید با دریافت هر سیگنال چه کاری انجام بده , و به این ترتیب وقتی اسکریپت در حال اجراست با سیگنال های ارسالی کنترلش کنید بیشتر از 30 سیگنال برای تولید توسط سیستم و اپلیکیشن ها در لینوکس تعریف شده , که ما چند نمونه از پر استفاده ترین هاشون در اسکریپت نویسی رو در لیست زیر میبینیم : 1 SIGHUB معلق کردن پروسه 2 SIGINT قطع کردن پروسه 3 SIGQUIT متوقف کردن پروسه 9 SIGKILL حذف پروسه 15 SIGTERM ترمینیت کردن پروسه در صورت امکان 17 SIGSTOP استاپ کردن پروسه 18 SIGTSTP استاپ یا پاز کردن پروسه 19 SIGCONT ادامه دادن پروسه متوقف شده ایجاد سیگنال ها : شل بش به شما این امکان رو میده که سیگنال های ارسالی با استفاده از کلید های ترکیبی کیبورد رو تعریف کنید , این امکان مواقعی به کار میاد که مثلا میخواید یک اسکریپت در حال اجرا رو استاپ کنید کلید های ترکیبی Ctrl + C یک سیگنال از نوع SIGINT میسازن و سیگنال ساخته شده رو به پروسه در حال اجرای فعلی ارجاع میدن شما میتونید اینو روی یک دستور که در حالت نرمال زمان زیادی میگیره امتحان کنید, مثال : $ sleep 100 ^C $ یا مثلا کلید های ترکیبی Ctrl + Z به جای نمونه قبلی یرای توقف موقت پروسه نه قطع کردنش , که این کار با ارسال سیگنال SIGTSTP انجام میشه $ sleep 100 ^Z [1]+ Stopped sleep 100 $ به خروجی نمونه دوم که دقت کنید , قسمت اول یک عدد بین براکت هاست که جاب نامبر تعریف شده توسط شل هستش , که این اعداد منحصر به فرد هستند و برای دسترسی و کنترل پروسه کاربرد دارن , که به ترتیب از یک شروع میشن , مثلا اگه الان شما یک پروسه دیگه رو استاپ کنید شماره جاب 2 بهش تعلق میگیره در این حالت اگه شما بخواید شل رو ببندید به خاطر جلوگیری از منحل شدن فرایند پشت پرده شل بهتون هشدار میده در مورد عواقب بسته شدنش , مثال : $ sleep 100 ^Z [1]+ Stopped sleep 100 $ exit exit There are stopped jobs. $ همچنین شما میتونید قبل از خروج از دستور ps برای دیدن پروسه ها استفاده کنید : $ sleep 100 ^Z [1]+ Stopped sleep 100 $ $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 501 2431 2430 0 80 0 - 27118 wait pts/0 00:00:00 bash 0 T 501 2456 2431 0 80 0 - 25227 signal pts/0 00:00:00 sleep 0 R 501 2458 2431 0 80 0 - 27034 - pts/0 00:00:00 ps ستون S در خروجی دستور وضعیت پروسه رو اعلام میکنه اگه با این حال هنوز قصد خروج از شل رو دارید کافیه یک بار دیگه دستور exit رو تایپ کتید و یا الان که پروسه ایدی هارو میبینید با استفاده از دستور kill یک سیگنال SIGKILL به پروسه ای که قصد از بین بردنش رو دارید بفرستید : $ kill -9 2456 $ [1]+ Killed sleep 100 شما میتونید به جای اینکه سیگنال هارو مدیریت نشده ازاد بزارید تا روی اسکریپت در حال اجراتون تاثیر بزارن , قدرت اجراییشون رو ازشون بگیرید این کار با استفاده از دستور trap انجام میشه , و فرمت استفاده ازش به این صورته : trap commands signals به این صورت که شما در قسمت کامندز دستوراتی که میخواید شل اجرا کنه رو مینویسید , و با یک فاصله اسم و یا شماره ی سیگنال هایی که قصد دارید ترپ بشن رو تایپ میکنید , مثال زیرو ببینید : $ cat test1.sh #!/bin/bash # Teste signal trapping # trap "echo ' signale marboot be Ctrl-C trap shode '" SIGINT # echo "in ye teste script hastesh" # count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 1 count=$[ $count + 1 ] done # echo "in payane teste script hastesh" $ ./test1.sh in ye teste script hastesh Loop #1 Loop #2 Loop #3 Loop #4 Loop #5 ' signale marboot be Ctrl-C trap shode ' Loop #6 Loop #7 Loop #8 ' signale marboot be Ctrl-C trap shode ' Loop #9 Loop #10 in payane teste script hastesh در خروجی اسکریپت مثال بالا مشاهده کردید که قدرت اجرایی سیگنال مربوط به کلید های ترکیبی Ctrl + C که مرتبط با قطع روند پروسه محسوب میشه , ازش گرفته شده و هر بار که از این کلید های ترکیبی برای قطع پروسه استفاده شده , به جای عمل پیشفرض , دستور ما که اینجا یک دستور چاپ بوده اجرا شده و اسکریپت تا اخر به کارش ادامه داده پایان قسمت چهاردهم از بخش دوم
    2 امتیاز
×
×
  • ایجاد مورد جدید...