Vor kurzem habe ich verwendet mv
, um eine große Menge von Dateien von meiner Festplatte auf ein Flash-Laufwerk zu verschieben. Ich habe vergessen, eine ausführliche Flagge hinzuzufügen, damit ich keine Ahnung hatte, "wo" der Umzug war und wie viele Transfers noch übrig waren.
Ich fand das strace
Dienstprogramm und entschied mich, es für meinen MV-Prozess zu verwenden. Mit Hilfe von konnte ps -ef | grep mv
ich die PID des Prozesses finden und lief dann strace -p [PID]
. Hier ist ein Beispiel von dem, was ich bekommen habe:
write(4, "\325\0\0s\1\1\224\0\0\0\0\0109\27\0\0\201\327\0\0\240H:\310xgM\337\274\26\"\273"..., 32768) = 32768
read(3, "\6\3319H\r\207\345\257\301JL)\2601C\t\303\22(\214\353\211\230;{\6\214\355nh@F"..., 32768) = 32768
write(4, "\6\3319H\r\207\345\257\301JL)\2601C\t\303\22(\214\353\211\230;{\6\214\355nh@F"..., 32768) = 32768
read(3, "ZK\301\332\263\214@\177\3352$\374\277];\255\265\364\240d\275\307P\237*\364\23\206\31\306\244\256"..., 32768) = 32768
write(4, "ZK\301\332\263\214@\177\3352$\374\277];\255\265\364\240d\275\307P\237*\364\23\206\31\306\244\256"..., 32768) = 32768
read(3, ".\341\355\32\366\7\365\244\4\4\221{c,$\246]\204\342\261\"\374K\234\264\17\26\346\246\327\347m"..., 32768) = 32768
und dann einige:
fcntl(3, F_GETFD) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(3, F_GETFL) = 0x38800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW)
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fcntl(3, F_DUPFD, 3) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
getdents64(3, /* 4 entries */, 32768) = 120
getdents64(3, /* 0 entries */, 32768) = 0
close(3) = 0
newfstatat(4, "The Pick of Destiny", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
openat(4, "The Pick of Destiny", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_DIRECTORY|O_NOFOLLOW) = 3
fcntl(3, F_GETFD) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(3, F_GETFL) = 0x38800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_NOFOLLOW)
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
fcntl(3, F_DUPFD, 3) = 5
fcntl(5, F_GETFD) = 0
fcntl(5, F_SETFD, FD_CLOEXEC) = 0
getdents64(3, /* 22 entries */, 32768) = 1008
getdents64(3, /* 0 entries */, 32768) = 0
close(3) = 0
Also, was genau gibt mir Strace? Sind das Kernel-Aufrufe? Wenn ja, was meinen sie (ich weiß, was Lesen und Schreiben tun, aber was sind diese Zahlen)?
Bonusfrage: Gibt es eine Möglichkeit für mich, etwas "Niedrigeres" als das zu sehen, was mir die Spannung zeigt? CPU-Aufrufe vielleicht?
lsof -p <pid>
, die Ihnen geöffnete Dateien und Zuordnungen eines Prozesses zeigt.