cronから呼び出されたかのようにコマンドを実行する方法

cronから呼び出されたかのようにコマンドを実行する方法

スクリプトを作成し、それをcronジョブとして設定しました。ただし、環境変数の違いにより正しく動作しません。

この場合は、少し変更してcrontab -eクローンの作業時間を分単位で設定し、次の分待って結果を表示します。私はこれが完全にとんでもないアプローチだと思いますが、より良い方法がわかりません。

クローンジョブで呼び出されるようにスクリプトを実行する方法がある場合は、その方法を使用します。

これを行う方法を知っている人はいますか?

答え1

逆のアプローチは次のとおりです。ログイン環境を使用するようにcronの実行を強制します。

bash -lc "your_command"

Bashのマニュアルから:

-c string     If the -c option is present, then commands are read from string.
              If there are arguments after the string, they are assigned to the
               positional parameters, starting with $0.
-l            Make bash act as if it had been invoked as a login shell
               (see INVOCATION below).

呼ぶ(少し剥がれた部分):

bashが--loginオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まず/ etc / profileファイル(ファイルがある場合)からコマンドを読み取り、実行します。ファイルを読み込んだら、~/.bash_profile、~/.bash_login、~/.profile を順番に探して、存在して読み取れる最初のファイルからコマンドを読み込んで実行します。この動作は、シェルの起動時に --noprofile オプションを使用して無効にできます。

もっと知りたいですか?

答え2

別の方法は次のとおりです。

/usr/bin/env - 環境を無視注文

マニュアルページからenv

-i, --ignore-environment

空の環境で起動

答え3

より良い方法はを使用することですat

ここにいくつかの例があります。

 echo $PWD/script.sh | at now

または

 echo "reboot" | at 5:00

または

 echo "mail -s test user@host" | at now + 1 hour

日付/時刻は次のとおりですはい

関連情報