কীভাবে tmux সেশনটি শেষ করতে হয় এবং প্রক্রিয়াগুলি এটি তৈরি করে


13

আমি লক্ষ্য করেছি যে আমার একটি চলমান প্রক্রিয়া রয়েছে এবং আমি মনে করি এটি কারণ আমি টিএমাক্স ব্যবহার করে বাইবুতে প্রক্রিয়াটি শুরু করেছি।

ps aux | grep sidekiq
1000     13786  0.0  0.0   8108   900 pts/4    S+   11:27   0:00 grep sidekiq

আমার কাছে "3" নামে একটি টিএমউक्स সেশন রয়েছে। আপনি নীচে দেখতে পারেন:

$ byobu   

Byobu sessions...

  1. tmux: 3: 1 windows (created Wed Aug 28 10:57:54 2013) [229x84] (attached)
  2. tmux: daemon: 1 windows (created Thu Jul 11 12:59:09 2013) [127x83]
  3. tmux: juggernaut: 1 windows (created Thu Jul 11 12:54:08 2013) [80x23]

আমি সেই অধিবেশন থেকে বেরিয়ে আসতে চাই এবং সেই অধিবেশনটির দ্বারা নির্মিত সমস্ত চলমান প্রক্রিয়া শেষ করতে চাই।


আপনি কি 'পিএস-শেফ' এর আউটপুট আটকান? grep byobu 'এবং' PS -ef | গ্রেপ টিএমউক্স '?
ডাস্টিন কির্কল্যান্ড

উত্তর:


15
tmux kill-session [-t session_name]

ভার্চুয়াল টার্মিনালগুলির প্রক্রিয়াগুলিতে SIGHUP পাওয়া উচিত।


6
কিন্তু SIGHUP প্রক্রিয়াগুলিকে হত্যা করে না। এটি সাধারণত তাদের পুনরুক্তি করে।
আন্দ্রেয়া পাভনি

1
আপনি কোন প্রক্রিয়া সম্পর্কে কথা বলছেন তা নির্ভর করে। কিছু ডেমন প্রকৃতপক্ষে পুনর্নির্মাণের জন্য কনফিগারেশন ফাইলগুলি পুনরায় পড়ার জন্য সংকেত হিসাবে SIGHUP ব্যবহার করে তবে এগুলি সাধারণত প্রক্রিয়া গ্রুপ এবং নিয়ন্ত্রণকারী টার্মিনাল থেকে দূরে থাকে এবং তখন থেকে স্বাধীন বিবেচনা করতে হয়। ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলি সাধারণত সিগন্যালটি পরিচালনা না করার কারণে বা টার্মিনাল ধরণের হারানো ইন্টারেক্টিভ হওয়ার বিরুদ্ধে চলে যায় quit
পিটার্ফ

6

এটি আমাকেও বিরক্ত করছিল, সুতরাং আমি এটির জন্য একটি টিএমউক্স প্লাগইন লিখেছি। এটি নিখুঁত নয়, তবে সহজেই tmux প্রস্থান করার আগে বেশিরভাগ ধরণের প্রক্রিয়াগুলি কীভাবে নিরাপদভাবে হত্যা করা যায় তা জানার জন্য বাড়ানো যেতে পারে: tmux-Safekill


4

হতে পারে এটি সর্বাধিক মার্জিত সমাধান নয়, তবে আপনি যা চেয়েছিলেন তা করে:

tmux list-panes -s -F "#{pane_pid} #{pane_current_command}" | grep -v tmux | awk '{print $1}' | xargs kill -9

আপনি যদি এটি আপনার টিএমএক্স-সেশনের মধ্যে থেকে চালনা করেন তবে এটি প্রবর্তিত সমস্ত প্রক্রিয়াটিকে মেরে ফেলবে এবং এরপরে আপনি tmux ছাড়তে পারেন exit


1

(অস্বীকৃতি: আমি শিক্ষানবিশ) এই স্ক্রিপ্টটি সমস্ত ফলক / উইন্ডোতে থাকা some_sessionএবং প্রস্থান করে:

#!/usr/bin/env bash

session="some_name"

echo about to kill ${session}, ok?
read -n 1 -s -r -p "Press key..."
echo 

sessiontest=`tmux ls | grep ${session}`

if [ "${sessiontest}" == "" ]; 
then
        echo no running session ${session}
else        
        for name in `tmux list-windows -F '#{window_name}' -t ${session}` ; do 

        tmux select-window -n

        for pane in `tmux list-panes -F '#{pane_id}' -t ${session}` ; do 
        tmux send-keys -t $pane C-c
        # send SIGINT to all panes in selected window
        echo ${session}:$name.${pane//%}
        done

        for pane in `tmux list-panes -F '#{pane_pid}' -t ${session}` ; do 
        kill -TERM ${pane}
        # terminate pane
        done

        done 
fi

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