タグ付けされた質問 「job-control」

シェルによってジョブを制御できるさまざまな方法に関する質問:実行の一時停止、再開、終了など

2
プロセスの親プロセスを変更しますか?
プロセスの親プロセスを変更することは可能ですか?はいの場合、どのように? 例えば、 セッションとその中で実行されているプロセスを異なるシェルプロセスにどのようscreenにアタッチするのscreenですか?親プロセスに変更はありますか? プログラムが実行されているシェルプロセスを変更する他の方法を聞いたようですが、覚えていません。プログラムの親プロセスの変更もありますか? disown名前disownがそれを暗示しているという理由だけで、プロセスがプロセスの親プロセスを変更すると考えました。しかし、私はそれが真実ではないことがわかりました。 Emacsクライアントは、異なる端末タブでemacsサーバーに接続できます。親プロセスに変更はありますか?

1
bashのようにプロセスを中断および再開する方法
この質問はフォローアップです:プロセスを中断および再開する方法 私はgnome-terminalのbashセッションからfirefoxを起動しました。 プロセスツリーは次のようになります。 $ ps -e -o pid,ppid,cmd -H 1828 1 gnome-terminal 26677 1828 bash 27980 26677 /bin/sh /usr/lib/firefox-3.6.15/firefox 27985 27980 /bin/sh /usr/lib/firefox-3.6.15/run-mozilla.sh /usr/lib/firefox-3.6.15/firefox-bin 27989 27985 /usr/lib/firefox-3.6.15/firefox-bin 28012 27989 /usr/lib/firefox-3.6.15/plugin-container /usr/lib/adobe-flashplugin/libflashplayer.so 27989 plugin true CTRL+Zbashでヒットすると、firefoxが中断されます。コマンドbg(またはfg)を発行すると、firefoxが再開されます。これは予想どおりです。 kill -s SIGTSTP 27980別のターミナルでコマンドを発行する[1]+ Stopped firefoxと、最初のターミナルで行を印刷します(ちょうどヒットしたときのようにCTRL+Z)が、firefoxを中断しません。シェルスクリプトを一時停止するだけだと思います。 kill -s SIGTSTP 27989別の端末でコマンド(PIDに注意)を発行すると、firefoxが中断されます。最初の端末はこれに注意しません。 bashはプロセスツリー全体をどのように一時停止しますか?ツリーとすべての子をSIGTSTPだけトラバースしますか?

1
マイナスおよびプラスサインインジョブプロセス
これらのコマンドはバックグラウンドで実行されています: foo @ contoso〜$ sleep 30& foo @ contoso〜$ sleep 60& foo @ contoso〜$ sleep 90& ジョブプロセス実行後のマイナス記号とプラス記号とは何ですか? foo @ contoso〜$ jobs [1]スリープ30および [2]-ランニングスリープ60& [3] +ランニングスリープ90&


4
bashでのジョブ制御の無効化(CTRL-Z)
偶然にCTRL+ を押しZて、アプリケーションがバックグラウンドに表示されなくなることがあります。私は知っています、それをで戻すことができるfgので、それほど大したことではありません。しかし、job controlとにかくこれをオフにすることについて疑問に思っています。私の人生の中で、必要になったときのことを思い出すことはできません。それは、過去からの遺物として私に見えるだけです。 job control完全に無効にしても大丈夫ですか?または、何か不足していますか?この機能は役に立ちますか?どうすれば無効にできますか.bashrc 更新: 私が試してみましたset +m@Falsenamesによって示唆されているように。ただし、これはターミナルで入力した場合にのみ機能します。set +m私に追加し.bashrcても効果はありません。

