『輪廻のラグランジェ』season1まるっ!わかり ストーリーガイド
『輪廻のラグランジェ』(2012)
1話見ただけでは、ロボットのカッコよさがさっぱり分からないし、ジャージ部魂もよく分からないし、見どころが見つからず、 全然入ってきませんでした。
逆に、面白いところを探すために見る、ってモチベーションが生まれてしまったので、最後まで見るつもりではいます。
linuxではプロセスの輪廻はありません。killしたプロセスが勝手に生まれ変わったりしたら大変。OSの何を信じたら良いのか分かりませんね。親プロセスが子を生成し、親が存在するからこそ、子も存在できるのです。
今回は、親プロセスIDを追っかけます。
まず適当にプロセスを作ります。sleepコマンドを裏で動かします。
takk@deb9:~$ sleep 10000 &
今バックグラウンドで実行したsleepコマンドがpsで表示されるか確認してみましょう。
takk@deb9:~$ ps PID TTY TIME CMD 14801 pts/0 00:00:00 bash 14906 pts/0 00:00:00 sleep 14968 pts/0 00:00:00 ps takk@deb9:~$
次は全プロセスをID付きで表示してみます。
takk@deb9:~$ ps alx F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 20 0 204764 7064 - Ss ? 0:07 /sbin/init 1 0 2 0 20 0 0 0 - S ? 0:00 [kthreadd] 1 0 3 2 20 0 0 0 - S ? 0:05 [ksoftirqd/ 省略 1 0 14899 2 20 0 0 0 - S ? 0:00 [kworker/u2 0 1000 14906 14801 20 0 5320 676 - S pts/0 0:00 sleep 10000 1 0 14951 2 20 0 0 0 - S ? 0:00 [kworker/0: 1 0 14967 2 20 0 0 0 - S ? 0:00 [kworker/0: 0 1000 14970 14801 20 0 29344 1620 - R+ pts/0 0:00 ps alx 0 1000 17128 1396 20 0 831376 129404 SyS_po Sl ? 1:51 /usr/bin/pe 5 0 29539 1 20 0 272872 29120 - Ss ? 0:16 /usr/sbin/a 4 118 31869 1 20 0 325584 61828 - Ssl ? 10:29 /usr/bin/mo takk@deb9:~$
3列目がPID(プロセスID)、4列目がPPID(親プロセスのID)です。
awkでフィルタリングします。
takk@deb9:~$ ps alx | awk '{print "pid=",$3,"ppid=",$4}'
pid= PID ppid= PPID
pid= 1 ppid= 0
pid= 2 ppid= 0
pid= 3 ppid= 2
省略
pid= 15168 ppid= 14801
pid= 17128 ppid= 1396
pid= 29539 ppid= 1
pid= 31869 ppid= 1
takk@deb9:~$
awkの連想配列を使って、親プロセスを辿ってみましょう。すべての親は1番なので、1番になるまで繰り返しする処理です。
takk@deb9:~$ cat -n findfather.sh
1 #!/bin/bash
2 ps alx | awk '
3 {
4 parent[$3]=$4
5 }
6
7 END{
8 pid=14906
9 while(pid != 1){
10 pid=parent[pid]
11 printf("-> %d", pid)
12 }
13 print ""
14 }
15 '
takk@deb9:~$



コメント