Ctrl-C не працює з нероз'єднаним сеансом pppd


12

У мене є Mini2440 ARM Board, і я поставив на неї базову систему Debian 6.0 за допомогою multistrap.

Я використовував tmuxдля запуску декількох процесів у різних Windows /etc/rc.local. Я підключаюсь до плати, використовуючи її послідовний порт і запис inittab для запуску gettyцього порту. Я використовую picocomяк послідовний комунікатор.

Коли root входить у систему, ~/.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процес, який має цю проблему, я думаю, що це має щось pppdспільне з ним або його конфігурацією, але коли я запускаюсь поза tmux, Ctrl-C працює. pppdпрацює з nodetachопцією, тому він залишається на передньому плані терміналу.

Я також тестував його на своїй машині розробки (Debian 6.0 на amd64) з тими ж результатами.


6
Чи stty -aпоказує intr = ^C? Якщо ні, то яка intrнастройка? (Примітка: stty -a | grep intrне буде працювати, оскільки він змушує sttyзаписувати в трубу, а не на ваш tty.) Чи лунає Ctrl-V Ctrl-C ^C? Якщо ні, що це лунає?
Кіт Томпсон

@KeithThompson Ctrl-V друкує a, ^а Ctrl-C додає Cдо нього.
zaadeh

7
Це здається занадто очевидним, але чи є в trapскрипті оболонки команда?
Кіт Томпсон

1
pppdне має нічого сказати в тому, що основна оболонка вирішує робити з прямим SIGINT. Спробуйте написати крихітний скрипт оболонки, який викликає / bin / sleep 600 і надішляє процес оболонки SIGINT, ви побачите абсолютно те саме.
Андрій Б

2
Я не знаю tmux досить добре, але я підозрюю, що pppd виявляє, що він не має терміналу, незважаючи на запуск під tmux, а потім ігнорує сигнали INT. слід, мабуть, вказуватиме слід pppd під час його запуску, а також коли tmux вперше "від'єднано".
Йоган

Відповіді:


2

Ви ніколи не замислювалися про те, щоб спробувати GINU-екран GNU? Якщо бути дуже чесним, я не маю великого досвіду роботи з tmux, але екран завжди робив цю роботу добре.


Екран сексуальний і фантастичний. +1 для вас.
корінь

0

Виявилося, що це помилка в конкретній версії pppd, що використовується в дистрибутиві. Я перевірив, і попередні та пізніші версії pppdне мають цієї проблеми. Також проблема не є специфічною для цієї арки та платформи або tmux. Якщо pppdвін запускається всередині сценарію оболонки, він не обробляє Ctrl-C, тоді як зовні оболонки це не має проблем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.