Linux のバックグラウンドで実行するいくつかの方法 (まとめ)

Linux のバックグラウンドで実行するいくつかの方法 (まとめ)

1. ノーフープ

ハングアップ信号を無視してプログラムを実行する

追加メモ
nohup コマンドは、ハングアップ信号を無視してプログラムを実行することができ、実行中のプログラムの出力情報は端末に表示されません。
nohup コマンドの出力を端末にリダイレクトするかどうかに関係なく、出力は現在のディレクトリの nohup.out ファイルに追加されます。
現在のディレクトリ内の nohup.out ファイルが書き込み可能でない場合、出力は $HOME/nohup.out ファイルにリダイレクトされます。
追加用にファイルを作成または開くことができない場合、コマンド パラメータで指定されたコマンドを呼び出すことはできません。
標準エラーが端末の場合、標準エラーに書き込まれる指定されたコマンドのすべての出力は、標準出力と同じファイル記述子にリダイレクトされます。

簡単な例:

nohup コマンド &

出力インスタンスの指定

nohup コマンド > myout.file 2>&1 &

その他の関連コマンド
ctrl + z #フォアグラウンドで実行中のコマンドをバックグラウンドに移し、一時停止状態にすることができます。
fg #バックグラウンドタスクをフォアグラウンド実行に切り替える
bg #バックグラウンドで一時停止されているコマンドを変更して、バックグラウンドでの実行を継続します。バックグラウンドで複数のコマンドが実行されている場合は、bg %jobnumber を使用して選択したコマンドを呼び出すことができます。
jobs #バックグラウンド実行のステータスを確認します。jobs -l オプションを使用すると、すべてのタスクの PID を表示できます。
ps -ef | grep コマンドまたは ps aux | grep コマンド #プロセスを表示する
kill -9 プロセスID #対応するプロセスをkillします。

より高度な使用方法は次のとおりです。

ps aux | grep command | grep -v grep | awk '{print $1}' | xargs kill -9 #これは、コマンドを通じてプロセスIDを直接取得し、それを直接強制終了することを意味します

2. スクリーン

コマンドライン端末切り替え用

a. セッションの回復 画面自体が終了していない限り、画面内で実行されているセッションは回復できます。これは、ネットワーク接続が失われた場合でも、リモートでログインするユーザーにとって特に便利です。
ユーザーは、すでに開いているコマンドライン セッションの制御も失いません。ホストに再度ログインし、screen -r を実行するだけでセッションを再開できます。
同様に、一時的に離れる場合も、detach コマンドを実行して、内部のプログラムが正常に動作していることを確認しながら、画面を一時停止(バックグラウンドに切り替え)することもできます。

b. 複数のウィンドウ Screen 環境では、すべてのセッションが独立して実行され、独自の番号、入力、出力、およびウィンドウ キャッシュを持ちます。ユーザーはショートカット キーを使用してさまざまなウィンドウを切り替えることができます。
また、各ウィンドウの入力と出力を自由にリダイレクトできます。 Screen は、コピーや貼り付けなどの基本的なテキスト操作を実装し、スクロール バーに似た機能も提供します。
ウィンドウ条件の履歴を表示できます。ウィンドウをパーティション分割して名前を付けることもでき、バックグラウンド ウィンドウのアクティビティを監視することもできます。 セッション共有画面を使用すると、1 人以上のユーザーが異なる端末から複数回セッションにログインし、セッションのすべての機能を共有できます (たとえば、まったく同じ出力を表示できます)。また、ウィンドウのアクセス許可のメカニズムも提供します。
ウィンドウはパスワードで保護できます。

c. スクリーンの設置

yum インストール -y スクリーン

基本的な構文
screen -AmRvx -[ls -wipe][-d <ジョブ名>][-h <行数>][-r <ジョブ名>][-s ][-S <ジョブ名>]

