زنگ.

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

من WMIC و لیست وظایف ابزار است، اما آنها در خانه در دسترس نیست / نسخه اصلی راه Windows.another است که استفاده از QProcess دستورات موجود در تقریبا در هر پنجره از دستگاه (برای کسانی که خدمات ترمینال - من فکر می کنم که تنها پیروزی XP بدون SP2، بنابراین Practialy هر پنجره ماشین):

@ پژواک خاموش: setlocal check_process اگر "٪ ~ 1" EQU "" اکو عبور فرایند نام به عنوان فرست برهان && خروج / B 1 :: بحث نخست این فرآیند شما می خواهید برای بررسی اگر در حال اجرا مجموعه Process_To_Check \u003d٪ ~ 1 :: qprocess می تواند تنها 12 علامت اول از فرایند در حال اجرا را نمایش دهد :: اگر ابزار دیگر از خط زیر استفاده می شود، می تواند حذف شود set process_to_check \u003d٪ press_to_check: ~ 0.12٪ QProcess * | پیدا کردن / من "٪ pressage_to_check٪"\u003e nul 2\u003e

QPROCESS فرمان به عنوان TaskList قوی نیست و تنها 12 کاراکتر از نام فرآیند را نشان می دهد، اما اگر TaskList در دسترس نباشد، باید مورد توجه قرار گیرد.

ساده تر برای استفاده از جایی که از نام آن استفاده می کند اگر فرآیند به عنوان یک استدلال استفاده شود (Suffix.exe در این مورد اجباری است، زمانی که نام فایل اجرایی را منتقل می کنید):

@ پژواک خاموش: setlocal check_process اگر "٪ ~ 1" EQU "" اکو عبور فرایند نام به عنوان فرست برهان && خروج / B 1 :: بحث نخست این فرآیند شما می خواهید برای بررسی اگر در حال اجرا :: exe را پسوند تنظیم اجباری " process_to_check \u003d٪ ~ 1 "QPROCESS"٪ fROR_TO_CHECK٪ "\u003e NUL 2\u003e & 1 && (ECHO Process٪ Process_TO_CHECK٪ در حال اجرا است) || (پروسه echo٪ pressage_to_check٪ در حال اجرا نیست) endlocal

تفاوت بین دو روش QPROCESS استفاده از QPROCESS * لیست تمام فرآیندها، در حالی که QProcess some.exe تنها فرآیندهای را فیلتر می کند کاربر فعلی.

استفاده از WMI Objects از طریق ویندوز اسکریپت میزبان EXE به جای WMIC نیز یک گزینه است. این را هم باید در تمام دستگاه های ویندوز شروع (به استثنای کسانی که در آن WSH خاموش است، اما این یک مورد نادر است). فایل یک خفاش از فایل است که لیست تمام فرآیندهایی که از طریق کلاس های WMI و می توان به جای QProcess در استفاده اسکریپت بالا (این ترکیبی JScript از / بت موس است و باید به عنوان پسوند .bat ذخیره شود):

f (@ y) \u003d\u003d (@ y) end / * jscript comment ** echo off ccript // e: jscript // nologo "٪ ~ f0" خروج / b ********** **** پایان JScript Comment ** / var winmgmts \u003d getObject (winmgmts: \\\\\\\\ \\\\ root \\\\ cimv2 ")؛ var colprocess \u003d winmgmts.execquery ("انتخاب * از win32_process")؛ فرآیندهای var \u003d enumerator جدید (COLPROCESS)؛ برای (؛ processes.tend ()؛ processes.movenext ()) (var process \u003d processes.item ()؛ WScript.echo (Process.ProcessID + "" + Process.Name)؛)

و اصلاحاتی که بررسی خواهد کرد اگر روند راه اندازی شود:

