কোন স্ক্রিন সেশনের মধ্যে কোন কমান্ড চলছে তা সন্ধান করুন


10

আমি প্রায়শই পর্দার মধ্যে চলমান কাজগুলি ত্যাগ করি যাতে আমি পরে সেগুলি পরীক্ষা করতে পারি, তবে কখনও কখনও স্ক্রিনের মধ্যে কোন কমান্ডটি চলছে তা খতিয়ে দেখা উচিত। এটি সাধারণত কোনও ধরণের পিএইচপি স্ক্রিপ্ট হয়

screen -d -m nice -n -10 php -f convertThread.php start=10000

কোন স্ক্রিনটি কোন কমান্ডটি চালাচ্ছে তা আমি রেকর্ড করি না, তবে প্রক্রিয়াটি না মেরে কোন আদেশটি এটির মধ্যে চালানো হয়েছিল তা যাচাই করে আপনি যে অগ্রগতি পেয়েছিলেন তা অনুভব করতে সক্ষম হতে চাই।

স্ক্রিন সহায়তা পৃষ্ঠাগুলিতে আমি এর জন্য কোনও বিকল্প দেখতে পাচ্ছি না।

উত্তর:


18

আমাকে সম্প্রতি এটি করতে হয়েছিল। স্ট্যাক ওভারফ্লোতে আমি কীভাবে স্ক্রিনে চলমান প্রক্রিয়ার পিআইডি সন্ধান করব তা উত্তর দিয়েছি । আপনার পিআইডি হয়ে গেলে আপনি 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}')

ও, চালাক! আমি এটা পছন্দ করি! যেহেতু এটি সরাসরি প্রশ্নের উত্তর দেয়, তাই আমি এই উত্তরটি গ্রহণ করব। আমি এটিকে সমর্থন করি! দুঃখিত @ ঘনিমা (: '
অস্টিন বুর্ক

7

screen -S <your-fancy-name>স্ক্রিন সেশনগুলি চালিত কমান্ড অনুসারে অর্থপূর্ণ নাম দেওয়ার জন্য কী ব্যবহার করবেন? নামগুলি তালিকাভুক্ত হবে screen -lsএবং এর মাধ্যমে একটি সেশন পুনরায় শুরু করতে ব্যবহৃত হবে screen -r <your-fancy-name>

যুক্ত করতে সম্পাদনা করুন:

যেহেতু অন্য দিন এটি আমার নজরে আনা হয়েছে। (আরও বেশি না হলে) tmuxহিসাবে কার্যকারিতার বেশ সমান সেট দেয় screenএবং আপনার প্রয়োজনগুলির সাথে মানানসই একটি বৈশিষ্ট্য নিয়ে আসে। এফএকিউ থেকে: "টিএমউक्स উইন্ডোটির নাম পাল্টানোর ক্রমগুলি ব্যবহার করে গ্রোক হ্যাক ছাড়াই চলমান অ্যাপ্লিকেশনটিতে স্বয়ংক্রিয়ভাবে নাম পরিবর্তন করে supports এটি ডিফল্টরূপেও সমর্থন করে supports"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.