use*_*970 1 cron centos error-handling hosting-services wordpress
我有以下命令集用于更新我的托管服务提供商平台上 CentOs 共享托管分区中的所有 WordPress 站点(通过每日 cron)。
集合中的wp
命令pushd-popd
属于WP-CLI程序,它是一个 Bash 扩展,用于 WordPress 网站上的各种 shell 级操作。
for dir in public_html/*/; do
if pushd "$dir"; then
wp plugin update --all
wp core update
wp language core update
wp theme update --all
popd
fi
done
Run Code Online (Sandbox Code Playgroud)
目录public_html
是所有网站目录所在的目录(每个网站通常都有一个数据库和一个主文件目录)。
鉴于public_html
有一些不是WordPress 网站目录的目录,WP-CLI 会返回有关它们的错误。
为了防止这些错误,我假设我可以这样做:
for dir in public_html/*/; do
if pushd "$dir"; then
wp plugin update --all 2>myErrors.txt
wp core update 2>myErrors.txt
wp language core update 2>myErrors.txt
wp theme update --all 2>myErrors.txt
popd
fi
done
Run Code Online (Sandbox Code Playgroud)
而不是写2>myErrors.txt
四次(或更多),有没有办法确保来自每个命令的所有错误都将进入同一文件,在一行中?
该> file
操作员打开file
写但最初会将其截断。这意味着每个新> file
都会导致文件内容被替换。
如果您希望myErrors.txt
包含所有命令的错误,您需要只打开该文件一次,或者使用>
第一次和>>
其他时间(以追加模式打开文件)。
在这里,如果您不介意pushd
/popd
错误也转到日志文件,您可以重定向整个for
循环:
for dir in public_html/*/; do
if pushd "$dir"; then
wp plugin update --all
wp core update
wp language core update
wp theme update --all
popd
fi
done 2>myErrors.txt
Run Code Online (Sandbox Code Playgroud)
或者,例如,您可以在 2、3 以上的 fd 上打开日志文件,并对要重定向到日志文件的每个命令或命令组使用2>&3
(或2>&3 3>&-
以免用它们不需要的 fd污染命令) :
for dir in public_html/*/; do
if pushd "$dir"; then
{
wp plugin update --all
wp core update
wp language core update
wp theme update --all
} 2>&3 3>&-
popd
fi
done 3>myErrors.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56 次 |
最近记录: |