0

I have a sample script test.php.

<?php

sleep(60);

?>

If I run ps aux | grep php it shows:

myuser 12539  0.0  0.0 164404 17872 pts/2    S+   19:11   0:00 php test.php

Then if I run lsof -p 12539, test.php doesn't appear. Only php extensions, stdin/out/err, the working directory. Nothing related to the running script.

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
php     10496 myuser  cwd    DIR  253,1     4096 29887749 /home/myuser/Code/
php     10496 myuser  rtd    DIR  253,1     4096        2 /
php     10496 myuser  txt    REG  253,1  4406120 24788702 /usr/bin/php7.0
php     10496 myuser  mem    REG  253,1    84032 27005552 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0
php     10496 myuser  mem    REG  253,1  1155768 27005536 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1
php     10496 myuser  mem    REG  253,1   247952 24781721 /usr/lib/x86_64-linux-gnu/libxslt.so.1.1.29
php     10496 myuser  mem    REG  253,1    87912 24780835 /usr/lib/x86_64-linux-gnu/libexslt.so.0.8.17
php     10496 myuser  mem    REG  253,1    34920 24788712 /usr/lib/php/20151012/xsl.so
php     10496 myuser  mem    REG  253,1    47208 24788711 /usr/lib/php/20151012/xmlwriter.so
php     10496 myuser  mem    REG  253,1    34920 24788710 /usr/lib/php/20151012/xmlreader.so
php     10496 myuser  mem    REG  253,1    34920 24788708 /usr/lib/php/20151012/wddx.so
php     10496 myuser  mem    REG  253,1    18536 24786766 /usr/lib/php/20151012/tokenizer.so
php     10496 myuser  mem    REG  253,1    14440 24786765 /usr/lib/php/20151012/sysvshm.so
php     10496 myuser  mem    REG  253,1    10344 24786245 /usr/lib/php/20151012/sysvsem.so
php     10496 myuser  mem    REG  253,1    18536 24786244 /usr/lib/php/20151012/sysvmsg.so
php     10496 myuser  mem    REG  253,1    88168 24784276 /usr/lib/php/20151012/sockets.so
php     10496 myuser  mem    REG  253,1    55704 24788707 /usr/lib/php/20151012/simplexml.so
php     10496 myuser  mem    REG  253,1    14440 24784275 /usr/lib/php/20151012/shmop.so
php     10496 myuser  mem    REG  253,1   170784 27005583 /lib/x86_64-linux-gnu/libtinfo.so.5.9
php     10496 myuser  mem    REG  253,1   208080 24780797 /usr/lib/x86_64-linux-gnu/libedit.so.2.0.56
php     10496 myuser  mem    REG  253,1    30824 24788697 /usr/lib/php/20151012/readline.so
php     10496 myuser  mem    REG  253,1    35112 24784189 /usr/lib/php/20151012/posix.so
php     10496 myuser  mem    REG  253,1   281104 24781735 /usr/lib/php/20151012/phar.so
php     10496 myuser  mem    REG  253,1  1476192 24788722 /usr/lib/php/20151012/mbstring.so
php     10496 myuser  mem    REG  253,1    39016 24788689 /usr/lib/php/20151012/json.so
php     10496 myuser  mem    REG  253,1    43144 24780924 /usr/lib/php/20151012/iconv.so
php     10496 myuser  mem    REG  253,1    14440 24780923 /usr/lib/php/20151012/gettext.so
php     10496 myuser  mem    REG  253,1    59496 24780922 /usr/lib/php/20151012/ftp.so
php     10496 myuser  mem    REG  253,1  3164680 24775333 /usr/lib/php/20151012/fileinfo.so
php     10496 myuser  mem    REG  253,1    63592 24775332 /usr/lib/php/20151012/exif.so
php     10496 myuser  mem    REG  253,1   190648 24788706 /usr/lib/php/20151012/dom.so
php     10496 myuser  mem    REG  253,1    14440 24775331 /usr/lib/php/20151012/ctype.so
php     10496 myuser  mem    REG  253,1    36048 24775330 /usr/lib/php/20151012/calendar.so
php     10496 myuser  mem    REG  253,1    51680 24788709 /usr/lib/php/20151012/xml.so
php     10496 myuser  mem    REG  253,1   113048 24780925 /usr/lib/php/20151012/pdo.so
php     10496 myuser  mem    REG  253,1   199448 24788693 /usr/lib/php/20151012/opcache.so
php     10496 myuser  mem    REG  253,1 10281936 24779426 /usr/lib/locale/locale-archive
php     10496 myuser  mem    REG  253,1    96616 27000848 /lib/x86_64-linux-gnu/libgcc_s.so.1
php     10496 myuser  mem    REG  253,1  1594832 24775317 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
php     10496 myuser  mem    REG  253,1 26904264 24781105 /usr/lib/x86_64-linux-gnu/libicudata.so.60.2
php     10496 myuser  mem    REG  253,1   153984 27005571 /lib/x86_64-linux-gnu/liblzma.so.5.2.2
php     10496 myuser  mem    REG  253,1  1792008 24781115 /usr/lib/x86_64-linux-gnu/libicuuc.so.60.2
php     10496 myuser  mem    REG  253,1   144976 27005644 /lib/x86_64-linux-gnu/libpthread-2.27.so
php     10496 myuser  mem    REG  253,1  2030544 27005511 /lib/x86_64-linux-gnu/libc-2.27.so
php     10496 myuser  mem    REG  253,1  2575848 24782137 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
php     10496 myuser  mem    REG  253,1   433760 24782138 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
php     10496 myuser  mem    REG  253,1  1834232 24785278 /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.4
php     10496 myuser  mem    REG  253,1    14560 27005534 /lib/x86_64-linux-gnu/libdl-2.27.so
php     10496 myuser  mem    REG  253,1  1700792 27005574 /lib/x86_64-linux-gnu/libm-2.27.so
php     10496 myuser  mem    REG  253,1   465096 27000908 /lib/x86_64-linux-gnu/libpcre.so.3.13.3
php     10496 myuser  mem    REG  253,1   116960 27005683 /lib/x86_64-linux-gnu/libz.so.1.2.11
php     10496 myuser  mem    REG  253,1   101168 27005650 /lib/x86_64-linux-gnu/libresolv-2.27.so
php     10496 myuser  mem    REG  253,1   170960 27005483 /lib/x86_64-linux-gnu/ld-2.27.so
php     10496 myuser    0u   CHR  136,2      0t0        5 /dev/pts/2
php     10496 myuser    1u   CHR  136,2      0t0        5 /dev/pts/2
php     10496 myuser    2u   CHR  136,2      0t0        5 /dev/pts/2

How can you get the exact file descriptor for the running script? Am I missing something on php's execution lifecycle?

  • 1
    Scripts don't run, script _interpreters_ run. Once PHP has finished parsing the script there's no reason to keep the file handle open. Why do you need this information anyway? – Sammitch Dec 12 '18 at 23:44
  • Also, if you want a better idea of what _any_ process is doing there's always [`strace`](https://linux.die.net/man/1/strace). – Sammitch Dec 12 '18 at 23:46
  • We have a script that runs on an infinite loop and should be manually restarted during deployment. Wanted to check if this step had been performed. Upon deployment, the symlink pointing to the code gets redirected to the new code. Wanted to check if the process was running the newer file or still the older one. Thanks for the `strace` tip. Will try it out. – Nicolás Mercado Dec 13 '18 at 23:45

0 Answers0