Wie kann ich nach dem Drücken von Strg-Z zu Nano zurückkehren, wenn ich keine Shell-Eingabeaufforderung habe (in der Matlab-Sitzung)?

31

Ich verwende Nano in einer MATLAB-Sitzung, die in einem Bildschirmterminal (-x) ausgeführt wird. Ich habe versehentlich die Tastenkombination Strg-Z gedrückt und es wird sofort "nano" angezeigt. "Mit" fg "kehren Sie zu" nano "zurück, es wird jedoch keine Eingabeaufforderung angezeigt. Was auch immer ich tippe, es erscheint auf dem Bildschirm, aber es antwortet nichts. Wenn ich Strg-Z drücke, wird ^ Z nur auf dem Bildschirm gedruckt. Irgendwelche Ideen? Verwendung von 12.04.

user282315
quelle
Sie sollten eine Eingabeaufforderung erhalten, nachdem Sie Strg-Z gedrückt haben. Ich habe ... es scheint, dass dies in Ihrem Fall nicht der Fall ist. Wie genau laufen Sie nanoim Terminal?
Rmano
Ich habe gerade gemerkt, dass ich 12.04 nicht wirklich benutze. Tatsächlich renne ich nanoaus einer MATLAB-Sitzung heraus, was (offensichtlich) das Problem ist (es tut mir leid, dass ich es versäumt habe, das zu erwähnen; ich hatte vergessen, dass ich in MATLAB war). Beim Aufrufen eines jobsanderen Bildschirms werden keine Jobs aufgelistet, die abgerufen werden sollen.
user282315

Antworten:

11

In den Kommentaren sagt der Autor, dass er oder sie den nanoBefehl von Matlab aus ausführt und dass es nach dem Unterbrechen mit STRG-Z keinerlei Eingabeaufforderung gibt. Dies ist wahrscheinlich ein Fehler in Matlab (1), der es nicht zulassen sollte, dass ein STRG-Z in den Nano gelangt, wenn es nicht damit fertig wird ...

Das Problem ist, dass der Shell-Befehl fg(und bg, und jobs) nur mit direkten untergeordneten Elementen der Shell funktioniert. Sie können jedoch einen gestoppten Prozess von einer anderen Shell aus fortsetzen, obwohl dies nicht garantiert, dass der Status des Bildschirms korrekt verwaltet wird:

  1. Suchen Sie in einem anderen Terminalfenster den nanoProzess:

    % ps ugx | grep nano
    romano   10600  0.0  0.0  20784  1628 pts/11   T    16:52   0:00 nano prova
    romano   10653  0.0  0.0  18256   900 pts/11   S+   16:53   0:00 grep nano
    
  2. Beachten Sie, dass es gestoppt ist (Zustand T)

  3. Weiter geht es mit

    kill -CONT 10600 
    

... und hoffe es funktioniert (kann das Terminal stark durcheinander bringen). Sie können auch versuchen, eine

killall -CONT nano 

auf diese Weise wird das CONTSignal an alle "Nano" -Prozesse gesendet (sollte aber kein Problem sein).


Fußnoten:

(1) Ich habe es versucht mit octave: EDITOR=nano octaveund dann edit filein der Oktave. Durch Drücken von STRG-Z werden die Dinge ziemlich durcheinander gebracht. Vielleicht ist es also nicht Matlab, sondern eine merkwürdige Interaktion darüber, wer das TSTP-Signal empfängt und verwaltet.

Rmano
quelle
Super, das hat es geschafft. Dieses Problem hat mich schon eine Weile beschäftigt! Einen Fehler mit TheMathWorks protokollieren. Vielen Dank!
user282315
1
Ach, neuer Account, noch kein Ruf zum Upvoten.
user282315
54

Wenn dies der einzige Hintergrundprozess ist, der durch Eingeben %gefolgt wird, Returnsollten Sie zu nano zurückkehren.

Das heißt, fgsollte immer funktionieren. Selbst wenn Sie mehr als einen Job haben, sollte er Sie auf den neuesten zurückbringen.

Oli
quelle
5
imo, das ist die wirkliche antwort, es macht was der op fragt, öffne das geschlossene (strg + z) nano fenster wieder.
DonSeba
coole Tricks hier.
Pietrovismara
Das hilft mir auch.
Arefe
Dies sollte die richtige Antwort sein.
user2180794