Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

1. バックグラウンド実行

一般的に、Linux 上のプログラムは .sh ファイル (./sh ファイル) を実行して実行されます。現在の CMD ウィンドウの動作に影響を与えず、バックグラウンドで実行する必要がある場合はどうすればよいでしょうか。

現時点では、これを実現するには nohup コマンドと & コマンドを使用する必要があります。

nohup java -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -jar test.jar $1 $2 $3 &

(1)ノフープ

コマンドが中断されることなく実行されることを示すために、コマンドの先頭に追加します。

(2)&

コマンドの終了をロードし、このコマンドがバックグラウンドで実行されることを示します。

2. バックグラウンドで実行されているコマンドを表示する

これを表示するには、ps と jobs という 2 つのコマンドがあります。違いは、ジョブは現在のターミナルのバックグラウンドで実行されたタスクのみを表示でき、ターミナルを変更すると表示されなくなることです。 ps コマンドは、瞬間的なプロセスのダイナミクスを表示するのに適しており、他の端末のタスクを表示できます。

(1)仕事

[root@localhost test]# ジョブ
[1]- nohup java -Dfile.encoding=UTF-8 -Dname=Runtime-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test.jar $1 $2 $3 & を実行 (作業ディレクトリ: /home/ams/ams-server/test)
[2]+ nohup java -Dfile.encoding=UTF-8 -Dname=Container-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test1.jar $1 $2 $3 & を実行しています

2 つのバックグラウンド プロセスが次々に開始され、ジョブを使用した後、両方が表示されました。 「+」は最新のタスク(現在のタスク)を表し、「-」は前のタスクを表します。

jobs コマンドは、現在のコマンド ラインで nohup と & が使用されている場合にのみこれを表示できます。これらを .sh スクリプトに記述してスクリプトを実行すると、表示されません。

たとえば、次のスクリプトを実行すると、ジョブは表示されません。

#!/bin/bash
nohup java -Dfile.encoding=UTF-8 -Dname=ランタイム名 -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test.jar $1 $2 $3 &

(2)psコマンド

[root@localhost テスト]# ps -aux|grep java
root 21219 0.3 3.9 6258172 148900 ポイント/0 Sl 10:08 0:02 java -Dfile.encoding=UTF-8 -Dname=Runtime-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test.jar
ルート 21662 0.2 3.0 5041008 116648 ポイント/0 Sl 10:10 0:01 java -Dfile.encoding=UTF-8 -Dname=Container-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test1.jar
ルート 23761 0.0 0.0 112664 972 ポイント/0 S+ 10:19 0:00 grep --color=auto java

これはプロセスを表示するためによく使用されるコマンドなので、これ以上は説明しません。

a: すべてのプログラムを表示 u: ユーザーベースの形式で表示 x: 端末に関係なくすべてのプログラムを表示

3. 現在バックグラウンドで実行中のプログラムを閉じる

キルコマンド

(1)jobsコマンドでjobnumを確認し、kill %jobnumを実行します。

(2)psコマンドでプロセスID PIDを表示し、kill %PIDを実行する。

フォアグラウンド プロセスの場合は、Ctrl + c を実行して終了します。

4. フォアグラウンドプロセスとバックグラウンドプロセスの切り替えと制御

(1)fgコマンド

バックグラウンドのコマンドをフォアグラウンドに移動して実行を継続します

バックグラウンドで複数のコマンドがある場合は、まず jobs を使用してジョブ番号を表示し、次に fg %jobnum を使用して選択したコマンドを呼び出すことができます。

(2)Ctrl + zコマンド

フォアグラウンドで実行中のコマンドをバックグラウンドに移し、一時停止状態にする

(3)bgコマンド

バックグラウンドで一時停止されているコマンドを、バックグラウンドで実行し続けるコマンドに変更します。

