背景スクリプトをどこに置くのですか?

背景スクリプトをどこに置くのですか?

バックグラウンドで実行し続けたいスクリプトがありますが、どこで起動するのかわかりません。

これを に入れると.bashrc複数回実行されます (ログインするたびに 1 回ずつ)。

これは、ユーザーがログインしている間に実行したいがユーザーごとに何度も実行したくない無限ループです。

ベストアンサー1

スクリプトはインスタンスが1つしかないことを確認する必要があります。次のようにしてみてください。

#!/bin/bash

mkdir ~/.lock_script || exit
trap "rmdir ~/.lock_script" EXIT

while true
do
    # Do whatever the script does continuously, here....
    #
done

このtrapコマンドは終了時にクリーンアップを担当するため、スクリプトが終了または終了してもクリーンアップされます。どのプロセスもTERM信号(信号9)をトラップ(キャッチ)できないため、kill -9スクリプトを実行するとそれ自体がクリーンアップされません。

カーネルに関する限り、mkdirはアトミックアクションです。 mkdirが成功しなかった場合(ディレクトリがすでに存在する場合)、コマンドはエラーを返し、それによってコマンドの後半が実行されます(例:終了)。

コマンドを「mkdir or else exit」として読み込むことができます。ここでより良い説明があります。http://initialprogramload.blogspot.com/2008/11/single-script-instance.html

また、この方法は使用しないことをお勧めします。while true可能であれば、目的のタスクを実行する別の方法を見つけてください。

おすすめ記事