Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

Linuxでnohupを使用してバックグラウンドでプロセスを実行する方法

このガイドでは、コマンド「nohup」を使用してプロセスをバックグラウンドで実行し、ログアウトしたり切断したりしてもプロセスが実行され続けるようにする方法を説明します。

私はリモートサーバーでよく働いています。 SSHを使用してサーバーに接続しています。 SSH接続を閉じた後でも、実行させる必要のあるプロセスを実行することがよくあります。これは、ログファイルを解析するシェルスクリプトまたは非常に大規模なmysqlデータベースの復元である可能性があります。そのとき、「nohup」と呼ばれるLinuxコマンドラインユーティリティに目を向けます。 「nohup」は「nohangup」の略で、「ハングアップ信号を無視する」という意味です。 「ハングアップ」信号は、ログアウトしたときに発生する信号です。 「nohup」とは、サーバーにログインし、プロセスを起動してログアウトできることです。ログアウトした後も、プロセスは実行され続けます。再度ログインすると、そのプロセスがまだ実行されていれば、そのプロセスに再度アクセスできます。

「nohup」の基本的な構文は次のとおりです。

nohup [コマンド]&

「[command]」をシェルスクリプトの名前またはコマンドに置き換えます。最後の「&」は、コマンドまたはスクリプトをバックグラウンドプロセスとして実行します。これは、「nohup」を使用してリモートサーバー上の大規模なmysqlデータベースのバックアップを作成する方法の例です。まず、SSHを使用してリモートサーバーにログインします:

ssh calvin@sevenacross.com

次に、コマンド「mysqldump -ucalvin -phobbes largedatabase> largedatabase.db」を「nohup」モードで実行し、コマンドの前に「nohup」を追加し、コマンドの後に「&」を追加します。

nohup mysqldump -ucalvin -phobbes largedatabase> largedatabase.db&
[1] 3999
#nohup:「nohup.out」に出力を追加します

取得する出力は2行あります。最初の行の「3999」は、生成したばかりのプロセスのプロセスIDです。一方、「nohup:出力を `nohup.out'に追加する」は、通常はターミナルに送られる出力がに転送されることを意味します。コマンドを起動したディレクトリにある「nohup.out」というファイル。プロセスIDを使用して実行中のすべてのプロセスを検索することで、プロセスがまだ実行中であるかどうかを確認できます。

ps -ef | grep 3999
calvin 3999 29848 0 18:42? 00:00:00 / usr / bin / mysqldump
calvin 6575 31852 0 18:44 pts / 2 00:00:00 grep 3999

プロセスの実行が完了すると、コマンドラインに次のような出力が表示されます。

[1]+完了nohupmysqldump-ucalvin -phobbes largedatabase> largedatabase.db

ファイル「nohup.out」をチェックして、プロセスの実行中に出力されたエラーやその他のメッセージをチェックできます。ファイルが空白のままであれば問題ありません。これは、プロセスの実行中にメッセージが出力されなかったことを意味します。

バックグラウンドでプロセスを実行する方法がわかったので、他のLinuxのヒントとコツをいくつか学びませんか?


  1. Linuxでプロセスを強制終了する方法

    Linuxでプロセスを強制終了するために利用できるメソッドは多数あります。このチュートリアルでは、壊れたプロセスを見つけて強制終了する方法を説明します。 プロセスは簡単に孤立する可能性があります。意図的かどうかに関係なく、親プロセスがクラッシュし、子プロセスが実行されたままになる可能性があります。親プロセスが完了した子プロセスを取得できず、ゾンビになる場合があります。 これらのプロセスは両方とも行き詰まっており、手動による介入が必要です。 ジョブ制御を入力します。 壊れたプロセスを強制終了する方法を見てみましょう。 いくつかのコマンドを見てみましょう: トップ (そしてなぜ htop

  2. WSL を使用して Windows 10 および 11 で Linux アプリを実行する方法

    私はかなり長い間、OS クラスに Windows Subsystem for Linux (WSL) を使用してきました。また、仮想マシンのインストールやデュアル ブートの複雑さを増すことなく、Windows で Linux コマンドを簡単な方法で使用できる点も気に入っています。 この記事の終わりまでに、次のように Windows から直接 Linux コマンドを実行できるはずです: Windows での Linux コマンドの例 前提条件 WSL を効果的に実行するには、Windows 11 にアップグレードすることをお勧めします。WSL は Windows 10 でも利用できますが、