コマンドラインからプログラムを実行し、実行中にコマンドラインで作業できるようにするにはどうすればよいでしょうか?

コマンドラインからプログラムを実行し、実行中にコマンドラインで作業できるようにするにはどうすればよいでしょうか?

Javaプログラムを実行したいとすると、次のように入力します。

java myProgram

そして、画面に何らかの出力が印刷されますが、実行が完了するまでに数時間かかるとします。実行中に同じ端末で作業を続けたい場合、使用すべきコマンドは何ですか? 最後に & を試しましたが、うまくいかないようです。

答え1

コマンドの後にを追加するだけです&。これにより、コマンドがバックグラウンドで実行されます。

出力は引き続き取得されるので、出力を/dev/nullまたは何らかの構成ファイルにリダイレクトする必要がある場合があります。

たとえば、stdout と stderr の両方をリダイレクトするには、次のようにします。

java myProgram > /dev/null 2>&1 &

答え2

プログラムの実行時間は長いので、画面プログラムを実行してから、Control-a Control-c で別のコマンド プロンプトを起動できます。この操作は必要な回数だけ実行でき、一度に複数の作業を行うことができます。また、ログアウトして後で再度ログインした場合でも (シャットダウンしない限り)、screen に再接続して状況を確認できます。詳細については、「man screen」を実行してください。

同様のツールである tmux もありますが、インストールする必要があります。

答え3

私は思う画面があなたの特定の質問に最もよく答えるでしょうが、タブを使用することであなたのワークフローは最も恩恵を受けると思われます。

ターミナルで新しいタブを開くには、ターミナルを選択した状態でCtrl+Tを押すとタブを切り替えることができます。Ctrl+PageUp キーまたはCtrl+PageDown キーそれらを切り替えます。

これはすぐに直感的になり、タブをすばやく切り替えて長時間実行中のプログラムを確認したり、長時間のタスクで作業中のタブが忙しいときにすぐに他のタブを生成したりできるので、効率的になります。

関連情報