シェル スクリプトで、Xterm -e コマンドを使用して、6 つの X ターミナルで 6 つのプログラムをバックグラウンドで実行しました。PS コマンドを使用すると、バックグラウンドで実行されている 6 つの Xterm プロセスを確認できますが、プログラムは確認できません。Top コマンドを使用すると、プログラムを確認できます。すべての x ターミナルとプログラムを強制終了するクリーンな方法はありますか?
私のスクリプト内の xterminal コマンドは次のとおりです。
xterm -e "script -c \"program\" outputfile" &
もう 1 つの問題は、プログラムの出力をファイルにキャプチャしようとしたのですが、何らかの理由でその一部しかキャプチャできないことです。最後&
に を削除すると、すべての出力をキャプチャできますが、プログラムはサーバーとして実行されているため、制御を取り戻すことができません。つまり、サーバーを強制終了しない限り終了しません。
答え1
ps
引数/オプションを指定しないと、現在の端末に接続されているプロセスのみが表示されます。新しい端末で実行するものはすべて、その pseudotty を制御端末としてxterm
使用します。xterm
通常、 を kill しxterm
てその中で実行されているプログラムを終了すれば、問題は解決します。
答え2
次の 3 つのリンクが興味深いかもしれません:
- pgrep と pkill- Solaris 専用ページ
- ウィンドウプロセス管理に関するこのページU&Lについて
- のプロセスチェーンドキュメントストアで