コマンドラインでセミコロンで区切られた複数のコマンドを実行しています。
cmd1; cmd2; cmd3
+を押すと、Ctrl現在実行中のコマンドだけでなく、すべてのコマンドが終了します。C
kartik@kartikpc:~/junk/exp$ ls
test1 test2
kartik@kartikpc:~/junk/exp$ cat; ls
cat is running
cat is running
^C
kartik@kartikpc:~/junk/exp
ただし、Ctrl+はZ現在のプロセスのみを一時停止し、次のプロセスを続行します。
kartik@kartikpc:~/junk/exp$ ls
test1 test2
kartik@kartikpc:~/junk/exp$ cat; ls
cat is running
cat is running
^Z
[1]+ Stopped cat
test1 test2
kartik@kartikpc:~/junk/exp$
Ctrl動作が分散される理由は何であり、+が+のように動作するようにCする方法はありますか?CtrlZ
私は実際に以下のようにtmuxセッションを介してサーバーを実行していますが、+をnode app.js; $bash
実行してサーバーを終了するとbashも終了します。シェルに戻りたいです。私が望む動作を達成するための他のオプションはありますか?CtrlC
【書き直す】
tcsh
Ctrl+CとCtrl+と同じ動作ですZ。 bashがCtrlonlt +と同じように、常にすべてのコマンドに対して機能しますC。ただし、ジョブを再インポートするのは再インポートfg
するだけでcat
、再インポートするわけではありませんls
。
[kartika@vm-kartika-vnc ~/junk]$ ls
file1 file2
[kartika@vm-kartika-vnc ~/junk]$ echo $SHELL
/bin/tcsh
[kartika@vm-kartika-vnc ~/junk]$ cat; ls
cat is running
cat is running
^C
[kartika@vm-kartika-vnc ~/junk]$ cat ; ls
cat is running
cat is running
^Z
Suspended
[kartika@vm-kartika-vnc ~/junk]$ jobs
[1] + Suspended cat
[kartika@vm-kartika-vnc ~/junk]$ fg
cat // Pressing ctrl-d here to exit cat
[kartika@vm-kartika-vnc ~/junk]$
システムメッセージ:
kartik@kartikpc:~/junk/exp$ uname -a
Linux kartikpc 3.13.0-70-generic #113-Ubuntu SMP Mon Nov 16 18:34:13 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
kartik@kartikpc:~/junk/exp$ echo $SHELL
/bin/bash
ベストアンサー1
bash ジョブ制御を探す必要があります。以下は良い説明です。http://web.mit.edu/gnu/doc/html/features_5.html
しかし、簡単に言うと、+はCtrlコマンドC(すべての行)を終了し、+は実行Ctrl中Zのコマンドをバックグラウンドで実行します。あなたの場合は、バックグラウンドで実行され(出力の抑制と処理の停止)コマンドをcat
実行し続けます。ls
cat
プロセスのリストを確認してこれを確認し、プロセスがまだリストにあることを確認できます。
タスクをフォアグラウンドにインポートするには、fg
コマンドを参照してください。