root
crontabにタスクを追加しました。
# crontab -l | tail -n 1
*/3,13,29,43 * * * * /root/bin/check_network.sh
#
ただし、通常のユーザーとして実行されているようですrwb
。
このrwb
アカウント(このroot
アカウントではありません)はジョブの失敗に関する電子メールを受け取り、失敗の理由は次のとおりです。
/root/bin/check_network.sh: line 26: iw: command not found
しかし、もちろんiw
そうでしたが、/use/sbin/iw
そうではありませんroot
でした$PATH
。rwb
どうなりますか? !ルートクローンジョブをどのように実行しますか?
修正する
コマンドをからに変更するとうまくいくように見えるので、iw
cronを実行するときに通常のbashウィンドウと比較すると/usr/sbin/iw
少し違いがあります。$PATH
ベストアンサー1
su
crontabを設定するときにrootを使用しましたか?
Debian 10 では、次のようにman crontab
言います。
su(8)はcrontabを混乱させる可能性があるため、su(8)内で実行している場合は常に-uオプションを使用して安全な場所に配置する必要があります。
su
Debian 10リリースでは、Debianはコードベースの以前のコマンドを削除し、shadow-utils
コードsu
ベースに移行しましたutil-linux
。これにより微妙な変化が多く発生した。
Debian 10 のデフォルト設定を使用すると、複数のユーザーが root アクセスを持つことができ、必要に応じて root 権限を使用する際に独自の個人設定が適用されます。ただし、結果としてsu
or を使用すると、sudo -s
環境変数が不完全に変更されます。たとえば、rwb
一般使用から一般使用に変換した後でも、環境変数の値はそのまま残ります。root
su
USER
rwb
一部のプログラムとスクリプトはこの変数を使用してユーザーを識別します。
したがって、そこにあるファイルを見ると、cronジョブ定義が実際にではなくに/var/spool/cron/crontabs
あることがわかります。実際には、まだルートではないプライベートcrontabファイルを編集しました。/var/spool/cron/crontabs/rwb
/var/spool/cron/crontabs/root
「完全にルートになった」環境変数を完全に再初期化するには、su -
またはを使用する必要がありますsudo -i
。