af (@ y) \u003d\u003d (@ y) end / * jscript comment ** echo off اگر "٪ ~ 1" Ex "" echo عبور نام فرآیند به عنوان Forst Argument && خروج / B 1 :: اولین استدلال است فرآیند مورد نظر شما باید بررسی کنید که آیا در حال اجرا تنظیمات process_to_check \u003d٪ ~ 1 CScript // E: JScript // Nologo "٪ ~ F0" | پیدا کردن / من "٪ press_to_check٪"\u003e nul 2\u003e & 1 && (echo process٪ frorct_to_check٪ در حال اجرا است) || (اکو روند٪ Process_To_Check٪ در حال اجرا نیست) خروج / B ************** END OF JScript از نظر ** / ور WinMGMTS \u003d GetObject ( "WinMgmts: \\\\\\\\ \\\\ ریشه \\\\ cimv2 ")؛ var colprocess \u003d winmgmts.execquery ("انتخاب * از win32_process")؛ فرآیندهای var \u003d enumerator جدید (COLPROCESS)؛ برای (؛ processes.tend (!)؛ processes.movenext ()) (VAR \u003d روند processes.Item ()؛ wscript.echo (process.processid + "" + process.name)؛)

دو گزینه را می توان در ماشین آلات استفاده می شود که هیچ کارها را ندارند.

تکنیک نهایی توسط MSHTA استفاده می شود. این کار بر روی تمام دستگاه های ویندوز با XP و بالاتر کار خواهد کرد و به تنظیمات بستگی ندارد. میزبان ویندوز اسکریپت چالش MSHTA می تواند کمی در عملکرد را کاهش دهد، اگر چه (دوباره باید در خفاش ذخیره شود):

