for i in {1..5}; do php phpfiletoexecute.php; done
Это самая дурацкая версия; Имея дополнительную информацию, вы можете делать такие вещи, как проверять успешность каждого запуска, просматривать их результаты, если таковые имеются, и т. д.
Если у вас недавнее ядро (предпочтительно не ниже 4.9, но, по-видимому, некоторые вещи работают на 4.2 ), то вы можете воспользоваться преимуществами новой dtrace возможности, позволяющей перехватывать все tcp connect()
вызывает ядро и показывает идентификатор процесса, удаленный IP-адрес и порт.
Так как опрос не выполняется, вы не пропустите ни одного короткоживущего -соединения. Из блога Брендана Грегга за 2016 год типичный вывод:
# tcpconnect
PID COMM IP SADDR DADDR DPORT
1479 telnet 4 127.0.0.1 127.0.0.1 23
1469 curl 4 10.201.219.236 54.245.105.25 80
1469 curl 4 10.201.219.236 54.67.101.145 80
1991 telnet 6 ::1 ::1 23
2015 ssh 6 fe80::2000:bff:fe82:3ac fe80::2000:bff:fe82:3ac 22
Дополнительные примеры находятся в bcc -tools package source . Встроенные пакеты для установки доступны для нескольких дистрибутивов , или вы можете следовать инструкциям по компиляции.
Вы можете использовать netstat
для отображения трафика tcp/ip вместе с PID и именем процесса, например:
netstat -pt
Чтобы посмотреть в прямом эфире, используйте watch -n
с интервалом, например:
watch -n 2 netstat -pt
Чтобы собирать такую информацию с течением времени, вы можете сохранить и запустить ее как скрипт bash:
sec=1
count=0
end=3600
echo > output.txt
while [ $count -lt $end ]; do
netstat -pt | sed -e '1,2d' >> output.txt
sleep $sec
count=$((count+1))
done
Это будет запускать netstat -pt
каждую секунду в течение часа и направлять результаты в output.txt
. Затем вы можете использовать:
awk '{ print $7 "\t" $5 }' output.txt
, чтобы красиво напечатать отформатированное имя PID/процесса _и протокол веб-сайта :, разделенные табуляцией для каждой собранной строки.
На сетевом уровне, где tcpdump
видит пакеты, подключение к пользовательскому процессу недоступно. Инструмент ss
имеет опцию -p
для отображения списка процессов, связанных с сетевым подключением. Поскольку ss
показывает информацию только в определенный момент времени, вам придется запускать ее часто, и вы все равно можете потерять информацию о коротких соединениях.
Чтобы узнать, что было передано, вы можете запустить tcpdump
и захватить все, позже вы можете отфильтровать захваченные пакеты по номерам локальных портов, которые вы получили из ss
.
Это не даст вам прямой информации об используемых DNS-именах, поскольку подключения всегда осуществляются к IP-адресам. Но вы можете выполнить поиск DNS-запросов в захвате вашей сети, которые отвечают с IP-адресом используемого позже соединения, это позволит вам узнать используемые DNS-имена, если нет запросов на разные DNS-имена, которые используют один и тот же IP-адрес.
Если вы действительно хотите знать, что делает процесс, используйте strace
. Вы увидите DNS-имена, отправленные распознавателю, а также все, что передается, даже для кратковременных соединений.