فرمان exec در لينوکس
فرمان exec در لينوکس
فرمان exec:
هرگاه بخواهیم فرمانی را اجرا کنیم که جایگزین پروسس فعلی شود از این فرمان استفاده می کنیم.
مثلاً می خواهیم یک دایرکتوری به نام ali در مسیر جاری بسازیم و دیگر با Shell کاری نداریم.
در این صورت می زنیم:
exec mkdir ali $
حالا به جای پروسس Shell که در حال حاضر در حال اجرا است، ما می توانیم در آن، دستورات خودمان را وارد کنیم،
پروسسی را جایگزین خواهد کرد که دستور mkdir ali را اجرا کند.
دستور mkdir ali هم بعد از مدت کوتاهی خاتمه می یابد و در نتیجه هیچ اثری از پروسس Shell و همین طور پروسس mkdir ali بعد از مدتی نخواهد بود،
البته یک دایرکتوری با نام ali در صورتی که در مسیر مورد نظر حق ایجاد دایرکتوری را داشته باشید، ساخته خواهد شد.
بررسی سیگنال ها
یک برنامه وقتی در حافظه می آید باید آنقدر محکم باشد که از بین نرود.
یکی از علائمی که یک برنامه را متوقف می کند و یا می کُشد ترکیب کلیدهای Ctrl+C است.
(البته این کلیدها در محیط گرافیکال معادل cut هستند، ولی در خط فرمان معنای خاص خود را دارد)
که وقتی به یک نرم افزار می رسد آن را از بین می برد و می کُشد.
به همین دلیل است که وقتی Second pass را می خواهد Ctrl+C می زنیم که آن را می کشد و وارد می شود.
به Ctrl+C سیگنال می گوییم.
ما سیگنال های مختلفی داریم.
که سه تا عکس العمل می توانیم در مقابل هر سیگنال داشته باشیم:
- Action
- Ignore
- Default
دو سیگنال معروفی که داریم یکی Ctrl+C و دیگری Hang up (شماره 1) (ارتباط مخاطب با پروسس قطع شده) است.
حالا این فرمان را می زنیم تا ببینیم چند تا سیگنال داریم:
kill -l $
ما ۶۴ سیگنال داریم که لینوکس همه را Support می کند.
یکی از آنها Hang up است و Interrupt (شماره ۲) همان Ctrl+C است.
vim را نمی توان با Ctrl+C کشت. هر سیگنال یک کد دارد.
ما به وسیله trap یعنی فرمان trap برای سیگنال می توانیم تله بگذاریم و جلوی اجرا شدنش را بگیریم.
trap یکی از فرمان های داخلی Bash است
می توان به وسیله آن عکس العمل مناسب را در مقابل سیگنال اتخاذ نمود و توصیه می شود، دستور trap را در ابتدای Script بگذاریم.
با این فرمان (trap ‘cal’ 2) می گوییم هر وقت سیگنال شماره (۲) یعنی Ctrl+C آمد، تقویم را اجرا کن.
یعنی سیگنال ۲ را اجرا نمی کند و تقویم را اجرا می کند.
اگر فرمان زیر را وارد کنیم دوباره Ctrl+C کار می کند.
“trap ”2 $
حالا اگر دو تا کوتیشن را به هم بچسبانیم و بعد Ctrl+C را بزنیم می بینیم که اجرا نمی شود.
وقتی Space بینشان باشد یعنی Ctrl+C را بگیرد ولی هیچ کاری نکند
و اگر دو تا کوتیشن به هم چسبیده باشند یعنی Ignore می کند. در بین دو کوتیشن می توانیم هر چیزی بگذاریم.
مثلاً می توانیم echo salam یا اجرای یک نرم افزار را در نظر بگیریم.
اگر خواستیم دوباره به حالت پیش فرض برگردانیم، کافی است بین دو تا کوتیشن یک blank بگذاریم.
برای دیدن منوآل Signalها که خیلی هم مهم است این فرمان را بزنید:
man -a signal $
جهت شرکت در دوره های لینوکس و یونیکس بر روی این لینک کلیک نمایید
صفحات اجتماعی فراز نتورک جهت اطلاع رسانی های جدید در خدمت شماست.
فرمان exec در لينوکس – نویسنده: موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.