আমাকে সম্প্রতি এটি করতে হয়েছিল। স্ট্যাক ওভারফ্লোতে আমি কীভাবে স্ক্রিনে চলমান প্রক্রিয়ার পিআইডি সন্ধান করব তা উত্তর দিয়েছি । আপনার পিআইডি হয়ে গেলে আপনি ps
কমান্ডটি পেতে পারেন । আপনার পরিস্থিতির সমাধানের জন্য কিছু অতিরিক্ত সামগ্রীর সাথে সেই উত্তরের সামগ্রীগুলি এখানে দেওয়া হয়েছে:
আপনি এখানে স্ক্রিন সেশনগুলির পিআইডি পেতে পারেন:
$ screen -ls
There are screens on:
1934.foo_Server (01/25/15 15:26:01) (Detached)
1876.foo_Webserver (01/25/15 15:25:37) (Detached)
1814.foo_Monitor (01/25/15 15:25:13) (Detached)
3 Sockets in /var/run/screen/S-ubuntu.
আমাদের ধরুন আপনি foo_Monitor
পর্দার সেশনে বাশ-এ চলমান প্রোগ্রামটির পিআইডি চান । এর PID, ব্যবহার করুন foo_Monitor
এর PID, পাওয়ার জন্য স্ক্রীনের অধিবেশন bash
পরিচিত PID, জন্য PPIDs (মূল PID,) অনুসন্ধান করেও চলমান অধিবেশন:
$ ps -el | grep 1814 | grep bash
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 1815 1814 0 80 0 - 5520 wait pts/1 00:00:00 bash
এখন bash
সেশনের পিআইডি পান :
$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
এখন আমরা সেই পিআইডি দিয়ে প্রক্রিয়াটি চাই । কমান্ডগুলি কেবল বাসা বাঁধে এবং এই বারটি ব্যাশ নয় এমন প্রক্রিয়াটি পেতে -v
পতাকাটি ব্যবহার করুন :grep bash
$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
কমান্ডটি সন্ধান করতে আমরা সেই পিআইডি ব্যবহার করতে পারি (দ্বিতীয় লাইনের শেষে দেখুন):
$ ps u -p 23869
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ? Sl Feb02 1147:09 /usr/lib/foo
সব একসাথে রাখুন:
$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')