CentOS 7、ユーザーのcronjobはスクリプトを実行しません

CentOS 7、ユーザーのcronjobはスクリプトを実行しません

私の仮想マシンにCentOS 7.6があります。いくつかのbashスクリプトがあり、/optこのユーザーとしてそれを実行する必要がありますdbuser。これらのスクリプトは出力をフォルダに書き込みます。これを使ってcrontabにcrontab -e入れて毎分実行するようにしました。dbuser

* * * * * /opt/share/scripts/Connections
* * * * * /opt/share/scripts/Memory
* * * * * /opt/share/scripts/Regular

出力フォルダを確認すると、毎分変更されません。スクリプトを手動で実行すると、問題なく実行され、出力が正しく更新されます。
このスクリプトのすべてのディレクトリとサブディレクトリを確認しましたが、両方に完全なx権限があります。
これは/var/log/cron、コマンドが実行され、エラーがないことを意味します。変更するたびに
サービスも再起動します。私も次のことを試しました:crond

 * * * * * /usr/bin/bash /opt/share/scripts/Connections
 * * * * * /usr/bin/sh /opt/share/scripts/Connections
 * * * * * dbuser /opt/share/scripts/Connections

まだ出力フォルダに更新がありません(このコマンドは手動で正しく機能します)。
最後に、root crontabにこれを追加し、エラーなしでうまく機能し、出力ファイルを更新しました。

* * * * * /usr/sbin/runuser -l dbuser -c '/opt/share/scripts/Connections'  

各ユーザーのcrontabをrootに追加することはできません。私は彼らが自分のcrontabにいることを願っています。なぜこれが起こり、どのように解決できますか?

修正する
dbuserスクリプトは、ユーザーに書き込み権限がある場所に書き込みます。私はそれをテストしました。
ユーザーはデータベースユーザーなので、スクリプトにデータベースコマンドへのパスがあります。
DB2PATH=/home/$username/sqllib/bin/db2
これをcronjobが使用するパスに追加する必要がありますか?
いいえ、メールは送信しません。後で参照できるようにデータベース状態レポートを生成します。

ベストアンサー1

ステートメントを通じてユーザーを定義しますsu -。私は元のユーザースクリプトと同じ問題に遭遇しました。これは私にとって効果的でした。

* * * * *   root    su - <username> -c "bash <script to run>"

おすすめ記事