質問編集履歴

2 解決まとめ

hanayamaKaoru

hanayamaKaoru score 36

2016/12/03 03:21  投稿

killしたプロセスがすぐに別のPIDで再開される
###前提・実現したいこと
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コマンドしか表示されませんでした
0. 3
~/Library/LaunchAgents/com.usbmux.iproxy.plist
にて記述した
<key>RunAtLoad</key>
   <true/>
   <key>KeepAlive</key>
   <true/>
についてですが同様にpsコマンドで調べたところそのようなプロセスは存在しませんでした
iproxyコマンドがあるフォルダ/usr/local/bin/でも調べて見ましたが
そのようなコマンドは存在しませんでした
0. 4
当たり前ですが、/usr/local/bin/iproxyをゴミ箱に送り
killコマンドを実行すればプロセスは再開されることはありません
しかし、ゴミ箱からiproxyを戻すと数秒後にはプロセスが再開されています
0. 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
```
0. 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
  • UNIX

    513 questions

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

  • MacOS(OSX)

    3275 questions

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

1 指摘事項を試行

hanayamaKaoru

hanayamaKaoru score 36

2016/12/01 01:19  投稿

killしたプロセスがすぐに別のPIDで再開される
###前提・実現したいこと
SSH Over USB(以下のリンク) を行うためにポートを指定し、プロセスを開始したのですがkillしてもすぐに再開しportを使用し続けています
どのようにすれば再開させずに終了することができますか
初歩的な質問だとは思いますが回答お願いします
http://iphonedevwiki.net/index.php/SSH_Over_USB
 
###補足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コマンドしか表示されませんでした  
 
0. 3  
 
~/Library/LaunchAgents/com.usbmux.iproxy.plist  
にて記述した  
<key>RunAtLoad</key>  
   <true/>  
   <key>KeepAlive</key>  
   <true/>  
についてですが同様にpsコマンドで調べたところそのようなプロセスは存在しませんでした  
 
iproxyコマンドがあるフォルダ/usr/local/bin/でも調べて見ましたが  
そのようなコマンドは存在しませんでした  
 
0. 4  
 
当たり前ですが、/usr/local/bin/iproxyをゴミ箱に送り  
killコマンドを実行すればプロセスは再開されることはありません  
しかし、ゴミ箱からiproxyを戻すと数秒後にはプロセスが再開されています  
 
0. 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  
```  
 
0. 6  
 
username/usbmuxd-1.0.8/tools/iproxy.c  
の中身を確認しましたが  
実行引数から引数を受け取り、ソケットを確立しwhile(1)で無限ループさせていましたが  
その中でコマンドを受け取り停止させるような記述はなかったのでiproxyに命令してプロセスを終了させることはできないと思います  
 
###発生している問題・エラーメッセージ
killしたプロセスがすぐにぺつのPIDで再開される
###該当のソースコード
ポートの確保
```
$ brew install opam
$ opam install usbmux
#usbmuxから得たiprocyを使用しポート2222を確保
#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
  • UNIX

    513 questions

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

  • MacOS(OSX)

    3275 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る