নির্দিষ্ট সময়ের জন্য চলমান স্ট্রেস


9

নির্দিষ্ট সময়ের জন্য কোনও ব্যবহারকারী প্রক্রিয়াতে স্ট্রেস কীভাবে চালানো যায়, 1 মিনিট বলুন, ব্যবহারকারীর প্রক্রিয়াটি শেষ না করে এবং সিটিআরএল + সি ব্যবহার না করে?

আমি একটি ব্যবহারকারী প্রক্রিয়াটির জন্য স্বয়ংক্রিয়ভাবে স্ট্রে এক্সেকিউশনের স্ক্রিপ্ট তৈরি করতে চাই।

উত্তর:


14

সঙ্গে timeoutমধ্যে GNU coreutils, আপনি করতে পারেন:

  • প্রক্রিয়া আইডি পান
  • চালান timeout 60 strace -p PID

এখানে একটি উদাহরণ।

test.sh:

#!/bin/bash

while :; do
    echo "$$"
    sleep 100
done

চালাও এটা:

$ ./test.sh
27121

চালান straceসঙ্গে timeout:

% cuonglm at ~
% timeout 60 strace -p 27121
Process 27121 attached - interrupt to quit
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 27311
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, 0x7fff374b8598, WNOHANG, NULL) = -1 ECHILD (No child processes)
rt_sigreturn(0xffffffffffffffff)        = 0
rt_sigaction(SIGINT, {0x45c4d0, [], SA_RESTORER, 0x7fcdc10e05c0}, {0x443910, [], SA_RESTORER, 0x7fcdc10e05c0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
write(1, "27121\n", 6)                  = 6
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fcdc1a699d0) = 27328
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x443910, [], SA_RESTORER, 0x7fcdc10e05c0}, {0x45c4d0, [], SA_RESTORER, 0x7fcdc10e05c0}, 8) = 0
wait4(-1,

1 মিনিটের পরে:

....
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fcdc1a699d0) = 27328
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x443910, [], SA_RESTORER, 0x7fcdc10e05c0}, {0x45c4d0, [], SA_RESTORER, 0x7fcdc10e05c0}, 8) = 0
wait4(-1,  <unfinished ...>
Process 27121 detached
% cuonglm at ~

2

timeoutসর্বাধিক সাধারণ সমাধান বলে মনে হচ্ছে। কেবল টাইপ করুন timeout 60s commandএবং কমান্ডটি 60 সেকেন্ডের মধ্যে শেষ হবে। TERMপ্রোগ্রামটি ডিফল্টরূপে চলতে থাকলে এটি একটি প্রেরণ করবে । --signalবিকল্পটি ব্যবহার করে আপনি যে সিগন্যালটি পেতে চান তা নির্দিষ্ট করতে পারেন ।

সময়কালটি সেকেন্ড, মিনিট, ঘন্টা বা দিনগুলিতে সেট করা যেতে পারে, তাদের প্রত্যেকের কী ব্যবহৃত হবে তা নির্ধারণের জন্য একটি নির্দিষ্ট প্রত্যয় রয়েছে।

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