メモ > サーバ > 各論: エトセトラ > バックグラウンドで処理を実行する(簡易な方法)
バックグラウンドで処理を実行する(簡易な方法)
プログラムを実行する際に & を付けると、バックグラウンドで実行できる
プログラムを停止したい場合、kill で該当のプログラムを停止する
以下は挙動を確認するための簡易なプログラム
$ vi hello.sh
以下のようにすると通常実行できる
1秒ごとに「Hello World.」というテキストが hello.log に出力される
「Ctrl+C」でキャンセルできる
#!/bin/bash
while true
do
echo "Hello World." >> hello.log
sleep 1
done
$ chmod 0755 hello.sh
$ ./hello.sh
Hello World.
Hello World.
Hello World.
Hello World.
Hello World.
以下のように & を付けると、バックグラウンドで実行される
psコマンドで実行を確認できる
$ ./hello.sh &
[1] 5412
$ ps aux | grep hello
pi 5412 0.0 0.0 4496 2916 pts/0 S 18:18 0:00 /bin/bash ./hello.sh
pi 5501 0.0 0.0 4016 612 pts/0 S+ 18:19 0:00 grep --color=auto hello
$ kill 5412
以下のように nohup も付けておくと、ユーザがログアウトしても処理が維持される
また、nohup を付けた場合は同階層の nohup.out にログが出力される
この場合も、プログラムの停止は kill で行う
$ nohup ./hello.sh &
[1] 5543
以下のようにすると、nohup.log にechoの内容が表示され、error.log にエラーが出力される
$ vi hello.sh
Linuxコマンド(Bash)でバックグラウンド実行する方法のまとめメモ - Qiita
https://qiita.com/inosy22/items/341cfc589494b8211844
プロセス管理: nohup, disown, kill - Heavy Watal
https://heavywatal.github.io/dev/nohup.html
【 nohup 】コマンド――端末を閉じてもログアウトしても処理を続ける:Linux基本コマンドTips(137) - @IT
https://www.atmarkit.co.jp/ait/articles/1708/24/news022.html
サーバの接続切れてもコマンドを実行する ~ nohup - 忘れないようにメモっとく
http://akiniwa.hatenablog.jp/entry/2013/08/26/163655
nohup コマンドで任意の場所にログを出力する方法 - 約束の地
https://obel.hatenablog.jp/entry/20180208/1518054980
SSH 接続先でサーバを立ち上げっぱなしにしてログアウトするための Bash の書き方 - Corredor
https://neos21.hatenablog.com/entry/2018/09/26/080000
nohupで実行したコマンドの出力をnohup.out以外のファイルに保存する
https://kazmax.zpp.jp/linux/nohup_stdout.html
nohup コマンド - Qiita
https://qiita.com/sinsengumi/items/759ce48e844a46ed8091
nohupとリダイレクトを自分のために調べてみた - Qiita
https://qiita.com/TsuyoshiUshio@github/items/6ef090795eae6ffaa903
Linux: nohupと&の違い - Qiita
https://qiita.com/wifecooky/items/a4856e200212858f8c99
以下によると、nohupは「デーモンとして実行するための貧弱な方法」とされている
デーモンについては、このファイル内にある「バックグラウンドで処理を実行する(サービス)」も参照
unix - What's the difference between nohup and a daemon? - Stack Overflow
https://stackoverflow.com/questions/958249/whats-the-difference-between-nohup-and-a-daemon#!/bin/bash
while true
do
echo "Hello World."
sleep 1
done
$ nohup ./hello.sh > nohup.log 2> error.log &
[1] 5780