我有一个案例,我想远程运行bash脚本。该bash脚本打印一些日志。我想在屏幕上只显示几个日志,并将其余日志移到日志文件中。日志文件存在于远程执行bash脚本的主机上。 例如, 我有2台主机A和主机B.主机A上有以下脚本
echo "Executing the script on $(hostname) at $(date)" # <<<< I want this log in log file
echo -n "[Info] Importing docker images from tar files ..." # <<<< I want this log on terminal
for file_path in $tar_file_paths
do
cat ${file_path} | docker import - ${file_path}:${tag}
if [[ $? -ne 0 ]]; then
echo "[Error] Failed to import ${file_path}
exit 1
fi
echo -n "." # <<<< I want this log on terminal
done
echo " [Done]" # <<<< I want this log on terminal
echo "Done with executing the script on $(hostname) at $(date)" # <<<< I want this log in log file
我正在将脚本从主机A传输到主机B并执行它,如下所示,
ssh -i /home/centos/.ssh/id_rsa centos@192.168.235.10:/tmp/test-script.sh
上面的命令再次成为某些脚本的一部分。执行上面的命令后,我想在终端
上执行以下操作[Info] Importing docker images from tar files .................... [Done]
对于脚本中显示的其余日志,我希望它们位于主机A上的某个日志文件中。
我尝试过的一种方法就是在主机B上维护一个临时日志文件,一旦脚本完成,然后将主机B中的临时日志文件的内容附加到主机A上的主日志文件中。在这种情况下,我重定向我不想在终端上显示的日志到临时日志文件。 但是,这有点不适合我的用例。当远程执行发生时,我将使用尾部和主日志文件监视主日志文件,就像挂起一样。
答案 0 :(得分:0)
仅将输出发送到文件:
echo foo >> my.log
将输出发送到文件并同时显示:
echo foo | tee -a my.log
只显示输出:
echo foo