操作を自動化するには、makeが便利です。
クリーンナップをする場合、あってもなくてもプロセスをkillするような操作をすることがあります。
例えば、aaaaとbbbbという2つのプロセスをkillする必要があるが、aaaaプロセスが既に終了しているというケースです。
この場合、下記のように書くとbbbbプロセスが動いていてもkillせず、bbbbプロセスが残ってしまいます。
$ cat Makefile claen: pkill -KILL aaaa pkill -KILL bbbb $ make pkill -KILL aaaa make: *** [claen] エラー 1 $
そこで、pkillのステータスを無視するように設定します。
$ cat Makefile claen: -pkill -KILL aaaa -pkill -KILL bbbb $ make pkill -KILL aaaa make: [claen] エラー 1 (無視されました) pkill -KILL bbbb make: [claen] エラー 1 (無視されました) $
これで、想定の処理をするようになりましたが、この出力だと正常なのか異常なのかよくわかりません。
エラーの出力は、makeに-sオプションを付けるか、Makefileに.SILENTというターゲットを追加することで抑制できます。
$ cat Makefile .SILENT: claen: -pkill -KILL aaaa -pkill -KILL bbbb $ make $
これは、これで良いのですがやっぱり、何をしているか教えてほしいです。
$ cat Makefile .SILENT: claen: echo cleanup process echo kill aaaa -pkill -KILL aaaa echo kill bbbb -pkill -KILL bbbb $ make cleanup process kill aaaa kill bbbb $