if (X) \u003d\u003d (@ y) راend / * نظر JScript از ** @ پژواک خاموش setlocal اگر "٪ ~ 1" و تجهیزات "" اکو عبور فرایند نام به عنوان فرست برهان && خروج / B 1 :: اولین آرگومان فرآیند شما می خواهید بررسی کنید که آیا در حال اجرا تنظیم process_to_check \u003d٪ ~ 1 mshta "در مورد:"| مشاهده / من"٪ Process_To_Check٪ "\u003e NUL 2\u003e & 1 && (اکو روند٪ Process_To_Check٪ در حال اجرا است) || (اکو روند٪ Process_To_Check٪ در حال اجرا نیست) ENDLOCAL خروج / B ******** * ***** پایان JScript از نظر ** / ور FSO \u003d جدید ActiveXObject ( "scripting.fileSystemObject") Getstandardstream (1)؛ ور WinMgmts \u003d GetObject ( "WinMGMTS: \\\\\\\\ \\\\ \\\\ ریشه CIMV2 ")؛ var را colprocess \u003d winmgmts.execquery (" SELECT * FROM win32_process ")؛ فرآیندهای ور \u003d مصاحبه کننده جدید (colprocess)؛ برای (؛! processes.atend ()؛ processes.movenext ()) (فرآیند ور \u003d processes.Item ) fso.write (Process.ProcessID + "+ Process.Name +" \\ n ")؛) بستن ()؛

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

دف FindProcess: PS \u003d subprocess.popen ( "PS -EF | grep استفاده" + ProcessID، شل \u003d درست است، خروجی استاندارد \u003d subprocess.pipe) خروجی \u003d ps.stdout.read () ps.stdout.close () PS صبر کنید (). بازگشت خروجی DEF ISPROCESSRUNING (ProcessID): خروجی \u003d FindProcessid (ProcessID) ifput اگر Re.Search (ProcessID، خروجی) هیچ است: بازگشت واقعی دیگری: بازگشت کاذب 1،111 72،312 72،311 0 0: 00.00 TTYS000 0: 00.00 / bin / sh به -c ps -ef | grep 71676 1111 72314 72312 0 0: 00.00 TTYS000 0: 00.00 GREP 71676

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

هر گونه پیشنهاد؟ بابت هرگونه کمک سپاسگذارم.

11 راه حل های جمع آوری فرم وب برای "بررسی اینکه آیا روند در پایتون (در لینوکس / یونیکس) اجرا می شود"

تلاش كردن:

OS.KILL (PID، 0)

اگر فرآیند وجود نداشته باشد، باید موفق شوم (و هیچ کاری انجام ندهم)، یا یک استثناء (که می توانید آن را دریافت کنید) اگر فرآیند وجود نداشته باشد.

ساده ترین پاسخ، به نظر من (Albit، شاید کامل نیست)، تغییر آن است

ps -ef | گریپ

به منظور. واسه اینکه. برای اینکه:

ps -ef | گریپ | grep -v grep.

این لیست فرآیندهای را برای جستجو برای GREP، \u200b\u200bحاوی پروسه PID که شما در حال تلاش برای پیدا کردن آن هستید، نادیده می گیرید.

ظاهرا، پاسخ User9876 بسیار بیشتر "Pythonic" است.

این کمی Kludge است، اما در * nix شما می توانید OS.GETPGID (PID) یا OS.KILL (PID، SIG) را برای بررسی در دسترس بودن شناسه پردازش استفاده کنید.

IMPORT OS DEF IS_PROCESS_RUNNING (Process_ID): سعی کنید: Os.Kill (Process_ID، 0) RETUAL TRUE به جز OSError: بازگشت نادرست

ویرایش: لطفا توجه داشته باشید که OS.KILL در ویندوز کار می کند (با پایتون 2.7) و os.getpgid نخواهد بود . ولی نسخه ویندوز باعث می شود که TermateCrocess ()، که "فرآیند بدون قید و شرط را بدون قید و شرط"، بنابراین پیش بینی می کنم که این امر با خیال راحت اطلاعاتی را که نیاز دارید، بازگردانید، در حقیقت بدون کشتن فرایند اگر این وجود داشته باشد.

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

شما می توانید بررسی کنید که آیا یک پوشه / proc / وجود دارد.

\u003e\u003e\u003e import os.Path \u003e\u003e\u003e os.path.exists ("/ proc / 0") false \u003e\u003e\u003e os.path.exists ("/ proc / 12") درست است

این را ببینید: اگر فرایند هنوز در حال اجرا است، لینوکس را با پایتون بررسی کنید؟

اگر شما از یک ماژول خارجی استفاده نکنید، من Psutil را پیشنهاد می کنم. این یک پلت فرم متقابل و آسان برای استفاده از زیردریایی اسپین تنها برای جستجو برای روند فعلی است.

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

اگر SIG 0 باشد، سیگنال ارسال نشده است، اما بررسی خطا هنوز اجرا می شود؛ این می تواند مورد استفاده قرار گیرد برای بررسی حضور یک شناسه فرآیند یا شناسه گروه پردازش.

این باید به طور مناسب به روش های پایتون گسترش یابد.

من می دانم که قدیمی است، اما من از آن استفاده کردم و به نظر می رسد کار؛ شما می توانید به سرعت با تبدیل از نام فرآیند به شناسه فرآیند، به سرعت سازگار شوید:

امتحان کنید: اگر لن (OS.popen ( "PS -AEF | یا grep -i" MyProcess "| یا grep -v" grep استفاده "| awk به" (چاپ 3 $) "") خوانده () نوار () تقسیم (... " در \\ n "))\u003e 1: SystemExit بالا بردن (0) به جز استثنا، E: بالا بردن E

در ویندوز، گزینه دیگری این است که از tasklist.exe استفاده کنید:

Syntax: tasklist.exe / nh / fi "pid eq parcessid"

DEF ISPROCESSRUNING (ProcessID): PS \u003d Subprocess.popen (R "Tasklist.exe / NH / FI" PID EQ٪ D ""٪ (ProcessID)، شل \u003d درست است، خروجی استاندارد \u003d subprocess.pipe) خروجی \u003d ps.stdout.read () ps.stdout.close () ps.wait () اگر پردازش در خروجی: بازگشت بازگشت واقعی نادرست

شما می توانید WMI را در ویندوز استفاده کنید.

از Win32Com.Client واردات GetObject GetObject ("WinMGMTS:"). EXECQUERY ("SELECT * from Win32_PROCESS که در آن pROCESSID \u003d" + Str (PID)). تعداد

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

اگر نه getObject ( "WinMGMTS:"). Execquery ( "SELECT * FROM win32_process که در آن نام \u003d" dbgview.exe "") تعداد: subprocess.popen (R "C: \\ U \\ dbgview.exe"، شل \u003d غلط)

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

من اخیرا مجبور شدم فرآیندهای فعلی را لیست کنم و همینطور:

دف Check_PRECESS (فرآیند): دوباره واردات واردات فرزند ReturnProcess \u003d S \u003d کاذب Subprocess.popen ([ "PS"، "AX"]، خروجی استاندارد \u003d subprocess.pipe) برای x در s.stdout: اگر Re.Search (فرآیند، X ): RetretProcess \u003d TRUE اگر RETORPROCESS \u003d\u003d FALSE: چاپ "بدون اجرای فرآیند" اگر RETURTPROCESS \u003d\u003d TRUE: چاپ "فرآیند اجرای"

شما باید دو بار آن را پیدا کنید.

ps -ef | grep 71676 | SED "S / 71676 //" | grep 71676.

اگر آن را درست می کند، واقعا کار می کند!

من ابزار WMIC و Tasklist را دوست دارم، اما آنها در نسخه های خانگی / اصلی ویندوز موجود نیستند. راه دیگری این است که از دستور QPROCESS تقریبا تمام دستگاه های ویندوز استفاده کنید (برای کسانی که دارای خدمات ترمینال هستند - من فکر می کنم که فقط XP بدون SP2 را به دست آورم، به طور عملا همه ویندوز کامپیوتر):

@ پژواک خاموش: setlocal check_process اگر "٪ ~ 1" EQU "" اکو عبور فرایند نام به عنوان فرست برهان && خروج / B 1 :: بحث نخست این فرآیند شما می خواهید برای بررسی اگر در حال اجرا مجموعه Process_To_Check \u003d٪ ~ 1 :: qprocess می تواند تنها 12 علامت اول از فرایند در حال اجرا را نمایش دهد :: اگر ابزار دیگر از خط زیر استفاده می شود، می تواند حذف شود set process_to_check \u003d٪ press_to_check: ~ 0.12٪ QProcess * | پیدا کردن / من "٪ pressage_to_check٪"\u003e nul 2\u003e

QPROCESS فرمان به عنوان Tasklist قوی نیست و محدود به نمایش تنها 12 کاراکتر نام فرآیند است، اما باید در نظر گرفته شود که آیا TaskList در دسترس نیست.

استفاده ساده تر زمانی که از نام آن استفاده می کند اگر فرآیند به عنوان یک استدلال استفاده شود (Suffix.exe در این مورد اجباری است):

@ پژواک خاموش: setlocal check_process اگر "٪ ~ 1" EQU "" اکو عبور فرایند نام به عنوان فرست برهان && خروج / B 1 :: بحث نخست این فرآیند شما می خواهید برای بررسی اگر در حال اجرا :: exe را پسوند تنظیم اجباری " process_to_check \u003d٪ ~ 1 "QPROCESS"٪ fROR_TO_CHECK٪ "\u003e NUL 2\u003e & 1 && (ECHO Process٪ Process_TO_CHECK٪ در حال اجرا است) || (پروسه echo٪ pressage_to_check٪ در حال اجرا نیست) endlocal

تفاوت بین دو راه برای استفاده از QProcess این است که QPROCESS * تمام فرآیندهای را نمایش می دهد و QProcess Some.exe تنها فرآیندهای کاربر فعلی را فیلتر می کند.

با استفاده از اشیاء WMI از طریق میزبان اسکریپت Exe Windows به جای WMIC نیز یک گزینه است. همچنین باید بر روی تمام دستگاه های ویندوز (به استثنای کسانی که WSH را خاموش می کنند، اجرا شود، اما این یک مورد نادر است). در اینجا فایل BAT است که تمام فرآیندهای را از طریق کلاس های WMI لیست می کند و می تواند به جای QPROCESS در اسکریپت بالا استفاده شود (این یک ترکیبی JScript / BAT است و باید به عنوان .bat ذخیره شود):

f (@ y) \u003d\u003d (@ y) end / * jscript comment ** echo off ccript // e: jscript // nologo "٪ ~ f0" خروج / b ********** **** پایان JScript Comment ** / var winmgmts \u003d getObject (winmgmts: \\\\\\\\ \\\\ root \\\\ cimv2 ")؛ var colprocess \u003d winmgmts.execquery ("انتخاب * از win32_process")؛ فرآیندهای var \u003d enumerator جدید (COLPROCESS)؛ برای (؛ processes.tend ()؛ processes.movenext ()) (var process \u003d processes.item ()؛ WScript.echo (Process.ProcessID + "" + Process.Name)؛)

و اصلاحاتی که بررسی خواهد کرد که آیا روند راه اندازی شده است:

af (@ y) \u003d\u003d (@ y) end / * jscript comment ** echo off اگر "٪ ~ 1" Ex "" echo عبور نام فرآیند به عنوان Forst Argument && خروج / B 1 :: اولین استدلال است فرآیند مورد نظر شما باید بررسی کنید که آیا در حال اجرا تنظیمات process_to_check \u003d٪ ~ 1 CScript // E: JScript // Nologo "٪ ~ F0" | پیدا کردن / من "٪ press_to_check٪"\u003e nul 2\u003e & 1 && (echo process٪ frorct_to_check٪ در حال اجرا است) || (اکو روند٪ Process_To_Check٪ در حال اجرا نیست) خروج / B ************** END OF JScript از نظر ** / ور WinMGMTS \u003d GetObject ( "WinMgmts: \\\\\\\\ \\\\ ریشه \\\\ cimv2 ")؛ var colprocess \u003d winmgmts.execquery ("انتخاب * از win32_process")؛ فرآیندهای var \u003d enumerator جدید (COLPROCESS)؛ برای (؛ processes.tend (!)؛ processes.movenext ()) (VAR \u003d روند processes.Item ()؛ wscript.echo (process.processid + "" + process.name)؛)

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

تکنیک نهایی از MSHTA استفاده می کند. این کار بر روی تمام دستگاه های ویندوز با XP و بالاتر کار خواهد کرد و به آن وابسته نیست تنظیمات ویندوز اسکریپت تماس MSHTA ممکن است کمی عملکرد را کاهش دهد (دوباره شما نیاز به صرفه جویی به عنوان خفاش):

if (X) \u003d\u003d (@ y) راend / * نظر JScript از ** @ پژواک خاموش setlocal اگر "٪ ~ 1" و تجهیزات "" اکو عبور فرایند نام به عنوان فرست برهان && خروج / B 1 :: اولین آرگومان فرآیند شما می خواهید بررسی کنید که آیا در حال اجرا تنظیم process_to_check \u003d٪ ~ 1 mshta "در مورد:"| مشاهده / من"٪ Process_To_Check٪ "\u003e NUL 2\u003e & 1 && (اکو روند٪ Process_To_Check٪ در حال اجرا است) || (اکو روند٪ Process_To_Check٪ در حال اجرا نیست) ENDLOCAL خروج / B ******** * ***** پایان JScript از نظر ** / ور FSO \u003d جدید ActiveXObject ( "scripting.fileSystemObject") Getstandardstream (1)؛ ور WinMgmts \u003d GetObject ( "WinMGMTS: \\\\\\\\ \\\\ \\\\ ریشه CIMV2 ")؛ var را colprocess \u003d winmgmts.execquery (" SELECT * FROM win32_process ")؛ فرآیندهای ور \u003d مصاحبه کننده جدید (colprocess)؛ برای (؛! processes.atend ()؛ processes.movenext ()) (فرآیند ور \u003d processes.Item ) fso.write (Process.ProcessID + "+ Process.Name +" \\ n ")؛) بستن ()؛

زنگ.

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