If you run a {bourne, shell, etc.} script with a filename longer than 15 characters, pidof -x will not find the running script. To test, create a file called sleep.pl containing the following: #!/usr/bin/perl sleep 60; Then create two links to this file: ln -s sleep.pl 15xxxxxxxxxxxxx ln -s sleep.pl 16xxxxxxxxxxxxxx Start the first script and look for its pid: ./15xxxxxxxxxxxxx & pidof -x 15xxxxxxxxxxxxx pidof will return the correct pid of the running script. Then do the same with the second script: ./16xxxxxxxxxxxxxx & pidof -x 16xxxxxxxxxxxxxx Now pidof returns nothing. This does not seem to be affected by the script interpreter, length of total path, or any other factors.
*** Bug 14226 has been marked as a duplicate of this bug. ***
It's because it's looking at the /proc/stat field for that process, and the field name for the command line is truncated at 15 characters.
... and since the field name is coming from the kernel, there's very little SysVinit can do about it.