2
終了したバックグラウンドジョブステータスの「Exit 2」とは何ですか?
私はファイルにいくつかのデータ(いくつかのディレクトリからの* conf)を入れる演習を行っており、これをバックグラウンドで行う必要があります。私はそれをしました、そして私は出力メッセージの意味が何であるか疑問に思っています: [A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 & Enterはこの行を上昇させます: [1] 2533 どういう意味ですか?他のEnterの後に、別のメッセージが表示されます [A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 どういう意味ですか?「2番出口」とは? チェック結果を入力してください-問題はないようです。 [A@localhost tests]$ [A@localhost tests]$ ls -l test1_6_conf.txt -rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt [A@localhost tests]$ CentOS …

4
プロセスをバックグラウンドに移動し、その出力を停止するにはどうすればよいですか?
ターミナルでプロセスを開始し、実行中に標準エラーに出力を送信するとします。プロセスをバックグラウンドに移動し、同時に沈黙させたい。 プロセスを停止し、それが使用して再起動せずにこれを行う方法がある&とは> /dev/null 2>&1?bg ターゲットプロセスの出力記述子を実行して変更できるコマンドがあるかどうかと思います。

4
コマンドのバックグラウンドでパイプされたシーケンス内の任意のコマンドのPIDを取得します
でbash、私が実行すると: cmd1 | cmd2 | ... | cmdi | ... | cmdn & どこcmd{1..n}明瞭ではないかもしれないが、どのように私はのPIDを得るのですかcmdi?または、cmdiプロセスにどのように通知できますか?(例えば、それを送信SIGUSR1?) pkill/ pgrep、pidofなどの良い答えのように見ていない、の他のインスタンスので、cmdi多分、実行している同じパイプラインの一部として含みます。jobs -pのPID cmd1を私に与えます。 iの何でもかまいません{1..n}。
11 bash  shell  pipe  job-control 

1
ノンブロッキングbashコマンド
次のbashスクリプトがあるとします。 #!/bin/sh gedit rm *.temp を使用して実行するとsh ./test.sh、geditポップアップが表示されますが、rmを閉じるまでパーツは実行されませんgedit。 geditが閉じていなくてもスクリプトを実行し続けたいです。のようにgeditbashの実行をブロックしていません。 私が挙げた例はほんの一例です(rm最初の例は実際の状況では機能しません)。
11 bash  job-control 

1
Bashのコマンドリストの残りをキャンセルするにはどうすればよいですか?
Bashでは、たまにコマンドのリストを入力してを押しますがEnter、後でリストの最後の方にあるコマンドに誤りがあることに気づきます。Ctrl+ を押すCと、現在実行中のコマンドが終了し、残りのリストがキャンセルされることがわかっています。現在実行中のコマンドを終了せずにリストの残りをキャンセルする方法はありますか? たとえば、次のように入力したとしましょう foo; bar または foo && bar where fooは、実行を中断しないことが非常に重要である長期実行コマンドであり、bar不可逆的で不要な処理を実行します(たとえば、shutdown -h nowまたはrm -rf /)。fooがまだ実行されている間に、シェルにfoo終了させるがbar後で実行しないように指示する一般的な方法はありますか?(はい、bar実行可能ではないようにアクセス許可を変更することはできますが、それまでの間使用したいbarような場合は特に便利ではrmありません。所有していないbar場合やbar組み込みの場合は機能しません。)

1
バックグラウンドプロセスが自発的に停止することがあるのはなぜですか?
時々、bgbashでプロセスをバックグラウンド化した後、同じシェルでEnterキーを押してプロンプトを再表示するときがあります(バックグラウンドプロセスからの出力が表示されたときに、まだbashであることを確認するため)。バックグラウンドプロセスが自然に停止するようです。 bgもう一度やると、同じ問題が再発します。 それを修正する唯一の方法はようfgです。 なぜこれが起こるのですか?

3
別のシェル(ターミナルウィンドウまたはタブ)で開始されたジョブを強制終了するにはどうすればよいですか?
プロセスを開始し、ターミナルウィンドウでそれをバックグラウンド化する場合(たとえばping google.com &)、それを使用kill %1してプロセスを強制終了できます(ジョブ1と想定)。 ただし、別のターミナルウィンドウ(またはタブ)を開くと、バックグラウンドプロセスはリストに表示されjobsず、を使用して直接終了することはできませんkill。 別のターミナルウィンドウまたはタブからこのプロセスを強制終了することはできますか? 注:私はXfceターミナルエミュレータ0.4.3とbashを使用しています(ただし、ソリューションが別の一般的なシェルに存在するがbashではない場合は、それにオープンしています)


3
背景、ゾンビ、デーモン、cttyなし-これらの概念は関連していますか?
-どのようにこれらのプロセスの概念は一緒に関連してbackground、zombie、daemonとwithout controlling terminal? 特にのコンセプトではcontrolling terminal、彼らはどこか近づいているように感じますが、Linuxについての記事を読む子供に嘘をつくことなく説明する必要がある場合など、ストーリーを伝えるための情報はまだあまりありません。 更新#1:たとえば(それが本当かどうかはわかりません) background-- 親なしで残されたバックグラウンドプロセスであるため、zombieフォアグラウンドプロセスはになれませんzombiezombie daemon-- without cttyすべてdaemonsがなしcttyで実行されますが、すべてのプロセスcttyがdaemons background- daemon- background process再び対話的に実行するために取得することができ、daemon is not zombie- without ctty- zombieがある場合に無関心であるcttyそれに接続されているかどうか background- without ctty- processes彼らが持っている一方で、バックグラウンドに送られctty、そして場合はデーモンやダイなっcttyそれらから取られます

4
SIGKILLが停止したプログラムを終了しないのはなぜですか(はい)。
私はUbuntu 14.04を使用していますが、理解できないように見えるこの現象が発生しています。 yesコマンドを実行します(デフォルトのシェル:Bashで) 入力CtrlZして停止yes を実行しますjobs。出力: [1]+ Stopped yes 実行kill -9 %1して停止しyesます。出力: [1]+ Stopped yes を実行しますjobs。出力: [1]+ Stopped yes これは3.16.0-30-generic、Parallels仮想マシンで実行されているUbuntuにあります。 kill -9コマンドでyesコマンドが終了しなかったのはなぜですか?SIGKILLを捕まえることも無視することもできないと思いましたか?そして、どうすればyesコマンドを終了できますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.