オプション
-A すべてのウィンドウを現在の端末のサイズに合わせてサイズ変更します。
-d <ジョブ名> 指定された画面ジョブをオフラインにします。
-h <行数> は、ウィンドウのバッファ行数を指定します。
-m すでにスクリーン ジョブが進行中の場合でも、新しいスクリーン ジョブを強制的に作成します。
-r <ジョブ名> オフライン画面ジョブを復元します。
-R 最初にオフライン ジョブの回復を試みます。オフライン ジョブが見つからない場合は、新しい画面ジョブが作成されます。
-s は、新しいウィンドウを作成するときに実行されるシェルを指定します。
-S <ジョブ名> は画面ジョブの名前を指定します。
-v バージョン情報を表示します。
-x 以前オフラインだったスクリーンジョブを復元します。
-ls または --list は、現在のすべての画面ジョブを表示します。
-wipe は現在のすべての画面ジョブをチェックし、使用できなくなったジョブを削除します。

共通画面パラメータ
screen -S yourname -> yournameという新しいセッションを作成する
screen -ls -> 現在のセッションをすべて一覧表示する
screen -r yourname -> yournameセッションに戻る
screen -d yourname -> リモートでセッションを切断する
screen -d -r yourname -> 現在のセッションを終了し、yournameセッションに戻ります

各画面セッションでは、すべてのコマンドは ctrl+a (Ctrl + a) で始まります。

Ctrl + a ? -> すべてのキーバインディング情報を表示
Ctrl + ac -> シェルを実行する新しいウィンドウを作成し、それに切り替える
Ctrl + an -> 次へ、次のウィンドウに切り替える
Ctrl + ap -> 前へ、前のウィンドウに切り替える
Ctrl + a 0..9 -> ウィンドウ 0..9 に切り替える
Ctrl+a [スペース] -> ウィンドウ0からウィンドウ9まで順番に切り替える
Ctrl + a Ctrl + a -> 最近使用した2つのウィンドウを切り替える
Ctrl + ax -> 現在のウィンドウをロックし、ユーザーパスワードでロックを解除します
Ctrl + ad -> デタッチで、現在のセッションを一時的に離脱し、現在の screen セッション (複数のウィンドウが含まれている場合があります) をバックグラウンドに実行させて、screen に入る前の状態に戻ります。このとき、screen セッションでは、各ウィンドウ (フォアグラウンド/バックグラウンドを問わず) で実行中のプロセスは実行を継続しており、ログアウトしても影響を受けません。
Ctrl + az -> 現在のセッションをバックグラウンドにし、シェルの fg コマンドを使用して戻ります。
Ctrl + aw -> すべてのウィンドウリストを表示
Ctrl + at -> time、現在の時刻とシステム負荷を表示します
Ctrl + ak -> ウィンドウを強制終了、現在のウィンドウを強制的に閉じる
Ctrl + a -> コピーモードに入ります。コピーモードでは、vi と同じようにスクロールバック、検索、コピーができます。
Cb 後方、PageUp
Cf 進む、PageDown
H(大文字)ハイ、カーソルを左上隅に移動する
L 低、カーソルを左下隅に移動する
0 行の先頭へ移動
$ 行末
w 1単語進む、単語単位で進む
b 1単語後ろに移動、1単語後ろに移動
スペースキーを最初に押すとエリアの開始点がマークされ、2 回目に押すと終了点がマークされます。
Esc でコピーモードを終了
Ctrl + a ] -> 貼り付け、コピーモードで選択した内容を貼り付けます

操作例については、https://wangchujiang.com/linux-command/c/screen.html を参照してください。

3. デーモン化ツール

##git clone git://github.com/bmc/daemonize.git をインストールします
sh configure && make && sudo make install

