我使用从 udev 规则调用的以下脚本来自动执行备份:
#!/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/gauthier/.Xauthority
# ... other things like offering abort, checking the device, mounting.
export OUTPUT=/tmp/rsync-output.log
# -a does not work on exFAT partitions, because of permissions, groups, owner. Use -rltD instead of -rlptgoD, which -a would imply.
sudo rsync -rltDv --exclude '*.app' --exclude-from=/home/gauthier/rsync-exclude.txt /home/gauthier/ $MOUNTPOINT/gauthier/ > $OUTPUT 2>&1
# Pop up a result window
# Get a summary
export RESULT_MESSAGE=/tmp/rsync-result.txt
echo "Backup result:" > $RESULT_MESSAGE
echo "" >> $RESULT_MESSAGE # \n does not seem to work in echo strings
tail -3 $OUTPUT >> $RESULT_MESSAGE
echo "" >> $RESULT_MESSAGE
echo "" >> $RESULT_MESSAGE
echo "Details in $OUTPUT" >> $RESULT_MESSAGE
xmessage -file $RESULT_MESSAGE
结果窗口(最后一行)的弹出不起作用。不仅窗口不出现,之后的命令也不会执行。
什么可能导致 xmessage 冻结,我该如何解决?我确信有更好的方法来格式化消息,我也很高兴对此有深入的了解。
当我尝试在文件上运行 xmessage 时,是否仍然可以echo
处理该文件?>>
当我将它们(带有换行符)粘贴到终端中时,8 行工作正常,但我猜由于出现提示,时间可能会有所不同。另外,当我手动运行它时,我不是超级用户。不是echo
应该>>
在进入下一个命令之前完成吗?
答案1
xmessage
已过时且不再维护:它不支持 UTF-8 等。您应该gxmessage
改为(基于 GTK+ 的 xmessage 克隆)。