質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

15147閲覧

killしたプロセスがすぐに別のPIDで再開される

hanayamaKaoru

総合スコア36

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2016/11/29 14:45

編集2016/12/02 18:21

###前提・実現したいこと
SSH Over USB(以下のリンク) を行うためにポートを指定し、プロセスを開始したのですがkillしてもすぐに再開しportを使用し続けています
どのようにすれば再開させずに終了することができますか
初歩的な質問だとは思いますが回答お願いします

http://iphonedevwiki.net/index.php/SSH_Over_USB

###結論
解決策1
対象プロセスについての設定ファイルがあればそれを編集する
自分の場合は以下のように目的プロセスの.plistを編集し、再起動を行った
~/Library/LaunchAgents/com.usbmux.iproxy.plist
にて記述した

<key>RunAtLoad</key>
<false/>
<key>KeepAlive</key>
<false/>

解決策2
対象のプロセスが親プロセスから起動されている場合
親プロセスをkill

手順1.目的のプロセスID(PID)と親プロセスのID(PPID)を確認する
$ ps axj |grep "プロセス名などで検索結果を絞る"
手順2.親プロセスをkill
$sudo kill -9 先ほど確認したPPID

###補足1
0. 1

$ ps axj |grep 2222 USER PID PPID PGID SESS JOBC STAT TT TIME COMMAND name 2539 1 2539 0 1 S ?? 0:00.00 /usr/local/bin/iproxy 2222 22

PID = PGID =2539 (iproxy)
PPID = 1 (root)

親プロセスはない(?)ようです
0. 2

$ syslog -B|grep iproxy

syslogコマンドやコンソールでiproxyについて調べましが
自らが行なったkillコマンドしか表示されませんでした

  1. 3

~/Library/LaunchAgents/com.usbmux.iproxy.plist
にて記述した
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
についてですが同様にpsコマンドで調べたところそのようなプロセスは存在しませんでした

iproxyコマンドがあるフォルダ/usr/local/bin/でも調べて見ましたが
そのようなコマンドは存在しませんでした

  1. 4

当たり前ですが、/usr/local/bin/iproxyをゴミ箱に送り
killコマンドを実行すればプロセスは再開されることはありません
しかし、ゴミ箱からiproxyを戻すと数秒後にはプロセスが再開されています

  1. 5

どのファイルから使用されているかを追うことを試みましたが..よくわかりませんでした

$ lsof /usr/local/bin/iproxy COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME iproxy 2944 name txt REG 1,4 19076 3809280 /usr/local/bin/../Cellar/usbmuxd/1.0.10_1/bin/iproxy
  1. 6

username/usbmuxd-1.0.8/tools/iproxy.c
の中身を確認しましたが
実行引数から引数を受け取り、ソケットを確立しwhile(1)で無限ループさせていましたが
その中でコマンドを受け取り停止させるような記述はなかったのでiproxyに命令してプロセスを終了させることはできないと思います

###課題解決後の補足
0. 1
今回のプロセス.plistは(または共通して?)はOSのブート時に一度だけ読みこまれるようだ

そもそも、誰が読み込み、利用しているのか
それを調べるために以下のコマンドが役に立つかもしれない
*'com.usbmux.iproxy.plist'はプロセスの設定ファイルなので自分が対象としているプロセスのものと置き換える

$find / 2> /dev/null -type f | xargs -n 10 grep 2> /dev/null -n 'com.usbmux.iproxy.plist' --color

'com.usbmux.iproxy.plist'を利用して対象プロセスを起動しているファイルが見つかるかもしれない

ブート時に自動的に読み込んでいるアプリケーションはシステム環境設定から
確認や操作を行うことができるが
アプリではない自動的に読み込まれるファイルはどこで確認すればいいのやら。。

###発生している問題・エラーメッセージ
killしたプロセスがすぐにぺつのPIDで再開される

###該当のソースコード
ポートの確保

$ brew install opam $ opam install usbmux #usbmuxから得たiproxyを使用しポート2222を確保 $ iproxy 2222 22

port2222を解放したい

$ sudo lsof -i :2222 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME iproxy 44351 name 3u IPv4 0xc2024dd01c677a2d 0t0 TCP localhost:rockwell-csp2 (LISTEN) $sudo kill -9 44351 $ sudo lsof -i :2222 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME iproxy 44445 name 3u IPv4 0xc2024dd015abd83d 0t0 TCP localhost:rockwell-csp2 (LISTEN)

###試したこと
別のコマンドでの表示

$ps ax |grep 2222 44445 ?? S 0:00.01 /usr/local/bin/iproxy 2222 22 44513 s001 S+ 0:00.01 grep 2222

/usr/local/bin/ に iproxyのコマンド格納されているようなので

$ ls *proxy idevicedebugserverproxy iproxy idevicenotificationproxy

と関連のありそなコマンドを調べてみましたが
プロセス終了に関連がありそうなコマンドはありませんでした

emacs iproxy

で内容を見てオプションをなどを調べようとしましたが
文字化け(?)でよくわかりませんでした

###補足情報(言語/FW/ツール等のバージョンなど)
ProductName: Mac OS X
ProductVersion: 10.12.1
BuildVersion: 16B2555

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

提示されたURLの通りにやったという事であれば、以下のオプションが効いてたりしないでしょうか。

<key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/>

RunAtLoadでOS起動時にiproxyも自動起動して、KeepAliveでプロセスが落ちても再起動がかかる、とか。

投稿2016/11/30 00:33

ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ynakano

2016/11/30 21:31

回答に記載した内容ですが、「その名称のプロセスやコマンド」がある訳ではないです。 設定ファイルから当該記述を削除してOSを再起動し、iproxyの起動→killをしてみて下さい。
guest

0

このケースに当てはまるかどうか分かりませんが、一般論としては「killしたプロセスがすぐに別のPIDで再開される」というのは、親が子の終了を監視して終了したら再度起動しているということでしょう。
ps axfで親子関係が図示されますので、親のプロセスを止めてください。

投稿2016/11/30 00:27

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問