Tengo una placa ARM Mini2440, y he puesto un sistema base Debian 6.0 usando multistrap.
Solía tmuxejecutar varios procesos en ventanas diferentes desde /etc/rc.local. Me conecto a la placa usando su puerto serie y una entrada inittab para ejecutar gettyen ese puerto. Yo uso picocomcomo comunicador en serie.
Cuando root inicia sesión, ~/.bashrclo 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 -aen 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 pppdproceso el que tiene este problema, creo que tiene algo que ver con él o su configuración, pero cuando ejecuto pppdfuera de tmux, Ctrl-C funciona. pppdse ejecuta con nodetachopció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.
^y Ctrl-C le agrega una C.
trapcomando en el script de shell?
pppdno 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.
stty -amostrarintr = ^C? Si no, ¿cuál es laintrconfiguración? (Nota:stty -a | grep intrno funcionará, ya que hace questtyescribir en una tubería en lugar de en su tty.) ¿Ctrl-V Ctrl-C hace eco^C? Si no, ¿a qué se hace eco?