J'ai une carte Mini2440 ARM, et j'ai mis un système de base Debian 6.0 dessus en utilisant multistrap
.
J'ai utilisé tmux
pour exécuter plusieurs processus dans des fenêtres différentes de /etc/rc.local
. Je me connecte à la carte en utilisant son port série et une entrée inittab pour fonctionner getty
sur ce port. J'utilise picocom
comme communicateur série.
Lorsque root se connecte, ~/.bashrc
le connecte au serveur tmux déjà en cours d'exécution et les processus peuvent être facilement surveillés. la commande réelle est exec tmux attach-session -t "main"
. tmux fonctionne avec la configuration par défaut.
Tout fonctionne, sauf l'un des processus (un script shell autour pppd
) ne reçoit pas Ctrlcdu terminal, contrairement à d'autres processus. Fonctionne également Ctrl\. fonctionne également kill -INT <pppd_pid>
, mais kill -INT <shellscript_pid>
ne fonctionne pas.
J'ai vraiment besoin Ctrlcde travailler. Quel est le problème avec cette configuration?
Edit: voici la sortie de stty -a
dans le script shell, juste avant 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
comme c'est juste un pppd
processus qui a ce problème, je pense que cela a quelque chose à voir avec lui ou sa configuration, mais quand je cours en pppd
dehors de tmux, Ctrl-C fonctionne. pppd
fonctionne avec nodetach
option, il reste donc au premier plan du terminal.
Je l'ai également testé sur ma machine de développement (Debian 6.0 sur amd64) avec les mêmes résultats.
stty -a
- ce que ça se voitintr = ^C
? Sinon, quel est leintr
réglage? (Remarque:stty -a | grep intr
ne fonctionnera pas, car il faitstty
écrire sur un tube plutôt que sur votre tty.) Est-ce que Ctrl-V Ctrl-C fait écho^C
? Sinon, à quoi cela fait-il écho?^
et Ctrl-C lui ajoute unC
.trap
commande dans le script shell?pppd
n'a rien à dire sur ce que son shell sous-jacent décide de faire avec un SIGINT direct. Essayez d'écrire un petit script shell qui invoque / bin / sleep 600 et envoyez au processus shell un SIGINT, vous verrez exactement la même chose.Réponses:
Avez-vous déjà pensé à givin GNU screen? Pour être très honnête, je n'ai pas beaucoup d'expérience avec tmux, mais l'écran a toujours fait le travail correctement.
la source
Il s'est avéré que c'était un bug dans la version particulière
pppd
qui était utilisée dans la distribution. J'ai vérifié et les versions précédentes et ultérieures depppd
n'ont pas ce problème. De plus, le problème n'est pas spécifique à cet arc et à cette plate-forme outmux
. Sipppd
est exécuté à l'intérieur d'un script shell, il ne gère pas Ctrl-C, tandis qu'à l'extérieur du shell, il n'a aucun problème.la source