実行中のプログラムに影響を与えずに Golang でターミナルを閉じる方法

PHPz
リリース: 2023-04-06 10:56:58
オリジナル
1119 人が閲覧しました

Golang は、特にネットワーク プログラミングや並行プログラミングにおいて非常に人気のあるプログラミング言語です。しかし、Golang を使用してプログラムを開発する場合、ターミナルを閉じた後にプログラムを閉じるという問題が発生することがあります。この記事では、プログラムの実行に影響を与えずに Golang でターミナルを閉じる方法を紹介します。

  1. プログラムのバックグラウンド実行の実装

Linux または Unix システムでは、Golang プログラムをバックグラウンドで実行できるため、プログラムを終了した後も実行し続けることができます。ターミナル。実装方法は以下の通りです。

nohupコマンドを使用して、プログラムをバックグラウンドに置いて実行します。

$ nohup ./myprogram &
ログイン後にコピー

このうち、バックグラウンドで実行したいプログラムはmyprogramです。

  1. open-falcon-supervisor を管理に使用する

open-falcon-supervisor は、プロセスを監視、管理、再起動できるオープン ソースの Golang プロセス管理ツールです。 open-falcon-supervisor を使用すると、ターミナルを閉じた後もプログラムの実行が停止しないという効果が得られます。具体的な使用方法は次のとおりです。

  • open-falcon-supervisor のインストール

ターミナルに次のコマンドを入力して、open-falcon-supervisor をインストールします:

$ curl -Ls http://7xjci3.com1.z0.glb.clouddn.com/tools/supervisor/install.sh | sh
ログイン後にコピー
  • supervisord.conf ファイルの設定

/etc ディレクトリの下に supervisord.conf ファイルを作成し、次の内容をその中に追加します。

[program:myprogram]
command=/path/to/myprogram #程序路径
autostart=true
autorestart=true
startretries=10
redirect_stderr=true
stdout_logfile=/path/to/myprogram.log #日志路径
ログイン後にコピー

その中に、myprogramは実行するプログラムです。name、/path/to/myprogram はプログラムのパス、/path/to/myprogram.log はプログラムのログ ファイルのパスです。

  • スーパーバイザーの起動

ターミナルに次のコマンドを入力してスーパーバイザーを起動します。

$ supervisord
ログイン後にコピー

このようにして、open-falcon- によって管理されるプログラムが起動されます。スーパーバイザはバックグラウンドで実行されます。プログラムはターミナルを閉じた後も実行を続けます。

  1. systemd 管理を使用する

Systemd は、プロセスを監視、管理、再起動できる Linux 上のシステムおよびサービス マネージャーです。 systemd 管理プログラムを使用すると、端末を閉じた後もプログラムの実行が停止しないという効果が得られます。具体的な使用方法は次のとおりです。

  • プログラム サービス ファイルの書き込み

/etc/systemd/system ディレクトリの下に myprogram.service ファイルを作成し、次の内容を追加します。それ:

[Unit]
Description=My Program Service
After=network.target

[Service]
Type=simple
ExecStart=/path/to/myprogram #程序路径
Restart=on-failure

[Install]
WantedBy=multi-user.target
ログイン後にコピー

このうち、myprogram は実行するプログラムの名前、/path/to/myprogram はプログラムのパスです。

  • サービスを開始します

ターミナルに次のコマンドを入力してサービスを開始します:

$ systemctl start myprogram
ログイン後にコピー

このようにして、systemd によって管理されるプログラムはバックグラウンドで実行する場合は、ターミナルを閉じます。プログラムはその後も実行を続けます。

  1. screen コマンドを使用する

screen コマンドは、Linux でのセッション管理ツールです。複数のセッションを作成し、セッション間を切り替えることができ、また、複数のセッションでプログラムを実行することもできます。そして、プログラムをバックグラウンドで実行します。 screen コマンドを使用して、端末を閉じた後にプログラムが停止しないようにします。具体的な使用方法は次のとおりです。

  • インストール画面

ターミナルに次のコマンドを入力して、インストール画面を実行します。新しい画面セッション

  • ターミナルに次のコマンドを入力して、新しい画面セッションを作成します。
$ sudo apt-get install screen
ログイン後にコピー
ここで、myprogram はセッションの名前です。

プログラムを実行します

  • screen セッションでプログラムを実行します:
$ screen -S myprogram
ログイン後にコピー

プログラムをバックグラウンドで実行する

  • screen セッションで、Ctrl と d のショートカット キーを使用してプログラムをバックグラウンドに置きます。プログラムはターミナルを閉じた後も実行を続けます。

スクリーン セッションの復元

  • ターミナルに次のコマンドを入力して、以前に作成したスクリーン セッションを復元します。
$ /path/to/myprogram
ログイン後にコピー
このようにして、プログラムは管理されました。 screen コマンドを使用すると、バックグラウンドで実行され、ターミナルを閉じた後もプログラムが実行され続けます。

概要

上記は、Golang をオンラインで使用するときに、プログラムの実行に影響を与えずにターミナルを閉じるいくつかの方法です。ニーズと実際の状況に基づいて、プログラムを管理する適切な方法を選択できます。この記事が皆様のお役に立てれば幸いです。

以上が実行中のプログラムに影響を与えずに Golang でターミナルを閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート