ntop может дать Вам точно, что Вы просите. Это собирает данные обо всем трафике, текущем через Вашу сеть (и может собрать данные из других сетей, если им настроили устройство для отправки netfow данных в систему).
Это покажет Вам каждый хост в сети, с тем, сколько пропускной способности они использовали. Это позволит Вам выполнить развертку в каждый хост и видеть, какой трафик они генерируют и кого. Это позволит Вам видеть в настоящее время устанавливаемые соединения TCP. Можно в значительной степени заблудиться в течение многих дней, пройдя данные, которые это может дать Вам.
Программа может быть пожирателем ресурсов памяти, тем не менее, в зависимости от того, как у Вас есть установка опций.
touch
вызовы utimes
системный вызов для установки времени изменения файла и его времени доступа. В некоторых системах, вместо utimes
, это открывает файл и затем устанавливает времена файла через дескриптор, например, с utimensat
в соответствии с Linux.
Вы видите как touch
работы над Вашей системой путем рассмотрения системных вызовов это делает. В соответствии с Linux, используйте strace, например. strace touch -d '1 hour ago' foo
.
Где найти, что исходный код зависит от Вашей операционной системы. Версия GNU находится в coreutils, существует версия в основном исходном дереве любого BSD, существует версия в BusyBox, в Minix, и т.д.
Иногда Вам даже не нужен исходный код. Использовать strace
.
$ strace touch -t 201212121212 foobar
execve("/usr/bin/touch", ["touch", "-t", "201212121212", "foobar"], [/* 61 vars */]) = 0
[...] lots of noise [...]
open("foobar", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0) = 0
close(3) = 0
utimensat(0, NULL, {{1355310720, 0}, {1355310720, 0}}, 0) = 0
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
Почему привет там, utimensat()
.Кем Вы работаете?
$ man utimensat
NAME
utimensat, futimens - change file timestamps with nanosecond precision
Таким образом, существует функция, которая изменяет метки времени файла, и touch
использование это для обновления метки времени файла. И это - то, как это работает внутренне.
Вот то, как это работает над Солярисом. truss
используется вместо strace
который является совершенно другой командой здесь.
Как под Гну/Linux, utimensat
используемый системный вызов.
$ truss -vall -u a.out -f touch -t 1306080000 z
4160: execve("/usr/bin/touch", 0xF0770FC0, 0xF0770FD4) argc = 4
...
4160/1@1: -> main(0x4, 0xf0770fc0, 0xf0770fd4, 0xf0770f7c)
...
4160/1@1: -> atoi_for2(0xf0771131, 0x0, 0x24, 0xebc95be0)
4160/1@1: <- atoi_for2() = 13
4160/1@1: -> atoi_for2(0xf0771133, 0x0, 0x24, 0xebc95be0)
4160/1@1: <- atoi_for2() = 6
4160/1@1: -> atoi_for2(0xf0771135, 0x0, 0x24, 0xebc95be0)
4160/1@1: <- atoi_for2() = 8
4160/1@1: -> atoi_for2(0xf0771137, 0x0, 0x24, 0xebc95be0)
4160/1@1: <- atoi_for2() = 0
4160/1@1: -> atoi_for2(0xf0771139, 0x0, 0x24, 0xebc95be0)
4160/1@1: <- atoi_for2() = 0
4160/1@1: <- parse_time() = 0x51b257e0
4160/1: stat64("z", 0xF0770ED0) = 0
4160/1: d=0x08A00002 i=75783706 m=0100644 l=1 u=100 g=10 sz=0
4160/1: at = Jun 8 01:48:08 CEST 2013 [ 1370648888.022270973 ]
4160/1: mt = Jun 8 01:48:08 CEST 2013 [ 1370648888.022270973 ]
4160/1: ct = Jun 8 01:48:08 CEST 2013 [ 1370648888.022273810 ]
4160/1: bsz=4096 blks=0 fs=tmpfs
4160/1: utimensat(AT_FDCWD, "z", 0xF0770F60, 0) = 0
4160/1: at = Jun 8 00:00:00 CEST 2013 [ 1370642400.000000000 ]
4160/1: mt = Jun 8 00:00:00 CEST 2013 [ 1370642400.000000000 ]
4160/1@1: <- main() = 0
4160/1@1: -> _fini()
4160/1@1: <- _fini() = 0xebcc0140
4160/1: _exit(0)