SSH ターミナル (putty、xshell など) を使用して Linux サーバーに接続し、時間のかかるタスクを実行すると、完了するまでに数時間または数日かかる場合があります。この時点で、ターミナルは占有されており、他のタスクもまだ実行する必要があります。したがって、この種の時間のかかるタスクをバックグラウンドで実行する必要があります。ログを記録するだけで済みます。この要件を満たす一般的な方法は次のとおりです。 指示 & ターミナルにコマンド & を入力して実行します。このとき、プログラムはバックグラウンド実行中の & の SIGINT1 シグナルの影響を受けないため、Ctrl + C を使用してコマンドを終了しても無効となり、実行が継続されます。 ただし、ターミナルを直接閉じると、プロセスは終了します。 & を使用してバックグラウンドで実行されているプロセスは SIGHUP2 シグナルによって終了されることがわかりますが、exit コマンドを使用してターミナルを通常どおり終了すると、プログラムはバックグラウンドで実行され続け、終了されません。 nohup コマンド デフォルトでは、標準出力は現在のディレクトリの nohup.out に追加されます。現在のディレクトリの nohup.out ファイルが書き込み可能でない場合、出力は 次に、これら 2 つの機能を組み合わせて、次のようなコマンドを実行することを考えるのは簡単です。 これにより、タスクは完了するまでバックグラウンドで実行され、プログラムの標準出力 (1) と標準エラー (2) がファイル /home/user/myfile.log に送信されます。 スクリーンツール Screen はセッション ウィンドウ管理ツールとして理解できます。一般的な使用では、次の操作のみを使用する必要があります。 # yumを使用してscreenをインストールする yum インストール画面 # test screenという名前のセッションウィンドウを作成する -S test # 一時的にウィンドウを閉じる Ctrl+ad (Ctrl キーを押しながら a、d を順に押す) # 既存のセッションウィンドウ画面を表示する -ls # ウィンドウ画面に入る -r test screen -r プロセスID # ウィンドウを閉じる # ウィンドウの切り替え Ctrl+ac: 現在の画面セッションにウィンドウを作成 Ctrl+aw: ウィンドウリスト Ctrl+an: 次のウィンドウ Ctrl+ap: 前のウィンドウ Ctrl+a 0-9: 0 番目のウィンドウと 9 番目のウィンドウを切り替える screen ツールを使用すると、ターミナルにウィンドウを作成し、必要なコマンドを実行してから一時的に離れて、他の作業を続行できます。もちろん、他のターミナルを使用してサーバーに接続し、screen -r コマンドを使用して必要なウィンドウに接続することもできます。プログラムは常に実行されており、ターミナルを終了しても、一時的に離れたターミナルで実行されているプログラムには影響しません。 テスト: テスト スクリプト test.sh を作成します。 #!/bin/sh ((i=1; i<1000; i++)) の場合 する d=`日付 '+%Y-%m-%d %H:%M:%S'` echo "$d $i 番目の出力;" tt 2秒寝る 終わり バッシュ バックグラウンドで実行するには & を使用します: [root@localhost test.cc]# ./test.sh > test.log 2>&1 & [1] 15037 [root@localhost test.cc]# ps -aux | grep test.sh ルート 15037 0.0 0.0 113180 1424 ポイント/0 S 16:10 0:00 /bin/sh ./test.sh root 15045 0.0 0.0 112712 992 ポイント/0 S+ 16:10 0:00 grep --color=auto test.sh バッシュ 15037 個のプロセスが実行中であることがわかります。 ターミナルを直接閉じると、ログ記録が停止し、ターミナル セッションの終了時にプロセスの実行が停止したことが示されます。 しかし、テストを繰り返した結果、exit コマンドで通常通りターミナルを終了し、再度ターミナルに接続すると、& で実行したプログラムが継続して実行される、つまり & コマンドは nohup と同じ効果があることがわかりました。ここで使用しているテスト環境は CentOS7.6 です。 nohupを使用して実行 [root@localhost test.cc]# nohup ./test.sh > test.log 2>&1 & [1] 14349 テスト結果: ターミナルを直接閉じるか、exit コマンドを使用してターミナルを終了すると、プログラムは実行を継続します。 画面を使用して実行 # ウィンドウ画面を作成 -S テスト # コマンドを実行します。最後に & は必要ありませんが、プログラムはウィンドウを占有します。/test.sh > test.log 2>&1 & # 一時的にCtrl + 広告を残す この時点で、ターミナルを直接閉じてから再接続することができます。プログラムがまだ実行されていることがわかります。ウィンドウ接続を確認するには、次の手順を実行します。 # 既存のウィンドウ [root@localhost ~]# screen -ls 画面は次の通りです: 18048.test (分離) /var/run/screen/S-root にソケットが 1 つあります。 # ウィンドウに入る [root@localhost ~]# screen -r test 入力した後、ウィンドウは、以前に入力したプログラムやコマンドを含め、終了する前の状態を維持していることがわかります。ウィンドウを終了するためにウィンドウで exit コマンドを入力する場合、前のコマンドの後に & を使用しないと、プログラムは終了します。これは、テスト ウィンドウに対して、これがフォアグラウンド プログラムであるため、ウィンドウが終了するとプログラムは自然に終了します。 screen の一時デタッチ機能により、フォアグラウンド プログラムは一時デタッチ ウィンドウで引き続き実行できます。実際の端末と比較すると、バックグラウンドで実行されているのと同等です。
要約する 上記は、エディターが紹介した Linux で nohup と screen を使用してバックグラウンド タスクを実行する例と違いです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。エディターがすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: MySQL 8.0.11 圧縮版のインストールチュートリアル
垂直方向では、セルの配置を上、中央、下に設定できます。基本的な構文<TD VLIGN=&quo...
序文1. この記事ではMySQL 8.0バージョンを使用していますバージョン5.0と比較すると、パッ...
1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...
1 問題の説明: 1.1 Windows 10 に VMware を初めてインストールする場合、また...
序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...
この記事では、スライディングカルーセル効果を実現するためのjsの具体的なコードを参考までに共有します...
VMWare (Virtual Machine ware) は、「仮想 PC」ソフトウェア会社です。...
月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...
MySQL のインデックスの種類一般的に、次の 4 つのカテゴリに分類できます。通常のインデックス:...
フロントエンド開発において、$ は jQuery の関数です。$ のパラメータが異なると、実装される...
まずサンプルコードを見てみましょう: 1. 共通パラメータ tcpdump -i eth0 -nn ...
1: スループット(1秒あたりのリクエスト数)サーバーの同時処理能力を定量的に表したもので、reqs...
「Tik Tok」も大人気で、ユーザー数は7億人と言われています。今日は、注目を集めるためにTikT...
質問ガイド1. Hadoop 3.x はどのようにして障害を許容するのでしょうか? 2. Hadoo...
はじめに<br />私はフロントエンド分野でかなり長い間働いており、CSS分野でも長い間...