表示するには、コマンドプロセス(通常は更新)が必要です。庭また、指定したログファイル設定にすべての出力を記録します。これは私のものです。
apt-get update | yad --width=400 --height=300 \
--title="Updating debian package list ..." --progress \
--pulsate --text="Updating debian package list ..." \
--auto-kill --auto-close \
--percentage=10
上記のコマンドはプロセスのハートビートインジケータを生成し、完了すると閉じますが、試行したすべての出力を記録する必要があります。
apt-get update >>${logfile} 2>&1 | yad --width=400 --height=300 \
--title="Updating debian package list ..." --progress \
--pulsate --text="Updating debian package list ..." \
--auto-kill --auto-close \
--percentage=10
ただし、これによりエラーが発生し、ダイアログボックスやロギングなしで中断され、停止します。これはエラーです。
GLib-CRITICAL **: g_source_remove: assertion `tag > 0' failed
助けてくれてありがとう
答え1
エラーは、すべての出力を次にリダイレクトするため、処理する出力がないため$logfile
に発生します。yad
あなたが探しているツールは次のとおりですtee
。
NAME
tee - read from standard input and write to standard output and files
SYNOPSIS
tee [OPTION]... [FILE]...
DESCRIPTION
Copy standard input to each FILE, and also to standard output.
したがって、次のようにすることができます。
apt-get update 2>&1 | tee -a ${logfile} |
yad --width=400 --height=300 \
--title="Updating debian package list ..." --progress \
--pulsate --text="Updating debian package list ..." \
--auto-kill --auto-close \
--percentage=10
答え2
もう1つの可能性は、出力をapt-get
ログファイルとして指定し、このプロセスをバックグラウンドで実行し、次をyad
使用してそのログファイルの増分を進行状況バーのあるウィンドウに「サイフォン」することですtail -f
。
apt-get update > "$logfile" & tail -f "$logfile" | yad --width=400 --height=300 \
--title="Updating debian package list ..." --progress \
--pulsate --text="Updating debian package list ..." \
--auto-kill --auto-close \
--percentage=10