バックグラウンドで複数のコマンドがある場合は、まず jobs を使用してジョブ番号を表示し、次に bg %jobnum を使用して選択したコマンドを呼び出して実行を継続できます。

[root@localhost test]# ジョブ
[1]- nohup java -Dfile.encoding=UTF-8 -Dname=Runtime-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test.jar $1 $2 $3 & を実行 (作業ディレクトリ: /home/test)
[2]+ nohup java -Dfile.encoding=UTF-8 -Dname=Container-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test1.jar $1 $2 $3 & を実行しています
 
// fg を使用した後、タスク 2 をフォアグラウンドに移動します [root@localhost test]# fg 2
nohup java -Dfile.encoding=UTF-8 -Dname=コンテナ名 -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test1.jar $1 $2 $3
 
^Z
// Ctrl+Z を押した後、タスク 2 をバックグラウンドで実行して一時停止します [2]+ 停止しました nohup java -Dfile.encoding=UTF-8 -Dname=Container-Name -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test1.jar $1 $2 $3
 
// bg を使用した後、タスク 2 の操作をアクティブ化します [root@localhost test]# bg 2
[2]+ nohup java -Dfile.encoding=UTF-8 -Dname=コンテナ名 -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -jar test1.jar $1 $2 $3 &

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

以下もご興味があるかもしれません:
  • Python Nohup Linux バックグラウンド実行出力の問題を解決する
  • PHP デーモン プロセスと Linux コマンド nohup を組み合わせて、1 秒に 1 回のタスク実行を実装します。
  • Linux のバックグラウンドで & と nohup を使用する方法
  • Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明
  • Linux nohup と tail-f の使い方
  • Linux での Nohup とバックグラウンド実行プロセスの表示と終了

<<:  WeChatミニプログラム開発のためのコンポーネント設計仕様

>>:  WeChatミニプログラムの開発をスピードアップするためのヒント

推薦する

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...

MySQLでのカスタムパラメータの使用に関する詳細な説明

MySQL 変数には、システム変数とシステム変数が含まれます。今回の学習課題はユーザー定義変数です。...

インターフェーステストプラットフォームを構築するためのDjango+Vue+Dockerの詳細な説明

1. 冒頭の2つの単語みなさんこんにちは。私の名前はLin Zonglinです。私はテストエンジニア...

Webデザインチュートリアル(5):Webビジュアルデザイン

<br />前回の記事:Webデザイン講座(4):素材と表現について Webデザイン上級...

XHTML CSS ページをプリンタ ページに変換する

<br />これまで、Web ページのプリンタ対応バージョンを作成するには、印刷したとき...

MySQL レプリケーション問題の 3 つのパラメータの分析

目次01 sql_slave_skip_counter パラメータ02 スレーブスキップエラーパラメ...

Vue3 での Teleport の使用に関する詳細な説明

目次テレポートの目的テレポートの仕組みこの記事では、以下の内容を取り上げます。テレポートの目的テレポ...

MySQL 8.0 が起動できない 3534 の解決策

MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...

React-Native スクリーンショットコンポーネント react-native-view-shot の紹介と使い方のまとめ

目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...

仮想スクロールを簡単に実装するためのVueサンプルコード

目次序文ローリング原理成し遂げるソースコード参照する序文モバイル Web ページの日常的な開発では、...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

Linux コマンドを素早く習得する 4 つの方法

Linux マスターになりたいなら、いくつかの Linux コマンドを習得することが不可欠です。 L...

Docker ネットワークの原理とカスタム ネットワークの詳細な分析

Docker はホストマシン上のブリッジを仮想化します。コンテナを作成して起動すると、各コンテナには...

Centos 7.4 でリモート アクセス制御を実装する方法

1. SSHリモート管理SSH はセキュア チャネル プロトコルであり、主にリモート ログイン、リモ...

SELINUXの動作原理の詳細な説明

1. はじめにSELinux が Linux にもたらす主な価値は、柔軟で構成可能な MAC メカニ...