シェル 無限ループ プロセスの永遠実行

あるコマンド実行(プログラム実行など)をプロセスが殺されるまで
永遠に実行したい時の処理です。

以下のシェルファイルに実行したいコマンドを
(# 実行したいコマンド)の部分を書き換えてください。

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

loop1

後は、ファイルに実行権限を持たせて

$ 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付きにしておくに越したことはない。

Zenback

コメント

ブックマーク

ブログランキング

ページ上部へ戻る