У меня есть плата ARM Mini2440, и я установил на нее базовую систему Debian 6.0 multistrap
.
Я использовал tmux
для запуска нескольких процессов в разных окнах из /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) с теми же результатами.
stty -a
шоуintr = ^C
? Если нет, какиеintr
настройки? (Примечание:stty -a | grep intr
не будет работать, так как это делаетstty
запись в канал, а не в ваш tty.) Отвечает ли Ctrl-V Ctrl-C^C
? Если нет, что это эхо?^
а Ctrl-C добавляетC
к нему.trap
команда в сценарии оболочки?pppd
не имеет никакого отношения к тому, что его основная оболочка решает сделать с прямым SIGINT. Попробуйте написать крошечный сценарий оболочки, который вызывает / bin / sleep 600 и отправит процессу оболочки SIGINT, вы увидите точно такую же вещь.Ответы:
Вы когда-нибудь задумывались о том, чтобы попробовать экран givin GNU? Честно говоря, у меня нет большого опыта работы с tmux, но screen всегда справлялся со своей задачей.
источник
Оказалось, что это была ошибка в той версии
pppd
, которая использовалась в дистрибутиве. Я проверил и предыдущие и более поздние версииpppd
не имеют этой проблемы. Также проблема не является специфичной для этой арки и платформы илиtmux
. Еслиpppd
он запускается внутри сценария оболочки, он не обрабатывает Ctrl-C, в то время как вне оболочки он не имеет проблем.источник