-a #デフォルト値をフラッシュする代わりに出力ファイルにマウントします。 -e および/または -o が指定されている場合にのみ適用されます。
-e # 出力標準エラーを指定されたファイルにリダイレクトし、/dev/nullを置き換えます
-o #出力標準を指定されたファイルにリダイレクトし、/dev/nullを置き換えます
-E name=value # バックグラウンド プログラムに環境変数を追加します。このパラメータ タイプは、名前 = 値の形式である必要があります。パラメータは複数回設定できます。
-c ディレクトリ #コマンドを実行する前にディレクトリをカスタマイズします。
-p pidfile #独自の pid 保存場所をカスタマイズします。
-l lockfile #このファイルは、単一のインスタンスが起動されるときにチェックされます。
-u user #プログラムを実行するユーザーをカスタマイズします。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux に Redis をインストールし、バックグラウンドで実行し、システムが自動的に起動するように設定する方法
  • Linux でバックグラウンドで実行中のプログラムを表示して終了する方法
  • Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)
  • Linux で jar パッケージを起動してバックグラウンドで実行する方法
  • Linux で実行中のバックグラウンド プログラムを表示および終了する方法
  • Linux でバックグラウンド タスクを実行するために nohup と screen を使用する例と違いの簡単な分析
  • LinuxのバックグラウンドでPythonプログラムを実行するいくつかの方法
  • Linux のバックグラウンドで Springboot を実行する方法
  • Linux バックグラウンドでノード サービス コマンドを実行する方法
  • Python Nohup Linux バックグラウンド実行出力の問題を解決する
  • Linux でバックグラウンドでプロセスを確実に実行する方法の概要
  • Linuxのバックグラウンド操作とシャットダウンの詳細な説明、バックグラウンドタスクの表示
  • Linuxコマンドをバックグラウンドで実行する方法

<<:  MYSQL トランザクション チュートリアル Yii2.0 マーチャント引き出し機能

>>:  WeChatアプレット実装アンカー位置決め機能の例

推薦する

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

MySQL 8.0.17 インストール グラフィック チュートリアル

この記事では、参考までにMySQL 8.0.17のインストールグラフィックチュートリアルを紹介します...

MySQLで論理SQLを置き換える際の落とし穴を回避する方法の詳細な説明

重複キーの置換と挿入の違い置換の使用法競合がない場合、挿入と同等となり、他の列のデフォルト値が使用さ...

HTML入力ドロップダウンメニューを実装する方法

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

MySQL ツリー構造データベース テーブル設計

目次序文1. 基本データ2. 継承駆動設計3. 左右の値のエンコーディングに基づく設計4. ツリー構...

ソフトウェア テスト - MySQL (VI: データベース関数)

1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...

Vue ユニットテストに関する予備調査

目次序文なぜユニットテストを導入するのですか?ユニットテストの概要テスト開発パターン1. テスト駆動...

VMware CentOS 仮想マシンのインストールとネットワーク構成のグラフィックチュートリアル

1. CentOSイメージをダウンロードする1.1 ダウンロードウェブサイトhttp://mirro...

dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明

問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...

ポップアップ効果を実現するにはjsを使用します

この記事の例では、ポップアップ効果を実現するためのjsの具体的なコードを参考までに共有しています。具...

Vue Notepadの例の詳細な説明

この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...

Centos7 Zabbix3.4 メールアラーム設定(メール内容がxx.bin添付ファイルになる問題の解決)

目次1. 監視Linuxホストを追加する2. メールボックスを設定する1. 監視Linuxホストを追...

Nginx ベースの HTTPS ウェブサイトを設定する手順

目次序文:暗号化アルゴリズム: 1. HTTPS の概要2. NginxはHTTPSウェブサイト設定...

CSS3 を使って本のページめくり効果を実現するサンプルコード

重要なポイント: 1. CSS3 3Dアニメーションをマスターする2. ページめくり後のページ内容の...

ダッシュボードを実装するためのjQueryプラグイン

jQueryプラグインは、参考のためにダッシュボードを実装します。具体的な内容は次のとおりです。一般...