我已 chroot 并且驱动器空间不足,因此我重新挂载到主驱动器,该驱动器有足够的空间,但似乎无法将输出的数据重定向到我的空驱动器
[root@localhost rra]# ls /mnt/maindrv/
cacti-0.8.8b cacti-0.8.8b.tar.gz cacti2.tar cactidb
[root@localhost rra]# for i in `ls *.rrd`; do rrdtool dump $i > '/mnt/maindrv/'.$i.'xml'; done
[root@localhost rra]# ls /mnt/maindrv/
cacti-0.8.8b cacti-0.8.8b.tar.gz cacti2.tar cactidb
[root@localhost rra]# df -h /mnt/maindrv/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-home
97G 1.5G 96G 2% /mnt/maindrv
我如何正确地将我的转储输出到/mnt/maindrv/
?
答案1
看来你忽略了一些东西:
for i in `ls *.rrd`; do rrdtool dump $i > '/mnt/maindrv/'.$i.'xml'; done
在某些语言中,.
用于连接变量,但在 Bash 中,它是一个文字点。例如,如果您有一个文件hello.rrd
,则该命令将把转储放入:
/mnt/maindrv/.hello.rrd.xml
由于该文件以点开头,ls /mnt/maindrv/
因此不会列出它,即使它在那里。
另外,你不应该循环,ls *.rrd
而应该简单地循环*.rrd
。这和你的问题无关,但是一种不好的做法。
这应该可以满足您的需要,更清洁、更好:
for i in *.rrd; do rrdtool dump "$i" > "/mnt/maindrv/$i.xml"; done