Tmux सेशन को कैसे समाप्त करें और इसे कैसे संसाधित करें


13

मैंने देखा कि मेरे पास एक चलने वाली प्रक्रिया है और मुझे लगता है कि यह इसलिए है क्योंकि मैंने बायोबू में प्रक्रिया को इनिशियलाइज़ किया है जो tmux का उपयोग कर रहा है।

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

मेरे पास "3" नामक एक tmux सत्र है। जैसा कि आप नीचे देख सकते हैं:

$ 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]

मैं उस सत्र से बाहर निकलना चाहूंगा और उस सत्र द्वारा बनाई गई सभी प्रक्रियाओं को समाप्त कर दूंगा।


क्या आप 'ps -ef' का आउटपुट पेस्ट कर सकते हैं? grep byobu 'और' ps -ef | grep tmux '?
डस्टिन किर्कलैंड

जवाबों:


15
tmux kill-session [-t session_name]

वर्चुअल टर्मिनल में प्रक्रियाओं को SIGHUP प्राप्त करना चाहिए।


6
लेकिन SIGHUP प्रक्रियाओं को नहीं मारता है। यह आमतौर पर उन्हें जवाब देता है।
एंड्रिया पावोनी

1
इस बात पर निर्भर करता है कि आप किन प्रक्रियाओं के बारे में बात कर रहे हैं। कुछ डेमॉन वास्तव में SIGHUP का उपयोग रीइंन्स्ट्रिक्ट करने के लिए एक सिग्नल के रूप में करते हैं (कॉन्फ़िगरेशन फ़ाइलों को फिर से पढ़ें), लेकिन ये आमतौर पर प्रक्रिया समूह और नियंत्रण टर्मिनल से दूर हो जाते हैं और तब से स्वतंत्र माना जाता है। इंटरएक्टिव एप्लिकेशन आमतौर पर सिग्नल से निपटने के कारण या तो टर्मिनल के खो जाने के कारण या तो इंटरएक्टिव होने के खिलाफ जाते हैं।
पेट

6

यह मुझे परेशान कर रहा था, इसलिए मैंने इसके लिए tmux plugin लिखा। यह सही नहीं है, लेकिन आसानी से यह जानने के लिए बढ़ाया जा सकता है कि tmux से बाहर निकलने से पहले अधिकांश प्रकार की प्रक्रियाओं को सुरक्षित रूप से कैसे मारना है: tmux-safalill


4

शायद यह सबसे सुरुचिपूर्ण समाधान नहीं है, लेकिन जो आपने पूछा है:

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

यदि आप इसे अपने tmux-session के भीतर से चलाते हैं, तो यह उन सभी प्रक्रियाओं को मार देगा, जो इसे जन्म देती हैं, और फिर आप tuxux को छोड़ सकते हैं 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.