問題タブ [job-control]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - bash スクリプトでジョブ制御を使用できないのはなぜですか?
スクリプトでは、ジョブ制御がありません (そして、それを有効にしようとするのはばかげています)
これを聞いたのはこれが初めてで、ジョブ制御の bash.info セクション (第 7 章) を調べたところ、これらのアサーションのいずれについても言及されていませんでした。[更新: man ページは少し良くなり、「典型的な」使用方法、デフォルト設定、および端末 I/O について言及されていますが、スクリプトに対してジョブ制御が特に不適切である理由については言及されていません。]
では、なぜスクリプトベースのジョブ制御が機能しないのでしょうか? また、何が悪い習慣 (別名「ばか」) になるのでしょうか?
編集:問題のスクリプトは、バックグラウンド プロセスを開始し、2 番目のバックグラウンド プロセスを開始してから、最初のプロセスをフォアグラウンドに戻そうとします。これにより、(直接実行されているかのように) 通常のターミナル I/O が得られ、その後、リダイレクトすることができます。スクリプトの外側。バックグラウンドプロセスに対してそれを行うことはできません。
他の質問に対する受け入れられた回答で指摘されているように、ジョブ制御を試行せずにその特定の問題を解決する他のスクリプトが存在します。罰金。そして、お粗末なスクリプトは、ハードコードされたジョブ番号を使用しています — 明らかにまずいです。しかし、ジョブ コントロールが根本的に運命づけられたアプローチであるかどうかを理解しようとしています。まだまだ活躍できそうです…。
bash - プロセスを正常にシャットダウンするには、どのような順序でシグナルを送信すればよいですか?
別の質問のこの回答に対するコメントで、コメント投稿者は次のように述べています。
どうしても必要な場合を除き、kill -9 を使用しないでください。SIGKILL はトラップできないため、強制終了されたプログラムは一時ファイルを消去するなどのシャットダウン ルーチンを実行できません。最初に HUP (1)、次に INT (2)、次に QUIT (3) を試してください。
については原則として同意しますSIGKILL
が、残りはニュースです。によって送信されるデフォルトのシグナルが であることを考えるとkill
、SIGTERM
任意のプロセスを正常にシャットダウンするために最も一般的に期待されるシグナルであると思います。SIGHUP
また、デーモンに「構成ファイルを再読み込みする」ように指示するなど、終了しない理由で使用されているのを見てきました。そして、SIGINT
(通常は Ctrl-C で得られるのと同じ割り込みですよね?) 本来あるべきほど広くサポートされていないか、かなり不自然に終了しているように思えます。
SIGKILL
それが最後の手段であることを考えると、任意のプロセスを可能な限り正常にシャットダウンするには、どのシグナルをどのような順序で送信する必要がありますか?
可能であれば、裏付けとなる事実 (個人的な好みや意見を超えて) または参照を使用して回答を裏付けてください。
注: bash/Cygwin を考慮したベスト プラクティスに特に関心があります。
編集:これまでのところ、INT や QUIT については誰も言及していないようで、HUP についての言及は限られています。これらを整然としたプロセスキルに含める理由はありますか?
zsh - Zshのジョブ数を示すために右プロンプトに「X」を付けることができません
この記事のコードは私には機能しません。すべてのコードを.zshrcに貼り付けました。
私の中には次のものがあります.zshrc
それはあなたが仕事を持っているかどうかを示すべきです。しかし、それは私にとってはそれをしません。
実行中のジョブがあることを示すために、正しいプロンプトにXを表示したいと思います。
Zshに複数のジョブがある場合、Xを表示する正しいプロンプトをどのように作成できますか?
bash - lynx -dump をバックグラウンドで実行しますか?
mystuff
次のような行を含むbashスクリプトがあります
スクリプトは、非対話的に実行する場合を除いて、この部分を含めて正常に動作します。
ジョブが停止されます。オオヤマネコが犯人だとわかりました。このコマンドを bash プロンプトから直接実行しても、ジョブはすぐに停止します。
lynx がバックグラウンドで実行されないのはなぜですか? どうすればこれを修正できますか?
編集:
生の HTML を解析する必要がないため、lynx を使用しています。wget
との違いlynx -dump
は、lynx が HTML をレンダリングすることです。すべてのタグを非表示にしたり、テキストを適切に配置したりします。
linux - linux: バックグラウンド タスクを強制終了するようにしました
Linuxで最後に生成されたバックグラウンドタスクを強制終了するにはどうすればよいですか?
例:
php - PHP には bash のようなジョブ制御がありますか?
PHP は bash のアンパサンドのようなもの (フォーク) をサポートしていますか? 2 つの Web ページで同時に cURL を使用したいとしましょう。スクリプトは最初の cURL コマンドが終了するまで待機する必要がありません。PHP でそれを実現するにはどうすればよいでしょうか? bashで次のようなもの:
bash - /etc/inittab から Linux シェルを起動する方法
/etc/inittab には 2 つのエントリがありました。
rcS は、通常はアプリケーションを開始するシェル スクリプトですが、特別なケースでは、アプリケーションを終了するために「return」を呼び出します。これにより、メンテナンスを行うことができるシェル プロンプトが表示されるため、明らかに /bin/sh が tty を引き継ぐことができます。
inittab は次のようになります。
rcS スクリプトで "/bin/bash -i" を実行してシェルを開始します。これは、通常は使用されない 2 番目のシェル (メモリの制約のため) を常に実行したくないためです。
しかし、作成された bash にはジョブ制御機能がなく、非常に制限されています。
私の質問は、以前のソリューションで処理された init と同じ方法でシェルを作成 (およびおそらく rcS スクリプトを終了) して、ジョブ制御を備えたシェルを再び取得することはできますか?
shell - ジョブ制御を使用して一連のプロセスをプログラムで開始する
私が開発している複雑な Web アプリを実行するために必要な一連の 7 つのプロセスがあります。私は通常、これらのプロセスを次のように手動で開始します。
term.tail は、必要なときにこれらのプロセスの出力を確認するために、tail を実行したままにしておく fifo パイプです。
現在のシェル内ですべてのプロセスを起動する方法を見つけたいのですが、通常のスクリプト (シェルまたはルビー) は独自のシェルで実行されます。回避策はありますか?
OSXのiTerm2でzshを使用しています。
linux - フォアグラウンドジョブとバックグラウンドジョブの違い
Linux では、フォアグラウンド ジョブとバックグラウンド ジョブの違いは何ですか?