Если это - Linux, это устанавливает ПРОГРАММУ UUDECODE на одну форму вызова команды uudecode
, в противном случае другой. Это не стандартно, поэтому как звонить, это варьируется. Не очень умный, если Вы спрашиваете меня.
Запуск строки cat $0
делает реальную работу. $0
название рабочего процесса, т.е. текущего сценария. Снова, будет главным образом работать, но может дурачиться.
Содержание сценария передается по каналу к awk
сценарий, который копирует весь текст после DATA BEGINS HERE
к его выводу, который передается по каналу к uudecode
(набор команд прежде). uudecode
берет текст и делает двоичный файл из него (пара uuencode
/uudecode
где используется поставить двоичные файлы вокруг как текст, прежде чем HTTP и другие стали популярными), результат передается по каналу к команде в' ()', который сначала изменяется в /usr/local/bin
и затем распаковывает вход с tar
там. --unlink
сначала удаляет любой существующий файл.
Куда это прибывает из?!
Когда серверный процесс запускается, он выполняет некоторые системные вызовы(socket()
и listen()
). Затем система открывает порт и создает дескриптор файла сокета, с которым взаимодействует процесс.Вы можете увидеть это с помощью:
Найдите идентификатор главного процесса Apache:
root@frisbee:~# ps -ef | grep apache | grep root
root 27440 1 0 16:06 ? 00:00:00 /usr/sbin/apache2 -k start
Перейдите к /proc/$pid/fd
и просмотрите розетки:
root@frisbee:~# ls -l /proc/27440/fd | grep socket
lrwx------ 1 root root 64 apr 16 16:12 3 -> socket:[518486]
lrwx------ 1 root root 64 apr 16 16:12 4 -> socket:[518487]
Здесь вы можете видеть, что Apache открывает два сокета. Внутренний процесс Apache может использовать файловые дескрипторы 3 и 4 для чтения/записи данных через сетевое соединение.
Вы можете найти сопоставление между сокетами и прослушиваемыми портами с помощьюlsof
:
root@frisbee:~# lsof | egrep 'IPv6.*(518486|518487)'
apache2 27440 root 4u IPv6 518487 0t0 TCP *:http (LISTEN)
apache2 27445 www-data 4u IPv6 518487 0t0 TCP *:http (LISTEN)
apache2 27446 www-data 4u IPv6 518487 0t0 TCP *:http (LISTEN)
apache2 27447 www-data 4u IPv6 518487 0t0 TCP *:http (LISTEN)
apache2 27448 www-data 4u IPv6 518487 0t0 TCP *:http (LISTEN)
apache2 27449 www-data 4u IPv6 518487 0t0 TCP *:http (LISTEN)
Существует несколько процессов Apache, использующих один и тот же файловый дескриптор (, открытый процессом, работающим как root
, поскольку это привилегированный порт ). Это рабочие Apache.
Более простой способ просмотреть связь между портом и процессом — использовать команду netstat
:
mtak@frisbee:~$ sudo netstat -tulpn | grep apache
tcp6 0 0 :::80 :::* LISTEN 4269/apache2