Tengo una placa ARM Mini2440, y he puesto un sistema base Debian 6.0 usando multistrap
.
Solía tmux
ejecutar varios procesos en ventanas diferentes desde /etc/rc.local
. Me conecto a la placa usando su puerto serie y una entrada inittab para ejecutar getty
en ese puerto. Yo uso picocom
como comunicador en serie.
Cuando root inicia sesión, ~/.bashrc
lo conecta al servidor tmux que ya se está ejecutando, y los procesos se pueden monitorear fácilmente. El comando real es exec tmux attach-session -t "main"
. tmux se ejecuta con la configuración predeterminada.
Todo funciona, excepto que uno de los procesos (un script de shell pppd
) no recibe Ctrlcdel terminal, mientras que otros procesos sí. También Ctrl\funciona También kill -INT <pppd_pid>
funciona, pero kill -INT <shellscript_pid>
no funciona.
Realmente necesito Ctrlctrabajar. ¿Qué hay de malo en esta configuración?
Editar: aquí está la salida de stty -a
en el script de shell, justo antes 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
Dado que es solo el pppd
proceso el que tiene este problema, creo que tiene algo que ver con él o su configuración, pero cuando ejecuto pppd
fuera de tmux, Ctrl-C funciona. pppd
se ejecuta con nodetach
opción, por lo que permanece en primer plano terminal.
También lo probé en mi máquina de desarrollo (Debian 6.0 en amd64) con los mismos resultados.
stty -a
mostrarintr = ^C
? Si no, ¿cuál es laintr
configuración? (Nota:stty -a | grep intr
no funcionará, ya que hace questty
escribir en una tubería en lugar de en su tty.) ¿Ctrl-V Ctrl-C hace eco^C
? Si no, ¿a qué se hace eco?^
y Ctrl-C le agrega unaC
.trap
comando en el script de shell?pppd
no tiene voz en lo que su shell subyacente decide hacer con un SIGINT directo. Intente escribir un pequeño script de shell que invoque / bin / sleep 600 y envíe al proceso de shell un SIGINT, verá exactamente lo mismo.Respuestas:
¿Alguna vez has pensado en probar la pantalla GNU GNU? Para ser honesto, no tengo mucha experiencia con tmux, pero la pantalla siempre hizo el trabajo bien.
fuente
Resultó que era un error en la versión particular
pppd
que se estaba usando en la distribución. Verifiqué y las versiones anteriores y posteriores depppd
no tienen este problema. Además, el problema no es específico de este arco y plataforma otmux
. Sipppd
se ejecuta dentro de un script de shell, no maneja Ctrl-C, mientras que fuera de shell, no tiene ningún problema.fuente