Tmux - अगर सर्वर है तो चेक करें


5

क्या कोई ज्ञात- tmuxविचलन है, जैसे tmux has-session -t <session>, लेकिन यह जांचने के लिए कि क्या tmux सर्वर वर्तमान में चल रहा है? ऑटोमेशन-स्क्रिप्ट लिखते समय यह आसान होगा। जब एक सत्र के साथ मौजूद है की जाँच करते समय

$ tmux has-session -t SomeSession

उपयोगकर्ता है, जब तक कि tmux सर्वर पहले से ही चल रहा है, त्रुटि के साथ प्रस्तुत किया गया है

failed to connect to server

इसलिए, मैं पहले से जांचना चाहता हूं कि क्या सर्वर वर्तमान में चल रहा है। यदि यह है, सत्र एट cetera के लिए जाँच करें। वहाँ कोई रास्ता नहीं है यह / देव / नल के लिए पाइपिंग के बिना चुप्पी?

जवाबों:



3
[[ -n $(pgrep tmux) ]] && echo true || echo false

यदि नाम में "tmux" के साथ एक प्रक्रिया चल रही है, तो यह सही प्रिंट होगा, अन्यथा यह गलत प्रिंट होगा।

यह काम करता है क्योंकि pgrep अपने नाम में "tmux" के साथ सभी प्रक्रिया पाता है और अपने PID को लौटाता है। "-N" मूल रूप से परीक्षण करता है कि क्या $ (pgrep tmux) का आउटपुट मौजूद है। यदि आउटपुट मौजूद है (उदाहरण के लिए "14204 23137"), तो परीक्षण सत्य का मूल्यांकन करता है। यदि आउटपुट मौजूद नहीं है (या अपरिभाषित नहीं है), तो परीक्षण गलत का मूल्यांकन करता है।

यदि आप लंबे समय से फार्म पसंद करते हैं:

if [[ -n $(pgrep tmux) ]]; then
  echo true
else
  echo false
fi

ध्यान दें कि bnjmn ने यहां क्या कहा है। अर्थात्, यह एक गलत सकारात्मक देगा यदि एक प्रक्रिया tmux के अलावा चल रही है, लेकिन इसके नाम में "tmux" है।


1

आप यह ps -e | grep -q programजांचने के लिए उपयोग कर सकते हैं कि प्रोग्राम programसामान्य तरीके से चल रहा है या नहीं।

एक शेल में एक उदाहरण के रूप में:

if $(ps -e | grep -q tmux); then echo "Tmux is running."; fi

इसे स्पष्ट करने में मेरी मदद करें। आप कमांड $(ps -e | grep -q tmux)को एक बूलियन के रूप में मान रहे हैं क्योंकि अधिकांश शेल कमांड रिटर्न true/ false, बाहर निकलने के कोड पर निर्भर करता है?
क्रिस्टा

@krystah हां बिल्कुल। grepएग्जिट कोड तभी सफल होता है जब कम से कम एक मैच पाया जाता है, और -qइसे दबाने से आउटपुट होता है।
लेवन्स

YMMV। इसके साथ समस्या यह है कि ऐसी अन्य प्रक्रियाएं हो सकती हैं जिनमें स्ट्रिंग programहोती है। उदाहरण के लिए, चल रही प्रक्रिया grep -q programवास्तव में एक मेल (कम से कम मेरे सिस्टम पर) या एक खुली पाठ फ़ाइल जैसे कारण होगी vim program-not-running.txt। तो, यह मेरे लिए बिल्कुल भी काम नहीं करता है क्योंकि यह हमेशा सही है अगर tmux चल रहा है या नहीं। सावधान ग्राहक।
bnjmn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.