これがWordPress Stackexchangeに属するのか、それともここに属するのかわかりません。私のコードの最後の行はWordPressに固有のものではないようです。
Cronを使用して毎週実行する.shファイルには、次のコードがあります。
このコードは私のすべてのサイトを通過し、そのサイトがWordPressであることを確認し、そうであればwp.cliを実行してWordPress、プラグイン、テーマを更新します。
スクリプトの出力をファイルに記録し、そのファイルを私に電子メールで送信します。
コマンドラインから手動で実行すると正常に動作します。 cronを介して次のコマンドを手動で実行しました。
sh /home/update_all_wp_sites.sh > /dev/null 2>&1
cronを介してこのコマンドを実行すると、wp.cliコマンドは実行されず、末尾のsendmail行も実行されません。
私のログファイルはまだ毎週作成され、実行中のサイトを識別する私の説明に追加され続けているので、cronは大丈夫で、スクリプトがcronを介して実行されていることを知っています。手動で実行した場合と同様に、wp.cliコマンドの出力を追加しません。
最初はteeの問題かもしれないと思いましたが、最後のsendmail行ではteeを使用しません。
#!/bin/bash
cd /home
cat /dev/null > update_all_wp_sites.log
echo "AC2" | tee -a update_all_wp_sites.log
echo '----------------' | tee -a update_all_wp_sites.log
for user in * ; do
for d in $user/public_html ; do
count_file=`ls -1 $d/wp-config.php 2>/dev/null | wc -l`
if [ "$count_file" != "0" ]
then
echo '----------------' | tee -a update_all_wp_sites.log
echo $user | tee -a update_all_wp_sites.log
echo '----------------' | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp core update --path=/home/$d | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp plugin update --all --path=/home/$d | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp language core update --path=/home/$d | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp theme update --all --path=/home/$d | tee -a update_all_wp_sites.log
fi
done
for d2 in $user/domains/*/public_html ; do
count_file=`ls -1 $d2/wp-config.php 2>/dev/null | wc -l`
if [ "$count_file" != "0" ]
then
echo '----------------' | tee -a update_all_wp_sites.log
echo $user | tee -a update_all_wp_sites.log
echo '----------------' | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp core update --path=/home/$d | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp plugin update --all --path=/home/$d | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp language core update --path=/home/$d | tee -a update_all_wp_sites.log
sudo -u $user -i -- /opt/rh/rh-php70/root/usr/bin/php /usr/local/bin/wp theme update --all --path=/home/$d | tee -a update_all_wp_sites.log
fi
done
done
echo -e "Subject: AC2 WP Updates Log" | sendmail -v [email protected] < update_all_wp_sites.log
ありがとう
注:私は誰かが要求した場合に備えて古いサーバーとしてrh-php70を使用していますが、PHP 7.4をインストールできません。
アップデート:サーバー管理コンソールでcronを実行すると、次のようになります。
sudo: sorry, you must have a tty to run sudo
sudo: sorry, you must have a tty to run sudo
sudo: sorry, you must have a tty to run sudo
sudo: sorry, you must have a tty to run sudo
Mail Delivery Status Report will be mailed to <root>
答え1
根本原因はアップデートで報告された問題です。
sudo: sorry, you must have a tty to run sudo
次の投稿によると、/etc/sudoersでDefaults requirettyをコメントアウトしていました。