Ctrl-C pppd गैर-अलग सत्र के साथ काम नहीं करता है


12

मेरे पास एक मिनी 2440 एआरएम बोर्ड है, और मैंने इसका उपयोग करते हुए एक बेस डेबियन 6.0 सिस्टम लगाया है multistrap

मैंने tmuxकई प्रक्रियाओं को चलाने के लिए उपयोग किया है जिसमें से फ़र्नीचर विंडो में है /etc/rc.local। मैं इसके पोर्ट gettyपर चलने के लिए इसके सीरियल पोर्ट और इनटैब एंट्री का उपयोग कर बोर्ड से जुड़ता हूं । मैं picocomधारावाहिक संचारक के रूप में उपयोग करता हूं ।

जब रूट लॉग होता है, तो ~/.bashrcउसे पहले से चल रहे tmux सर्वर से जोड़ देता है, और प्रक्रियाओं पर आसानी से नजर रखी जा सकती है। वास्तविक कमांड है exec tmux attach-session -t "main"। tmux डिफ़ॉल्ट कॉन्फिग से चलता है।

सब कुछ काम करता है, प्रक्रियाओं में से एक को छोड़कर (चारों ओर एक शेल स्क्रिप्ट pppd) Ctrlcटर्मिनल से प्राप्त नहीं होता है, जबकि अन्य प्रक्रियाएं करते हैं। भी Ctrl\काम करता है। भी kill -INT <pppd_pid>काम करता है, लेकिन kill -INT <shellscript_pid>नहीं करता है।

मुझे वास्तव Ctrlcमें काम करने की जरूरत है। इस सेटअप में क्या गलत है?

संपादित करें: यहां stty -aशैल स्क्रिप्ट का आउटपुट है , ठीक पहले pppd:

speed 38400 baud; rows 23; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

चूंकि यह सिर्फ pppdप्रक्रिया है जिसमें यह मुद्दा है, मुझे लगता है कि इसके या इसके कॉन्फ़िगरेशन के साथ कुछ करना है, लेकिन जब मैं pppdtmux के बाहर चलाता हूं , तो Ctrl-C काम करता है। विकल्प के pppdसाथ चलता nodetachहै, इसलिए यह टर्मिनल अग्रभूमि में रहता है।

मैंने उसी परिणाम के साथ अपनी देव मशीन (डेबियन 6.0 पर amd64) पर भी इसका परीक्षण किया।


6
करता है stty -aदिखाने के intr = ^C? यदि नहीं, तो intrसेटिंग क्या है ? (नोट: stty -a | grep intrयह काम नहीं करेगा, क्योंकि यह sttyआपके tty के बजाय एक पाइप को लिखता है।) क्या Ctrl-V Ctrl-C इको है ^C? यदि नहीं, तो क्या प्रतिध्वनित होता है?
कीथ थॉम्पसन

@KeithThompson Ctrl-V प्रिंट करता है ^और Ctrl-C इसमें एक जोड़ता है C
ज़ादेह

7
यह बहुत स्पष्ट लगता है, लेकिन क्या trapशेल स्क्रिप्ट में एक कमांड है?
कीथ थॉम्पसन

1
pppdइसमें यह नहीं कहा गया है कि इसका अंतर्निहित शेल एक प्रत्यक्ष हस्ताक्षर के साथ क्या करने का फैसला करता है। एक छोटे से शेल स्क्रिप्ट को लिखने की कोशिश करें जो आक्रमण / बिन / नींद 600 करता है और शेल प्रक्रिया को एक SIGINT भेजता है, आपको एक ही बात दिखाई देगी।
एंड्रयू बी

2
मुझे अच्छी तरह से tmux का पता नहीं है, लेकिन मुझे संदेह है कि pppd को पता चल गया है कि tmux के नीचे चलने के बावजूद उसके पास टर्मिनल नहीं है और फिर INT संकेतों को अनदेखा करता है। Pppd का एक ट्रेस, जबकि यह शुरू किया गया है, साथ ही जब tmux पहली बार "डिटेक्ट किया गया" है, तो शायद बता रहा होगा।
जोहान

जवाबों:


2

क्या आपने कभी गिविन जीएनयू स्क्रीन के बारे में सोचा है? बहुत ईमानदार होने के लिए मैं tmux के साथ बहुत अधिक अनुभव करता हूं, लेकिन स्क्रीन ने हमेशा अच्छा काम किया।


स्क्रीन सेक्सी और शानदार है। आपके लिए एक +1।
जड़

0

पता चला कि यह उस विशेष संस्करण में एक बग pppdथा जिसका उपयोग डिस्ट्रो में किया जा रहा था। मैंने जाँच की और पिछले और बाद के संस्करणों में pppdयह समस्या नहीं है। इसके अलावा समस्या इस आर्च और प्लेटफॉर्म या के लिए विशिष्ट नहीं है tmux। यदि pppdकिसी शेल स्क्रिप्ट के अंदर चलाया जा रहा है, तो वह Ctrl-C को हैंडल नहीं करता है, जबकि शेल के बाहर, उसे कोई समस्या नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.