50% off 全プラン、期間限定。料金は $2.48/mo
8分残り
サーバー及びOS

Linuxのnohupコマンドの仕組み:構文、ユースケース、実例

エイダ・ラヴグッド By エイダ・ラヴグッド 8分で読める 2024年7月14日更新
nohupコマンド

Linux デベロッパーであれば、セッションの一貫性と信頼性がいかに重要かをご存知でしょう。Linux での長時間実行プロセスは、セッションからログアウトした後も継続される必要があります。幸いなことに、Linux にはこの目的のための機能的なコマンドがあります。 nohupコマンド を使用すると、コマンドをバックグラウンドで中断なく実行し続けることができます。これによりデータ損失を防ぎ、貴重な時間を節約できます。このガイドでは、シンタックスとオプションから実用的な例、一般的なエラーのトラブルシューティングまで、Linux nohup コマンドについて知っておく必要があることをすべてご紹介します。

Linux nohup シンタックスの理解

nohup コマンドは使いやすく簡潔です。このコマンドを使うと、ターミナルからログアウトした後もコマンドやスクリプトがバックグラウンドで実行され続けることが確実になります。使い方は次の通りです:

nohup [command] [arguments] &

交換すべきです [command] 実行したいコマンドまたはスクリプトを指定します。また [argument] はコマンドに必要な引数やオプションです。 & シンボルはコマンドをバックグラウンドで実行するよう指示します。例を見てみましょう:

nohup myscript.sh &

この例では、 myscript.sh はターミナルを閉じても実行し続けるbashスクリプトです。出力は nohup.out 別のパスを指定しない限り、デフォルトで設定されます。

nohup オプションの詳細

nohup コマンド自体にはオプションが多くありませんが、様々なコマンドとリダイレクト技法を組み合わせて効果的に使う方法を理解することで、その性能を引き出せます。まずは nohup コマンドについての情報を取得する方法を見てみましょう。

nohup –-help 
nohup --version

この2つのコマンドは、ヘルプメッセージと nohup のバージョンを表示して、便利な情報を提供します。

nohup コマンドでプロセスを実行する

nohup コマンドでプロセスを実行したい場合は、前のセクションで説明した構造と同じ方法で進めてください。

nohup [command]

バックグラウンドでプロセスを実行したい場合は、単に以下を追加してください & コマンドの最後まで。

nohup コマンドでバックグラウンドで複数のプロセスを実行する

では、nohup コマンドを使ってバックグラウンドで複数のプロセスを実行したい場合はどうすればよいでしょう?

nohup bash -c '[command A] && [command B]' &

置き換える [command A][command B] バックグラウンドで実行したいコマンドを使用します。たとえば、システムパッケージをまず更新してから不要なファイルをクリーンアップしたい場合、nohupコマンドを使用して次のようにします:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

この例では、 nohup 更新とクリーンアップのプロセスがバックグラウンドで実行し続けるので、ターミナルを開いたままにしておく必要なくシステムメンテナンスタスクが完了します。

カスタム出力をリダイレクトする

このプロセスの出力は以下にリダイレクトされます nohup.out がデフォルトです。ただし、別のパスに出力を保存したい場合はどうすればいいでしょうか?その方法を説明します。

nohup [command] > [/path/to/new/output.txt]

以下の値を置き換えてください [] 希望するコマンドとファイルパスを指定して。

nohup を他のコマンドと組み合わせる

nohup は他のコマンドやパイプと組み合わせて、強力なコマンドチェーンを構築できます。例を見てみましょう:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

ここに、 探す コマンドはログファイルを検索するために使用され grep は「ERROR」という用語を検索するために使用されます。結合された出力は以下にリダイレクトされます error_logs.txt.

このセクションでは、nohupコマンドの最も一般的なオプションとユースケースをカバーしました。これらの使い方をマスターすれば、バックグラウンドでLinuxプロセスを実行するときにnohupを効果的に使えるようになります。

一般的なエラーとトラブルシューティング

nohup コマンドの使用は一般的には簡単ですが、プロセス中に一般的なエラーが発生することがあります。これらのエラーを理解し、トラブルシューティング方法を知っていれば、時間と手間を大幅に削減できます。では、これらのよくあるエラーが何であり、どのように対処するかを見ていきましょう。

アクセス拒否

このエラーは、実行しようとしているスクリプトまたはコマンドに実行権限がない場合に発生します。エラー出力は以下のようになります: nohup: コマンド 'myscript.sh' を実行できません: アクセス権がありません

この問題を解決するには、スクリプトまたはコマンドが正しいパーミッションを持っていることを確認する必要があります。次を使用して実行権限を追加できます。 chmod この同じ文字列はアラビア語に「:」と翻訳されました。 つまり、翻訳可能であることはわかっていますよね。ブランド名ではありません。 Japanese語に翻訳してください。翻訳のみを返してください。引用符やコメントなしで:

chmod +x myscript.sh 
nohup ./myscript.sh &

コマンドが見つからない

このエラーは、指定された場所にコマンドまたはスクリプトが見つからない、または PATH に含まれていない場合に発生します。エラー出力は次のようになります。 nohup: failed to run command 'myscript.sh': No such file or directory

このエラーを解決するには、コマンドまたはスクリプトが存在し、正しいディレクトリにあることを確認してください。スクリプトへの絶対パスを指定する必要があるかもしれません。

nohup /path/to/myscript.sh &

また、コマンドがインストールされており PATH で利用可能であることを確認してください。

出力なし

