- 2013-7-23
- Linux
あるコマンド実行(プログラム実行など)をプロセスが殺されるまで
永遠に実行したい時の処理です。
以下のシェルファイルに実行したいコマンドを
(# 実行したいコマンド)の部分を書き換えてください。
sample.sh
#!/bin/bash while true do # 実行したいコマンド done
たとえば、ずっとHello, World!を出力し続けたい
(嫌がらせでもない限りないと思いますけど)
#!/bin/bash while true do echo "Hello, World" done
スクレイピングするpythonファイル(main.py)をずっと実行させたい
(余談:相手のサーバに負荷を掛けないようアクセス時間と回数には注意しましょう)
#!/bin/bash while true do python main.py done
後は、ファイルに実行権限を持たせて
$ chmod 777 sample.sh
実行するだけ
$ ./sample.sh
SSH(レンタルサーバとかVPSとか)でログインしている場合、
ログアウトするとプロセスが停止してしまいますので
nohupで実行しましょう
$ nohup ./sample.sh
プロセスを止めたい時は「ps」コマンドでプロセスを探して「kill」コマンドで
プロセスを殺しましょう。
killするときはプロセス番号をよく確認から「Enter」を押しましょう。
$ ps -aux | grep sample.sh Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ user 16949 0.0 0.0 106088 1168 ? S Jul21 0:00 /bin/bash ./sample.sh $ $ sudo kill -9 16949
ここで、注意したいのが、シェルが動いているプロセスだけ止めても
実行中のコマンドの処理は止まらないので、
実行するコマンドの処理が終わるまで実行されます。
実行中のコマンドもすぐ止めたい時は、
実行中のコマンドのプロセスも探してkillしてください。
たとえば、python main.pyなら
$ ps -aux | grep python Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ user 16950 0.3 0.7 217468 14236 ? S Jul21 8:19 python main.py $ $ sudo kill -9 16950
ということでシェルの無限ループでした。。。
Sponsored link
便利な商品紹介
オムロン クッションマッサージャ(マッサージクッション) HM-341-BG ベージュ意外と気持ち良い
富士通 FUJITSU ScanSnap iX500 (A4/両面/Wi-Fi対応) FI-IX500A自炊するならやっぱり持っておきたい。せっかくスキャンするならOCR付きにしておくに越したことはない。