Golang は、特にネットワーク プログラミングや並行プログラミングにおいて非常に人気のあるプログラミング言語です。しかし、Golang を使用してプログラムを開発する場合、ターミナルを閉じた後にプログラムを閉じるという問題が発生することがあります。この記事では、プログラムの実行に影響を与えずに Golang でターミナルを閉じる方法を紹介します。
Linux または Unix システムでは、Golang プログラムをバックグラウンドで実行できるため、プログラムを終了した後も実行し続けることができます。ターミナル。実装方法は以下の通りです。
nohupコマンドを使用して、プログラムをバックグラウンドに置いて実行します。
$ nohup ./myprogram &
このうち、バックグラウンドで実行したいプログラムはmyprogramです。
open-falcon-supervisor は、プロセスを監視、管理、再起動できるオープン ソースの Golang プロセス管理ツールです。 open-falcon-supervisor を使用すると、ターミナルを閉じた後もプログラムの実行が停止しないという効果が得られます。具体的な使用方法は次のとおりです。
ターミナルに次のコマンドを入力して、open-falcon-supervisor をインストールします:
$ curl -Ls http://7xjci3.com1.z0.glb.clouddn.com/tools/supervisor/install.sh | sh
/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- によって管理されるプログラムが起動されます。スーパーバイザはバックグラウンドで実行されます。プログラムはターミナルを閉じた後も実行を続けます。
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 によって管理されるプログラムはバックグラウンドで実行する場合は、ターミナルを閉じます。プログラムはその後も実行を続けます。
screen コマンドは、Linux でのセッション管理ツールです。複数のセッションを作成し、セッション間を切り替えることができ、また、複数のセッションでプログラムを実行することもできます。そして、プログラムをバックグラウンドで実行します。 screen コマンドを使用して、端末を閉じた後にプログラムが停止しないようにします。具体的な使用方法は次のとおりです。
ターミナルに次のコマンドを入力して、インストール画面を実行します。新しい画面セッション
$ sudo apt-get install screen
プログラムを実行します
$ screen -S myprogram
プログラムをバックグラウンドで実行する
スクリーン セッションの復元
$ /path/to/myprogram
以上が実行中のプログラムに影響を与えずに Golang でターミナルを閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。