Ich habe das Suchverzeichnis getestet, das maximal Inodes benötigt, und während des Testens war ich ausgeführt worden
touch test_{1..1391803}.txt
Aber es gibt mir einen Fehler "-bash: /usr/bin/touch: Argument list too long"
, jetzt laufe ich unter dem Befehl, aber es scheint, dass es Hugh Zeit brauchen wird
ruby -e '1.upto(1391803) { |n| %x( touch "test_#{n}.txt" ) }'
Die Frage ist also: Gibt es eine Möglichkeit, mehrere Dateien in kurzer Zeit zu erstellen? sollte ich 1 lac-Dateien pro Schleife berühren oder auf eine bessere Weise?
Testergebnis :
Nr. 1
[root@dc1 inode_test]# time seq 343409 | xargs touch
real 0m7.760s
user 0m0.525s
sys 0m4.385s
Nr. 2
[root@test-server inode_test]# time echo 'for (i=1;i<=343409;i++) i' | bc | xargs touch
real 0m8.781s
user 0m0.722s
sys 0m4.997s
Nr. 3
[root@test-server inode_test]# time printf '%s ' {1..343409} | xargs touch
real 0m8.913s
user 0m1.144s
sys 0m4.541s
Nummer 4
[root@test-server inode_test]# time awk 'BEGIN {for (i=1; i<=343409; i++) {printf "" >> i; close(i)}}'
real 0m12.185s
user 0m2.005s
sys 0m6.057s
Nr. 5
[root@test-server inode_test]# time ruby -e '1.upto(343409) { |n| File.open("#{n}", "w") {} }'
real 0m12.650s
user 0m3.017s
sys 0m4.878s
touch
sondern für denexecve()
Systemaufruf (für die kumulative Größe der Argumente und Umgebungsvariablen, die an diesen Aufruf übergeben wurden).