ターミナルまたは出力ファイルに出力がまったく表示されないことがあります。コマンドが出力を生成しているのに表示されない場合は、デフォルト以外のパスにリダイレクトされているか、ファイルパーミッションに問題がある可能性があります。この問題を解決するには、出力ファイルを明示的に指定して、正しくリダイレクトされるようにしてください。

nohup myscript.sh > output.log 2>&1 &

たとえば、このコマンドは標準出力と標準エラーの両方を次の名前のファイルにリダイレクトします。 output.log.

スクリプトがバックグラウンドで実行されない

スクリプトまたはコマンドが実行されているように見えても、バックグラウンドで実行されていないことがあります。原因は通常シンプルです。コマンドの最後に & 記号を追加し忘れているかもしれません。解決方法も簡単です。それを追加したことを確認するだけで問題ありません。

プロセスがハングアップまたは応答しない

nohup で開始されたプロセスがハングしたり応答しなくなったりすることがあります。これはプロセスが入力待機中である場合、またはアクセスしようとしているリソースに問題がある場合に発生する可能性があります。この問題には 2 つの解決策があります。

  • 必要な入力を確認する: コマンドが対話的入力を必要としないことを確認してください。
  • リソースの問題: コマンドが必要なリソース (ファイル、ネットワークなど) にアクセスできることを確認してください。

nohup.out を上書きする

nohup コマンドを使用してバックグラウンドで複数のプロセスを実行している場合、誤って nohup.out ファイルを上書きする可能性があります。この問題を避けるために、各プロセスに特定のパスを指定できます。このようにすれば各プロセスは一意の出力ファイルを持ち、デフォルトパスは上書きされません。

nohup の一般的なエラーとその解決策について学ぶことで、nohup コマンドを問題なく使用できます。

結論

nohup コマンドはバックグラウンドでプロセスを実行する必要があるすべての Linux ユーザーにとって優れたツールです。ログアウト後もプロセスが実行し続けることを保証します。このガイドでは、基本的な構文をカバーし、さまざまなオプションを探索し、一般的なエラーとトラブルシューティングのヒントについて説明しました。nohup コマンドをマスターすることで、長時間実行タスクを効率的に管理でき、生産性とシステム管理スキルが向上します。

Linux の経験を最大限に活用したい Linux 開発者であれば、信頼できる Linux VPSへの升級を検討してください。当社のクラウドベースの VPS サービスは 24/7 サポートと 99.95% のアップタイム保証を提供しており、アプリケーションは常にスムーズに実行でき、いつでもサポートを受けることができます。堅牢なインフラとリソースにより、当社の VPS は Linux プログラマーの要求を満たすように設計されています。さらに、お好みの Linux ディストリビューションをプリインストールできるため、セットアップが迅速かつ簡単です。VPS で Linux プロジェクトを次のレベルに引き上げ、必要な力と柔軟性を手に入れましょう。

よくあるご質問

次の違いは何ですか nohup&?

nohup ユーザーがログアウトしてもプロセスが終了されないようにします。一方 & プロセスをバックグラウンドで実行します。 nohup を使用するとログアウト後もプロセスが続行され、 & と組み合わせるとバックグラウンドで実行できます。

nohup を使う理由は何ですか

nohup ユーザーがログアウトしたり、ターミナルが閉じられたりした後でも、コマンドまたはスクリプトが実行し続けるようにするために使用されます。ユーザーの介入なしにアクティブなままである必要がある長時間実行プロセスに不可欠です。

nohup out ファイルとは何ですか

nohup.out ファイルは nohup がコマンドの標準出力と標準エラーをリダイレクトするデフォルト出力ファイルです。他の出力ファイルが指定されていない場合、コマンドの出力は nohup.out カレントディレクトリ内。

共有

ブログから最新記事

読み続ける。

Cosmos Cloudで実行できる最高のセルフホストアプリ - Cosmosダッシュボード周辺のアプリパネル付きカバー画像。
サーバー及びOS

Cosmos Cloudで実行できる最高のセルフホストアプリ: ファイル、メディア、パスワード管理、自動化など

Maybe - Cosmos Cloudをセットアップ済みで、どのアプリが相性良いか確認したい場合、またはCosmosを決めきれずに相性を見たい場合。

ニック・シルバーニック・シルバー 16分で読む
Dockerアプリ管理向けPortainer vs Cosmos Cloud - ハイブリッドセットアップ図とネオン操作ブロック付きカバー。
サーバー及びOS

Portainer vs Cosmos Cloud: Dockerアプリ管理に最適な選択肢

Dockerの基本を理解していて、成長するアプリスタックをより簡潔に実行する方法を探しているなら、Portainer vs Cosmos Cloudの簡潔な回答はこちら。Portainerはより直接的な制御に優れています。

ニック・シルバーニック・シルバー 14分読む
Cosmos Cloud vs CasaOS vs Umbrel - 3つのセルフホストパスが1つの抽象的なクラウドネットワーク世界の中に表示される機能図。
サーバー及びOS

Cosmos Cloud vs CasaOS vs Umbrel: あなたのセットアップに最適なセルフホストプラットフォーム

簡潔に言うと、CasaOSは最も始めやすく、Umbrelは最もクリーンなキュレーション感があり、ドメイン管理をより細かく制御したい場合はCosmos Cloudが適切です。

ニック・シルバーニック・シルバー 11分の読み取り

デプロイの準備はできていますか? $2.48/月からの価格

2008年創業の独立系クラウド。AMD EPYC、NVMe、40 Gbps。14日間返金保証。